הגדרת חנות קרובה לפי מיקום עבור 1C-Bitrix

יישום גיאולוקציה בחנות מסחר אלקטרוני מבוססת Bitrix הוא אתגר שכל קמעונאי עם רשת חנויות פיזית מתמודד איתו. הגדרנו פונקציונליות זו עבור רשתות עם 5 עד 150 חנויות. מאמר זה מכסה פתרון מוכן: כיצד לגרום ל-Bitrix שלך להציג לקונה את החנות הקרובה עם מלאי אמיתי.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת חנות קרובה לפי מיקום עבור 1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1455
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    879
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1162

הטמעת גיאולוקציה בחנות מסחר אלקטרוני של Bitrix היא אתגר שכל קמעונאי עם רשת חנויות פיזית נתקל בו. הגדרנו פונקציונליות זו עבור רשתות עם 5 עד 150 חנויות. מאמר זה מכסה פתרון מוכן: כיצד לגרום ל-Bitrix שלך להציג לקונה את החנות הקרובה ביותר עם מלאי אמיתי.

בעיה אופיינית: משתמש מבקר באתר, רואה מוצר, אך לא יודע אם הוא זמין בחנות סמוכה. הם מתחילים לחפש כתובות, מתקשרים, מבזבזים זמן. האינטגרציה שלנו פותרת זאת תוך שניות: גישה לגיאולוקציה, בקשת שרת, הצגת הנקודה הקרובה והמלאי. חיסכון בזמן למשתמש—עד 40%, המרה לביקורים פיזיים עולה ב-15–25%.

אחסון כתובות חנות

ב-Bitrix, חנויות (מחסנים/נקודות מכירה) מאוחסנות בטבלת b_catalog_store (מודול catalog). לכל חנות יש שדות: TITLE, ADDRESS, PHONE, SCHEDULE, GPS_N (קו רוחב), GPS_S (קו אורך), ACTIVE. אם GPS_N/GPS_S ריקים, יש לבצע גיאוקודינג לכתובות (באמצעות Yandex או Google API) ולשמור את הקואורדינטות. עבור רשת של 50 חנויות, זה לוקח כשעתיים—פעם אחת ולתמיד.

הוסף קואורדינטות פרוגרמטית:

\Bitrix\Catalog\StoreTable::update($storeId, [ 'GPS_N' => 53.9045, // широта 'GPS_S' => 27.5615, // долгота ]); 

כיצד פועל זיהוי החנות הקרובה

נוסחת האוורסין היא התקן לחישוב מרחק בין שתי נקודות על כדור. אנו משתמשים ב-SQL ישיר עם מיון או ביישום PHP דרך ORM. הראשון מהיר פי 10 עבור מסדי נתונים עם 50+ חנויות (עובד ב-0.001 שניות), השני גמיש יותר לאינטגרציה עם רכיבי Bitrix. שתי האפשרויות מובאות להלן.

שאילתת SQL עם מיון לפי מרחק (MySQL/PostgreSQL):
SELECT id, title, address, gps_n, gps_s, (6371 * acos( cos(radians(:lat)) * cos(radians(gps_n)) * cos(radians(gps_s) - radians(:lng)) + sin(radians(:lat)) * sin(radians(gps_n)) )) AS distance FROM b_catalog_store WHERE active = 'Y' AND gps_n IS NOT NULL ORDER BY distance ASC LIMIT 5; 
יישום PHP דרך Bitrix ORM (ללא SQL ישיר):
function haversineDistance( float $lat1, float $lon1, float $lat2, float $lon2 ): float { $R = 6371; // км $dLat = deg2rad($lat2 - $lat1); $dLon = deg2rad($lon2 - $lon1); $a = sin($dLat/2)**2 + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2)**2; return $R * 2 * atan2(sqrt($a), sqrt(1-$a)); } $stores = \Bitrix\Catalog\StoreTable::getList([ 'filter' => ['=ACTIVE' => 'Y', '!=GPS_N' => false], 'select' => ['ID', 'TITLE', 'ADDRESS', 'GPS_N', 'GPS_S', 'SCHEDULE', 'PHONE'], ])->fetchAll(); usort($stores, function($a, $b) use ($userLat, $userLng) { $dA = haversineDistance($userLat, $userLng, $a['GPS_N'], $a['GPS_S']); $dB = haversineDistance($userLat, $userLng, $b['GPS_N'], $b['GPS_S']); return $dA <=> $dB; }); $nearest = array_slice($stores, 0, 3); 

מה לבחור: SQL או PHP?

קריטריון שאילתת SQL מיון PHP
מהירות (50 חנויות) 0.001 שניות 0.01 שניות
תלות במסד נתונים MySQL/PostgreSQL בלבד כל מסד (ORM)
גמישות תצורה נמוכה (שאילתה קבועה) גבוהה (ניתן לסנן כל שדה)
תמיכה במטמון באמצעות מטמון מתויג של Bitrix באמצעות מטמון מתויג של Bitrix

עבור פרויקטים עם קטלוג גדול (50+ חנויות), פתרון ה-SQL נותן יתרון מהירות פי 10—מורגש במכשירים ניידים. אם יש צורך בסינון נוסף (למשל, לפי סוג חנות או שעות פעילות), השתמשו ב-PHP.

נקודת קצה AJAX לפרונטאנד

// /local/ajax/nearest-store.php $lat = (float)$_POST['lat']; $lng = (float)$_POST['lng']; // ... выборка и сортировка ... header('Content-Type: application/json'); echo json_encode([ 'nearest' => [ 'id' => $nearest[0]['ID'], 'title' => $nearest[0]['TITLE'], 'address' => $nearest[0]['ADDRESS'], 'distance' => round($dist, 1), 'schedule' => $nearest[0]['SCHEDULE'], 'phone' => $nearest[0]['PHONE'], ], ]); 

הצגת מלאי בחנות הקרובה

לאחר קביעת החנות, ניתן להציג כמות מלאי עבור אותה נקודה ישירות בכרטיס המוצר. נתונים מ-\Bitrix\Catalog\StoreTable::update($storeId, [ 'GPS_N' => 53.9045, // широта 'GPS_S' => 27.5615, // долгота ]); :

$stock = \Bitrix\Catalog\StoreProductTable::getList([ 'filter' => [ '=PRODUCT_ID' => $productId, '=STORE_ID' => $nearestStoreId, ], 'select' => ['AMOUNT'], ])->fetch(); $inStock = $stock && $stock['AMOUNT'] > 0; 

UI ו-UX

ממשק טיפוסי: בלוק צף בכותרת "החנות הקרובה: [שם], [מרחק] ק"מ" או ווידג'ט בעמוד המוצר "זמינות בחנויות". כפתור "זיהוי" מפעיל את בקשת הגיאולוקציה. אם המשתמש מסרב לגישה, מציגים רשימת חנויות עם חיפוש כתובות. למפה מלאה, חברו את Yandex.Maps JS API או Google Maps API והציבו סמנים לכל הנקודות.

בנוסף: ניתן ליישם זיהוי חנות אוטומטי לפי IP (באמצעות שירות Sypex Geo)—זה עובד אם המשתמש לא העניק גישת גיאולוקציה. דיוק—עד 50 ק"מ, אך מספיק לערים גדולות. זהו הפתרון שלנו זיהוי עיר לפי IP Bitrix.

שלבי יישום

  1. ביקורת חנויות נוכחיות—בדיקת אוכלוסיית קואורדינטות GPS.
  2. גיאוקודינג—קביעה אוטומטית של קואורדינטות לחנויות ללא GPS_N/GPS_S.
  3. יצירת נקודת קצה AJAX—שליפת חנויות קרובות עם מלאי.
  4. פיתוח ווידג'ט—בלוק בעמוד המוצר או בכותרת.
  5. אינטגרציה עם מפה (אופציונלי)—Yandex.Maps או Google Maps.
  6. בדיקות ומטמון—הגדרת מטמון מתויג לביצועים מהירים.
  7. תיעוד ומסירה—תיאור API מפורט והגדרות.

כיצד לקבל קואורדינטות אם GPS_N/GPS_S ריקים

השתמשו ב-Yandex Geocoding API (חינם 25,000 בקשות/יום) או ב-Google Maps Geocoding API. עבור Bitrix, ניתן לכתוב סוכן שממלא מדי יום קואורדינטות לחנויות ריקות. דוגמת בקשה: SELECT id, title, address, gps_n, gps_s, (6371 * acos( cos(radians(:lat)) * cos(radians(gps_n)) * cos(radians(gps_s) - radians(:lng)) + sin(radians(:lat)) * sin(radians(gps_n)) )) AS distance FROM b_catalog_store WHERE active = 'Y' AND gps_n IS NOT NULL ORDER BY distance ASC LIMIT 5; . שמרו את הקואורדינטות שהתקבלו באמצעות function haversineDistance( float $lat1, float $lon1, float $lat2, float $lon2 ): float { $R = 6371; // км $dLat = deg2rad($lat2 - $lat1); $dLon = deg2rad($lon2 - $lon1); $a = sin($dLat/2)**2 + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2)**2; return $R * 2 * atan2(sqrt($a), sqrt(1-$a)); } $stores = \Bitrix\Catalog\StoreTable::getList([ 'filter' => ['=ACTIVE' => 'Y', '!=GPS_N' => false], 'select' => ['ID', 'TITLE', 'ADDRESS', 'GPS_N', 'GPS_S', 'SCHEDULE', 'PHONE'], ])->fetchAll(); usort($stores, function($a, $b) use ($userLat, $userLng) { $dA = haversineDistance($userLat, $userLng, $a['GPS_N'], $a['GPS_S']); $dB = haversineDistance($userLat, $userLng, $b['GPS_N'], $b['GPS_S']); return $dA <=> $dB; }); $nearest = array_slice($stores, 0, 3); .

מה כלול

שלב תוצאה
גיאוקודינג ומילוי קואורדינטות כל החנויות עם קואורדינטות במסד הנתונים
נקודת קצה AJAX לחנות הקרובה מתודת API עם מיון ומטמון
ווידג'ט "החנות הקרובה" בלוק מוכן לכותרת/כרטיס מוצר
פלט מלאי למחסן הקרוב הצגת זמינות בחנות הנבחרת
אינטגרציה עם מפה (אופציונלי) מפה אינטראקטיבית עם סמנים
תיעוד והדרכה מדריך PDF + ייעוץ

העלות מחושבת באופן אישי לאחר ניתוח הפרויקט. חיסכון בתקציב בהשוואה לפיתוח מאפס—עד 60% (מ-$500 ל-$1,200). לוח זמנים—מ-3 ימים עד שבועיים, תלוי במורכבות האינטגרציה (נוכחות 1C, מספר נקודות). עם למעלה מ-7 שנות ניסיון בפיתוח Bitrix ו-50+ אינטגרציות מוצלחות, אנו מספקים פתרונות אמינים. צרו קשר לייעוץ—נעריך את הפרויקט שלכם ביום עסקים אחד. קבלו פתרון מוכן עם אחריות תאימות ל-1C ול-Marketplace.

אינטגרציית Bitrix geolocation API שלנו מבטיחה מיון מרחק חלק של חנויות באמצעות נוסחת האוורסין. ניתן להתאים אישית את ווידג'ט החנות הקרובה להצגת מידע מלאי. עבור רשתות עם מחסנים מרובים, תכונת Bitrix nearest warehouse שלנו מייעלת את הלוגיסטיקה.