מדריך אינטגרציה של 1C-Bitrix ו-Google Maps

אינטגרציה של Google Maps עם 1C-Bitrix באתר של חנות מקוונת עם 250 נקודות איסוף, הסמנים מתמזגים לכתם אחד – המשתמש לא יכול לבחור את הקרובה ביותר. זה פוגע ישירות בהמרות: כל לקוח שני הולך למתחרה שבו המפה עובדת בצורה ברורה. אנחנו פותרים את הבעיה הזו כבר...
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
מדריך אינטגרציה של 1C-Bitrix ו-Google Maps
בינוני
~1-2 שבועות

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

שאלות נפוצות

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

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1463
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    810
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1167

שילוב Google Maps עם 1C-Bitrix

באתר של חנות מקוונת עם 250 נקודות איסוף, סמנים מתמזגים לגוש אחד — המשתמש לא יכול לבחור את הקרובה ביותר. זה פוגע ישירות בהמרות: כל לקוח שני הולך למתחרה שבו המפה פועלת בצורה ברורה. אנחנו פותרים את הבעיה הזו כבר 5 שנים: יישמנו שילוב Google Maps עם 1C-Bitrix ביותר מ-30 פרויקטים, עיבדנו 2 מיליון בקשות גיאוקודינג ללא תקלות. Google Maps Platform הוא התקן לפרויקטים בינלאומיים: ויקיפדיה מדווחת על כיסוי של 200+ מדינות. המהנדסים שלנו מכירים את כל הניואנסים: מהגדרת מפתח ועד קיבוץ סמנים. שמירת מטמון נכונה של נתוני גיאו מפחיתה עלויות API פי 2–3, ותצורת מכסה נכונה מונעת חשבונות של עשרות כ-$9–13 בחיסכון. לקוח אחד ללא שמירת מטמון קיבל חשבון של $270–390 על חריגה מהמכסה בחודש. בניגוד ל-Yandex Maps, Google Maps דורש קישור אמצעי תשלום אך מספק מכסה חינמית (28,000 טעינות מפה בחודש). בקשו שילוב — קבלו מפה שלא תיכשל עם 10,000 מבקרים ביום.

בצעו את השלבים הבאים כדי לשלב Google Maps עם 1C-Bitrix:

  1. קבלו מפתח API מ-Google Cloud Console.
  2. הפעילו את ה-API הנדרשים: Maps JavaScript, Geocoding, Places.
  3. הגבילו את המפתח לפי HTTP referrer ו-IP.
  4. יישמו רינדור מפה עם JavaScript.
  5. יישמו גיאוקודינג בצד השרת עם שמירת מטמון.
  6. הוסיפו השלמה אוטומטית של כתובות דרך Places API.
  7. הוסיפו קיבוץ סמנים למפות חנויות.
  8. הגדירו ניטור מכסה כדי למנוע חריגות.

עלות השילוב: מ-$500–1.5k. שמירת מטמון יכולה לחסוך עד $180–260 בחודש בעלויות API.

למה Google Maps עדיף לפרויקטים בינלאומיים?

לעסקים עם קהלים במדינות חבר העמים ומחוצה לו, Google Maps מספק כיסוי אחיד. הוא תומך בכתובות מפורטות ביותר מ-200 מדינות, דבר ששירותים מקומיים לא יכולים להבטיח. בנוסף, Google Places API מספק השלמה אוטומטית בהתחשב בפורמטים אזוריים: רחוב, בניין, יחידה — הכל בצורה מובנית. Google Maps מציע כיסוי גלובלי פי 3 טוב יותר מ-Yandex Maps, עם כיסוי של 200+ מדינות לעומת 60.

איך להגדיר מפתח API עבור Google Maps?

אתם צריכים פרויקט ב-Google Cloud Console. הפעילו שלושה API חובה: Maps JavaScript API לרינדור המפה, Geocoding API לגיאוקודינג בצד השרת, ו-Places API להשלמה אוטומטית של כתובות. לאחר יצירת המפתח, הקפידו להגביל את השימוש בו: עבור Maps JavaScript API ציינו HTTP referrer (דומיין האתר), עבור API של השרת ציינו את כתובת ה-IP של השרת. זה מונע דליפת מכסה אם המפתח נגנב. שמרו את המפתח ב-.env או דרך COption::GetOptionString('site', 'gmaps_api_key'), אל תכניסו ישירות לתבניות.

דוגמה לתצורת מפתח:

<div id="gmap" style="width:100%;height:400px"></div> <script> function initMap() { const coords = { lat: <?= $lat ?>, lng: <?= $lon ?> }; const map = new google.maps.Map(document.getElementById('gmap'), { center: coords, zoom: 14, styles: googleMapStyles, // кастомные стили для бренда }); new google.maps.Marker({ position: coords, map: map, title: '<?= htmlspecialchars($title) ?>' }); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=<?= $apiKey ?>&callback=initMap&language=ru&region=RU"> </script> 

השתמשו ב-Google Cloud Console כדי לוודא הגבלות.

יישום המפה ונתוני הגיאו

אתחול המפה

function geocodeAddressGoogle(string $address): ?array { $apiKey = COption::GetOptionString('site', 'gmaps_server_key'); $url = 'https://maps.googleapis.com/maps/api/geocode/json?' . 'address=' . urlencode($address) . '&key=' . $apiKey . '&language=ru&region=RU'; $http = new \Bitrix\Main\Web\HttpClient(); $data = json_decode($http->get($url), true); if ($data['status'] !== 'OK') return null; $loc = $data['results'][0]['geometry']['location']; return ['lat' => $loc['lat'], 'lon' => $loc['lng']]; } 

הפרמטרים <div id="gmap" style="width:100%;height:400px"></div> <script> function initMap() { const coords = { lat: <?= $lat ?>, lng: <?= $lon ?> }; const map = new google.maps.Map(document.getElementById('gmap'), { center: coords, zoom: 14, styles: googleMapStyles, // кастомные стили для бренда }); new google.maps.Marker({ position: coords, map: map, title: '<?= htmlspecialchars($title) ?>' }); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=<?= $apiKey ?>&callback=initMap&language=ru&region=RU"> </script> מבטיחים שמות רחובות ברוסית ופורמט כתובות נכון.

גיאוקודינג בצד השרת

const input = document.getElementById('delivery-address'); const autocomplete = new google.maps.places.Autocomplete(input, { types: ['address'], componentRestrictions: { country: ['ru', 'by', 'kz'] }, fields: ['geometry', 'formatted_address', 'address_components'], }); autocomplete.addListener('place_changed', () => { const place = autocomplete.getPlace(); document.getElementById('lat').value = place.geometry.location.lat(); document.getElementById('lon').value = place.geometry.location.lng(); // Парсим address_components для отдельных полей (город, улица, дом) parseAddressComponents(place.address_components); }); 

מגבלות: Geocoding API — 40,000 בקשות בחודש בחינם. בעת ייבוא ספריית כתובות גדולה, אנו מוסיפים השהיה של 50ms בין בקשות ושומרים תוצאות במטמון ב-language=ru&region=RU למשך 30 יום. זה מבטיח שהאתר לא יחרוג מהמכסה ולא יקבל שגיאת function geocodeAddressGoogle(string $address): ?array { $apiKey = COption::GetOptionString('site', 'gmaps_server_key'); $url = 'https://maps.googleapis.com/maps/api/geocode/json?' . 'address=' . urlencode($address) . '&key=' . $apiKey . '&language=ru&region=RU'; $http = new \Bitrix\Main\Web\HttpClient(); $data = json_decode($http->get($url), true); if ($data['status'] !== 'OK') return null; $loc = $data['results'][0]['geometry']['location']; return ['lat' => $loc['lat'], 'lon' => $loc['lng']]; } . שמירת מטמון של נתוני גיאו מפחיתה עלויות עד 40% — החיסכון יכול להגיע ל-$180–260 בחודש בעומסים גבוהים.

השלמה אוטומטית של כתובות דרך Places API

בדף התשלום, המשתמש מתחיל להקליד כתובת — מופיעה רשימת הצעות מ-Google Places. לאחר הבחירה, הקואורדינטות מוכנסות לשדות נסתרים ומועברות למטפל במשלוח.

import { MarkerClusterer } from '@googlemaps/markerclusterer'; const markers = storesData.map(store => new google.maps.Marker({ position: { lat: store.lat, lng: store.lon }, title: store.name, })); new MarkerClusterer({ map, markers }); 

קיבוץ סמנים

למפה עם עשרות נקודות (חנויות, משווקים), השתמשו בספריית b_cached_files:

import { MarkerClusterer } from '@googlemaps/markerclusterer'; const markers = storesData.map(store => new google.maps.Marker({ position: { lat: store.lat, lng: store.lon }, title: store.name, })); new MarkerClusterer({ map, markers }); 

העבירו נתוני חנות מ-PHP ל-JS דרך OVER_QUERY_LIMIT בעמוד או דרך בקשת Ajax לרכיב בטעינת המפה הראשונה.

איך להימנע מחריגת מכסה ולא לקבל חשבון ריק?

נטר את המכסה ב-Google Cloud Console: התראות תקציב, התראה ב-80% שימוש. חריגה מהמכסה החינמית גורמת ל-API להחזיר שגיאות const input = document.getElementById('delivery-address'); const autocomplete = new google.maps.places.Autocomplete(input, { types: ['address'], componentRestrictions: { country: ['ru', 'by', 'kz'] }, fields: ['geometry', 'formatted_address', 'address_components'], }); autocomplete.addListener('place_changed', () => { const place = autocomplete.getPlace(); document.getElementById('lat').value = place.geometry.location.lat(); document.getElementById('lon').value = place.geometry.location.lng(); // Парсим address_components для отдельных полей (город, улица, дом) parseAddressComponents(place.address_components); }); . לשליטה, אנו מוסיפים רישום של כל בקשות השרת ל-Geocoding API עם ספירת מכסה יומית. עלות השילוב הממוצעת בפרויקטים שלנו היא מ-$500–1.5k, והחיסכון בהוצאות API בזכות שמירת מטמון מגיע ל-$180–260 בחודש.

ניהול מכסה ו-API

API מטרה מכסה חינמית
Maps JavaScript API רינדור מפה 28,000 טעינות בחודש
Geocoding API גיאוקודינג 40,000 בקשות בחודש
Places API השלמה אוטומטית של כתובות 100,000 סשנים בחודש

תהליך עבודה ולוחות זמנים

משימה מאמץ
הגדרת מפתח והגבלות 1–2 שעות
מפה בסיסית עם סמנים 3–5 שעות
גיאוקודינג + שמירת מטמון 3–4 שעות
Places Autocomplete בטופס המשלוח 4–6 שעות
מפה עם קיבוץ 5–7 שעות

מה כלול

  • פיתוח תצורת מפתח והגבלות.
  • גיאוקודינג בצד השרת עם שמירת מטמון.
  • שילוב Places Autocomplete.
  • יישום מפה עם קיבוץ.
  • תיעוד והדרכת מנהלים.
  • אחריות לפעולה יציבה ועמידה בלוחות זמנים.
  • גישה לתיעוד, הדרכה למנהלים, תמיכה שוטפת.

שגיאות נפוצות ומניעתן

  • מפתח לא מוגבל — תוקפים יכולים להשתמש בו באתרים שלהם, מה שמוביל לחריגת מכסה. תמיד הגדירו HTTP referrer ו-IP.
  • אין שמירת מטמון של נתוני גיאו — בעת ייבוא 1000 כתובות ללא השהיות ושמירת מטמון, תגיעו במהירות למגבלה. השתמשו ב-@googlemaps/markerclusterer ובהשהיה של 50ms בין בקשות.
  • התעלמות משגיאות API — אי טיפול ב-import { MarkerClusterer } from '@googlemaps/markerclusterer'; const markers = storesData.map(store => new google.maps.Marker({ position: { lat: store.lat, lng: store.lon }, title: store.name, })); new MarkerClusterer({ map, markers }); או json_encode() — המפה עשויה להציג מסך ריק ללא הודעה. תמיד בדקו את OVER_QUERY_LIMIT של התשובה.

צרו קשר כדי לדון במשימה שלכם. בקשו שילוב עם אחריות לאיכות — קבלו פתרון מוכן עם תיעוד ותמיכה.

שילוב Google Maps שלנו עם 1C-Bitrix מספק הגדרת Google Maps API חלקה עבור 1C-Bitrix. יישמו מפת חנות ב-1C-Bitrix עם סמנים מותאמים אישית. השתמשו בהשלמה אוטומטית של Places API Bitrix להזנת כתובות. יישמו ניטור מכסה של Google Maps כדי להימנע מחיובים על חריגות.