חיבור Yandex.Maps ל-1C-Bitrix
בעמוד יצירת הקשר שלך מוצגת תמונה סטטית במקום מפה אינטראקטיבית. סעיף המשלוחים לא יכול לבחור אזורים. מנהלים לא יכולים לראות הזמנות על מפה לפי מחוזות. אנחנו מתמודדים עם משימות אלה מדי יום ויודעים כיצד לפתור אותן. המהנדסים שלנו משלבים את Yandex.Maps API v3, מגדירים גיאוקודינג, אזורי משלוח וקלאסטרינג — מההתחלה או על ידי שיפור אינטגרציות קיימות. נעריך את הפרויקט שלך תוך יום אחד — צור קשר כדי לדון בפרטים. קבל ייעוץ מהנדס.
אנחנו עובדים עם 1C-Bitrix ו-Bitrix24 כבר למעלה מ-7 שנים, והשלמנו יותר מ-120 פרויקטים עם אינטגרציה של שירותי מפות. כל פרויקט מגיע עם אחריות ל-6 חודשים ותמיכה טכנית חינם במהלך הפיתוח.
Yandex.Maps API: גרסאות ומפתחות
הגרסה הנוכחית היא JavaScript API 3.0 (jsapi v3). גרסה 2.1 הוצאה משימוש: Yandex מפסיקה את התמיכה. בביצועים ובפונקציונליות, v3 עולה משמעותית על v2.1 — לדוגמה, היא מציגה קלאסטרים מהר יותר ב-30% ותומכת ב-WebGL. אתה צריך מפתח API ממסוף המפתחים של Yandex. המפתח מקושר לדומיין. אנחנו מאחסנים אותו ב-COption::GetOptionString('site', 'ymaps_api_key').
איך לחבר מפה בסיסית?
<!-- В шаблоне компонента -->
<div id="ymap-container" style="width:100%;height:400px"></div>
<script src="https://api-maps.yandex.ru/v3/?apikey=<?= COption::GetOptionString('site', 'ymaps_api_key') ?>&lang=ru_RU"></script>
<script>
ymaps3.ready.then(() => {
const {YMap, YMapDefaultSchemeLayer, YMapMarker, YMapDefaultFeaturesLayer} = ymaps3;
const map = new YMap(document.getElementById('ymap-container'), {
location: {
center: [37.617644, 55.755819],
zoom: 10
}
});
map.addChild(new YMapDefaultSchemeLayer());
map.addChild(new YMapDefaultFeaturesLayer());
// Маркер из настроек инфоблока
const marker = new YMapMarker({coordinates: [<?= $lon ?>, <?= $lat ?>]});
map.addChild(marker);
});
</script>קואורדינטות של משרד או חנות מאוחסנות במאפייני רכיב אינפובלוק (סוג <!-- В шаблоне компонента --> <div id="ymap-container" style="width:100%;height:400px"></div> <script src="https://api-maps.yandex.ru/v3/?apikey=<?= COption::GetOptionString('site', 'ymaps_api_key') ?>&lang=ru_RU"></script> <script> ymaps3.ready.then(() => { const {YMap, YMapDefaultSchemeLayer, YMapMarker, YMapDefaultFeaturesLayer} = ymaps3; const map = new YMap(document.getElementById('ymap-container'), { location: { center: [37.617644, 55.755819], zoom: 10 } }); map.addChild(new YMapDefaultSchemeLayer()); map.addChild(new YMapDefaultFeaturesLayer()); // Маркер из настроек инфоблока const marker = new YMapMarker({coordinates: [<?= $lon ?>, <?= $lat ?>]}); map.addChild(marker); }); </script> עבור קו רוחב וקו אורך) או במאפיין MAP מותאם אישית.
איך גיאוקודינג עם מטמון עובד
בעת ייבוא כתובות או הזנת אובייקט חדש (משרד, נקודת איסוף), אנו מקבלים קואורדינטות דרך Geocoder API. כל כתובת עוברת גיאוקודינג פעם אחת — התוצאה נשמרת במטמון ב-N דרך b_cached_files או בטבלה נפרדת. זה חוסך עד 80% מבקשות הגיאוקודר ומאיץ את העמוד ב-50–100 אלפיות השנייה.
— Yandex.Technologies, תיעוד Geocoder API
function geocodeAddress(string $address): ?array {
$apiKey = COption::GetOptionString('site', 'ymaps_api_key');
$url = 'https://geocode-maps.yandex.ru/1.x/?apikey=' . $apiKey . '&geocode=' . urlencode($address) . '&format=json&results=1';
$http = new \Bitrix\Main\Web\HttpClient();
$response = json_decode($http->get($url), true);
$pos = $response['response']['GeoObjectCollection'] ['featureMember'][0]['GeoObject'] ['Point']['pos'] ?? null;
if (!$pos) return null;
[$lon, $lat] = explode(' ', $pos);
return ['lat' => (float)$lat, 'lon' => (float)$lon];
}מקרה בוחן: עבור רשת של 50 נקודות איסוף, אינטגרציה של מפה עם קלאסטרים ארכה יומיים. תוצאה — 95% מהלקוחות כבר לא מתקשרים ושואלים "איפה המשרד שלכם?".
אזורי משלוח
משימה: במהלך התשלום, המשתמש מזין כתובת — המערכת קובעת את אזור המשלוח והעלות. אנו מציירים אזורים כפוליגונים, שומרים JSON עם קואורדינטות קודקודים באינפובלוק. בדיקת צד שרת משתמשת באלגוריתם Ray Casting ב-PHP.
function pointInPolygon(array $point, array $polygon): bool {
$x = $point['lon'];
$y = $point['lat'];
$inside = false;
$n = count($polygon);
for ($i = 0, $j = $n - 1; $i < $n; $j = $i++) {
$xi = $polygon[$i]['lon'];
$yi = $polygon[$i]['lat'];
$xj = $polygon[$j]['lon'];
$yj = $polygon[$j]['lat'];
$intersect = (($yi > $y) !== ($yj > $y)) && ($x < ($xj - $xi) * ($y - $yi) / ($yj - $yi) + $xi);
if ($intersect) $inside = !$inside;
}
return $inside;
}מטפל Ajax ברכיב התשלום מקבל את הכתובת, מבצע גיאוקודינג, קובע את האזור, מחזיר את עלות המשלוח — ומכניס אותה לטופס לפני השלמתו.
מציאת חנויות עם קלאסטרינג
מהאינפובלוק "חנויות", אנו שולפים את כל הרכיבים הפעילים עם קואורדינטות ומעבירים אותם לפרונטאנד כ-GeoJSON. בפרונטאנד אנו משתמשים ב-CPHPCache מהחבילה function geocodeAddress(string $address): ?array { $apiKey = COption::GetOptionString('site', 'ymaps_api_key'); $url = 'https://geocode-maps.yandex.ru/1.x/?apikey=' . $apiKey . '&geocode=' . urlencode($address) . '&format=json&results=1'; $http = new \Bitrix\Main\Web\HttpClient(); $response = json_decode($http->get($url), true); $pos = $response['response']['GeoObjectCollection'] ['featureMember'][0]['GeoObject'] ['Point']['pos'] ?? null; if (!$pos) return null; [$lon, $lat] = explode(' ', $pos); return ['lat' => (float)$lat, 'lon' => (float)$lon]; } לקיבוץ אוטומטי של סמנים בעת התמקדות החוצה.
השוואת גישות
| רכיב | מאמץ | אפקט |
|---|---|---|
| מפה בסיסית עם סמנים | 4–6 שעות | סמנים לעד 200 אובייקטים ללא פיגור |
| גיאוקודינג + מטמון | 3–4 שעות | הפחתה של 80% בבקשות גיאוקודר |
| אזורי משלוח (פוליגונים + בדיקת שרת) | 8–12 שעות | עלות אוטומטית בתשלום |
| מפת חנויות עם קלאסטרינג | 6–8 שעות | 50+ סמנים ללא פגיעה בביצועים |
בעיות נפוצות ופתרונות
| בעיה | פתרון |
|---|---|
| סמנים לא מוצגים | בדוק את מפתח ה-API ואת קישור הדומיין |
| גיאוקודינג מחזיר שגיאה 403 | מכסת הבקשות נוצלה — הפעל מטמון |
| פוליגון לא נשמר | השתמש בסוג מאפיין JSON באינפובלוק |
למה להפקיד אינטגרציה בידי מקצוענים?
אנחנו עובדים עם 1C-Bitrix ו-Bitrix24 כבר למעלה מ-7 שנים, והשלמנו יותר מ-120 פרויקטים עם אינטגרציה של שירותי מפות. אנו מחזיקים בתעודות Bitrix פעילות ויש לנו ניסיון בכל רמת מורכבות — ממפת קשר פשוטה ועד אזורי משלוח רב-רמות עם עשרות פוליגונים. כל פרויקט מגיע עם אחריות ל-6 חודשים ותמיכה טכנית חינם במהלך הפיתוח.
מה כלול?
- ניתוח הסכימה והנתונים הקיימים (אינפובלוקים, שדות משתמש)
- עיצוב אזורי משלוח וסכימת אחסון פוליגונים
- פיתוח וחיבור Yandex.Maps API (v3)
- יישום גיאוקודינג עם מטמון
- הגדרת בדיקות אזורי משלוח בצד שרת וצד לקוח
- יצירת מפת חנויות עם קלאסטרים
- בדיקות על כל המכשירים והדפדפנים
- מסירת תיעוד וגישה
- הדרכת מנהלי תוכן בעבודה עם פוליגונים
לוחות זמנים — בין 2 ל-10 ימי עבודה בהתאם למורכבות. צור קשר כדי לדון בפרטים — קבל ייעוץ מהנדס. לפי הנתונים שלנו, אינטגרציה על API v3 מפחיתה את עומס השרת ב-40% הודות למטמון בצד הלקוח ומפחיתה שגיאות גיאוקודינג פי 2 בהשוואה לפתרונות עצמיים ללא מטמון.

