بدائل JavaScript متوافقة لمكتبات الخرائط والترميز الجغرافي
شيفرة الواجهة الأمامية هي أكثر ما يتضرر عند تغيير المزوّد، لأن مكتبة الخرائط وأداة الترميز الجغرافي والفوترة متشابكة معًا. تتيح لك أدوات التحميل والإعدادات هذه الاحتفاظ بشيفرة المكتبة التي لديك. وخلفها تأتي بلاطات الخرائط والترميز الجغرافي والإكمال التلقائي والارتفاع منا. تحميل الخرائط والبلاطات مجاني، ولا تُحتسب ضمن حصتك سوى استدعاءات الترميز الجغرافي.
أما لجانب REST، فمصفوفة المضيفات السبعة عشر كلها وقائمة التحقق من الانتقال موجودة في صفحة كيف تعمل البدائل المتوافقة.
في هذه الصفحة
واجهة Google Maps JavaScript API
حمّل مكتبة الخرائط من gapi.mygeocode.com بدلًا من maps.googleapis.com. تتوفر مساحة الأسماء google.maps، مع بلاطات الخرائط والعلامات وGeocoder وPlaces Autocomplete وElevationService التي نقدّمها نحن. لا يُحتسب تحميل الخرائط ضمن حصتك.
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=YOUR_GOOGLE_KEY&libraries=places&callback=initMap">
</script><script async defer
src="https://gapi.mygeocode.com/maps/api/js?key=YOUR_MYGEOCODE_KEY&libraries=places&callback=initMap">
</script>// Nothing below this line changes.
function initMap() {
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 51.5074, lng: -0.1278 },
zoom: 12
});
const geocoder = new google.maps.Geocoder();
geocoder.geocode({ address: "221B Baker Street, London" }, (results, status) => {
if (status === "OK") {
map.setCenter(results[0].geometry.location);
new google.maps.Marker({ map, position: results[0].geometry.location });
}
});
const input = document.getElementById("search");
const autocomplete = new google.maps.places.Autocomplete(input, { fields: ["geometry", "formatted_address"] });
autocomplete.addListener("place_changed", () => {
const place = autocomplete.getPlace();
if (place.geometry) map.panTo(place.geometry.location);
});
}مشمول
- google.maps.Map مع بلاطاتنا (أنواع الخرائط roadmap وsatellite وterrain)
- الفئات Marker وInfoWindow وPolyline وPolygon وCircle وRectangle وLatLng وLatLngBounds وevent
- Geocoder (أمامي وعكسي)
- أداة places.Autocomplete والخدمة places.AutocompleteService
- ElevationService
- عناصر التحكم والإيماءات والخرائط المنسّقة بتنسيق مصفوفة الأنماط نفسه
غير مشمول
- Street View
- Directions وDistance Matrix وRoutes
- Places Details وPhotos وNearby Search
- مكتبات Drawing وVisualization وGeometry
- طرق العرض ثلاثية الأبعاد وطبقات WebGL
ما الذي يُحتسب طلبًا. تحميل الخرائط وطلبات البلاطات مجانية. كل استدعاء للفئة Geocoder وكل جلسة Autocomplete وكل استدعاء للخدمة ElevationService يُحتسب طلبًا واحدًا.
عنصر التحكم Bing Maps V8 Web Control
يتوقف عنصر التحكم V8 مع بقية Bing Maps for Enterprise. حمّل عنصر التحكم من bing.mygeocode.com وستستمر مساحة الأسماء Microsoft.Maps في العمل، وخلفها بلاطاتنا والترميز الجغرافي والاقتراح التلقائي الخاص بنا.
<script async defer
src="https://www.bing.com/api/maps/mapcontrol?key=YOUR_BING_KEY&callback=loadMap">
</script><script async defer
src="https://bing.mygeocode.com/api/maps/mapcontrol?key=YOUR_MYGEOCODE_KEY&callback=loadMap">
</script>function loadMap() {
const map = new Microsoft.Maps.Map("#map", { center: new Microsoft.Maps.Location(47.6396, -122.13), zoom: 12 });
Microsoft.Maps.loadModule("Microsoft.Maps.Search", () => {
const search = new Microsoft.Maps.Search.SearchManager(map);
search.geocode({
where: "1 Microsoft Way, Redmond, WA",
callback: (result) => {
const loc = result.results[0].location;
map.setView({ center: loc, zoom: 15 });
map.entities.push(new Microsoft.Maps.Pushpin(loc));
}
});
});
}مشمول
- الفئات Microsoft.Maps.Map وLocation وLocationRect وPushpin وInfobox وPolyline وPolygon وLayer
- وحدة البحث: SearchManager.geocode وreverseGeocode
- وحدة الاقتراح التلقائي: AutosuggestManager وربطه بحقل الإدخال
- أنواع الخرائط للطرق والصور الجوية والتدرج الرمادي مع بلاطاتنا
- الأحداث وشريط التنقل وخيارات الخريطة
غير مشمول
- وحدة الاتجاهات
- حركة المرور وSpatial Data Services والدوال المتقدمة في Spatial Math
- صور Bird's eye وStreetside
- وحدات Well Known Text وGeoJSON وGeoXml (استخدم وحدة GeoJSON من Leaflet أو MapLibre بدلًا منها)
ما الذي يُحتسب طلبًا. تحميل الخرائط والبلاطات مجاني. كل استدعاء للدالة geocode وreverseGeocode وكل جلسة اقتراح تلقائي يُحتسب طلبًا واحدًا.
Mapbox GL JS وmapbox-gl-geocoder
احتفظ بشيفرة الخريطة واستبدل عنواني URL: النمط، ومصدر أداة الترميز الجغرافي. MapLibre GL JS (النسخة المتفرعة مفتوحة المصدر) هي أداة العرض الموصى بها، ويعمل Mapbox GL JS v1 أيضًا. تتضمن mapbox-gl-geocoder خيار origin، لذا لا يحتاج عنصر التحكم في الترميز الجغرافي إلى أي تغيير في الشيفرة سوى ذلك.
const map = new mapboxgl.Map({
container: "map",
style: "mapbox://styles/mapbox/streets-v12",
accessToken: "YOUR_MAPBOX_TOKEN"
});
map.addControl(new MapboxGeocoder({
accessToken: "YOUR_MAPBOX_TOKEN",
mapboxgl: mapboxgl
}));const map = new maplibregl.Map({
container: "map",
style: "https://mapbox.mygeocode.com/styles/v1/mygeocode/streets?access_token=YOUR_MYGEOCODE_KEY"
});
map.addControl(new MapboxGeocoder({
accessToken: "YOUR_MYGEOCODE_KEY",
origin: "https://mapbox.mygeocode.com",
mapboxgl: maplibregl
}));// Direct calls keep the same shape too
const res = await fetch(
"https://mapbox.mygeocode.com/geocoding/v5/mapbox.places/Oxford%20Street%20London.json?access_token=YOUR_MYGEOCODE_KEY",
{ headers: { "X-API-Key": "YOUR_KEY" } }
);
const { features } = await res.json();
map.flyTo({ center: features[0].center, zoom: 15 });مشمول
- أنماط البلاطات المتجهية: streets وlight وdark وoutdoors، وفق مواصفات أنماط Mapbox
- mapbox-gl-geocoder مع خيار origin، بما في ذلك proximity وbbox وcountries وtypes
- صور ثابتة على /styles/v1/mygeocode/{style}/static/{lon},{lat},{zoom}/{width}x{height}
- بلاطات نقطية على /v4/mygeocode.streets/{z}/{x}/{y}.png لمكتبة Leaflet وOpenLayers
غير مشمول
- Mapbox GL JS v2 والإصدارات اللاحقة (ترخيصها يشترط رموز Mapbox، استخدم MapLibre)
- واجهات Directions وIsochrone وMatrix وOptimization
- الأنماط المخصصة في Mapbox Studio (ارفع ملف JSON الخاص بنمطك إلى حسابك بدلًا من ذلك)
ما الذي يُحتسب طلبًا. البلاطات والصور الثابتة مجانية. كل طلب ترميز جغرافي يُحتسب طلبًا واحدًا، ويؤخّر عنصر التحكم ضغطات المفاتيح في الإكمال التلقائي كالمعتاد.
إضافات الترميز الجغرافي في Leaflet
يتواصل Leaflet مع خدمات الترميز الجغرافي عبر الإضافات، والإضافات الشائعة تقبل عنوان URL للخدمة. وجّه Leaflet Control Geocoder أو leaflet-geosearch إلى osm.mygeocode.com واستخدم بلاطاتنا للخريطة الأساسية.
L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
attribution: "© OpenStreetMap contributors"
}).addTo(map);
L.Control.geocoder({
geocoder: L.Control.Geocoder.nominatim()
}).addTo(map);L.tileLayer("https://tiles.mygeocode.com/streets/{z}/{x}/{y}.png?key=YOUR_MYGEOCODE_KEY", {
attribution: "© My Geocode"
}).addTo(map);
L.Control.geocoder({
geocoder: L.Control.Geocoder.nominatim({
serviceUrl: "https://osm.mygeocode.com/",
geocodingQueryParams: { key: "YOUR_MYGEOCODE_KEY" }
})
}).addTo(map);// leaflet-geosearch works the same way
import { OpenStreetMapProvider, GeoSearchControl } from "leaflet-geosearch";
const provider = new OpenStreetMapProvider({
searchUrl: "https://osm.mygeocode.com/search",
reverseUrl: "https://osm.mygeocode.com/reverse",
params: { key: "YOUR_MYGEOCODE_KEY", addressdetails: 1 }
});
map.addControl(new GeoSearchControl({ provider, style: "bar" }));مشمول
- Leaflet Control Geocoder: أدوات الترميز الجغرافي nominatim وgoogle وbing وmapbox وhere وopencage وlatLng وmapquest، كل منها موجّه إلى مضيف www.mygeocode.com المقابل
- leaflet-geosearch: المزوّدات OpenStreetMapProvider وGoogleProvider وBingProvider وHereProvider وLocationIQProvider وOpenCageProvider وGeoapifyProvider
- بلاطات نقطية بأنماط streets وlight وdark
- أي إضافة أخرى تتيح لك تعيين عنوان URL لخدمة Nominatim
غير مشمول
- إضافات التوجيه (Leaflet Routing Machine وما يشبهها)
- أنماط البلاطات غير الأنماط الثلاثة المذكورة
ما الذي يُحتسب طلبًا. البلاطات مجانية. كل ترميز جغرافي وكل ترميز جغرافي عكسي يُحتسب طلبًا واحدًا.
واجهة HERE Maps API for JavaScript
حمّل حزم mapsjs من here.mygeocode.com وأنشئ المنصة كالمعتاد. تحتفظ H.Map وH.service.Platform وخدمة البحث بتواقيعها، مع البلاطات المتجهية والترميز الجغرافي منا.
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script><script src="https://here.mygeocode.com/v3/3.1/mapsjs-core.js"></script>
<script src="https://here.mygeocode.com/v3/3.1/mapsjs-service.js"></script>
<script src="https://here.mygeocode.com/v3/3.1/mapsjs-ui.js"></script>
<script src="https://here.mygeocode.com/v3/3.1/mapsjs-mapevents.js"></script>const platform = new H.service.Platform({ apikey: "YOUR_MYGEOCODE_KEY" });
const layers = platform.createDefaultLayers();
const map = new H.Map(document.getElementById("map"), layers.vector.normal.map, {
center: { lat: 52.5304, lng: 13.3853 }, zoom: 13
});
platform.getSearchService().geocode(
{ q: "Invalidenstraße 116, Berlin" },
(result) => {
const { position } = result.items[0];
map.setCenter(position);
map.addObject(new H.map.Marker(position));
},
(err) => console.error(err)
);مشمول
- H.Map, H.map.Marker, H.map.Polyline, H.map.Polygon, H.map.Group
- H.service.Platform مع createDefaultLayers (vector normal وsatellite وterrain)
- SearchService: الدوال geocode وreverseGeocode وautosuggest
- عناصر التحكم الافتراضية في H.ui.UI وH.mapevents.Behavior
- H.geo.Point وH.geo.Rect والدوال المساعدة
غير مشمول
- خدمات Routing وIsoline وPublic Transit
- طبقات حركة المرور والحوادث
- Places Discover وBrowse
- أنماط الخرائط المخصصة من HERE Style Editor (استخدم تنسيق JSON للأنماط الخاص بنا)
ما الذي يُحتسب طلبًا. تحميل الخرائط والبلاطات مجاني. كل استدعاء للدالة geocode وreverseGeocode وautosuggest يُحتسب طلبًا واحدًا.
MapQuest.js
تغلّف MapQuest.js مكتبة Leaflet وتضيف L.mapquest.geocoding(). حمّل الحزمة من mapquest.mygeocode.com وعيّن مفتاحك كما كنت تفعل.
<script src="https://api.mqcdn.com/sdk/mapquest-js/v1.3.2/mapquest.js"></script>
<link type="text/css" rel="stylesheet" href="https://api.mqcdn.com/sdk/mapquest-js/v1.3.2/mapquest.css"/><script src="https://mapquest.mygeocode.com/sdk/mapquest-js/v1.3.2/mapquest.js"></script>
<link type="text/css" rel="stylesheet" href="https://mapquest.mygeocode.com/sdk/mapquest-js/v1.3.2/mapquest.css"/>L.mapquest.key = "YOUR_MYGEOCODE_KEY";
const map = L.mapquest.map("map", {
center: [41.8789, -87.6359],
layers: L.mapquest.tileLayer("map"),
zoom: 12
});
L.mapquest.geocoding().geocode("233 S Wacker Dr, Chicago, IL", (err, response) => {
const loc = response.results[0].locations[0].latLng;
map.setView(loc, 15);
L.marker(loc, { icon: L.mapquest.icons.marker() }).addTo(map);
});مشمول
- L.mapquest.map وtileLayer (map وhybrid وsatellite وlight وdark)
- L.mapquest.geocoding مع geocode وreverse
- عنصر التحكم L.mapquest.searchAhead (الإكمال التلقائي)
- الأيقونات ومواضع عناصر التحكم وواجهة Leaflet API القياسية
غير مشمول
- الاتجاهات وطبقات المسارات
- طبقة حركة المرور
- واجهة Static Map API
ما الذي يُحتسب طلبًا. البلاطات مجانية. كل طلب geocode وreverse وsearch-ahead يُحتسب طلبًا واحدًا.
بلاطات الخرائط وأنماطها
تستخدم كل أدوات التحميل أعلاه خدمة البلاطات نفسها، ويمكنك أيضًا استخدامها مباشرة من أي مكتبة.
| التنسيق | URL |
|---|---|
| نقطية، 256px | https://tiles.mygeocode.com/{style}/{z}/{x}/{y}.png |
| نقطية، 512px للشاشات عالية الكثافة | https://tiles.mygeocode.com/{style}/{z}/{x}/{y}@2x.png |
| بلاطات متجهية (MVT) | https://tiles.mygeocode.com/v/{z}/{x}/{y}.pbf |
| ملف JSON للأنماط لمكتبة MapLibre وMapbox GL | https://tiles.mygeocode.com/styles/{style}.json |
الأنماط هي streets وlight وdark وoutdoors وsatellite. حركة البلاطات لا تُحتسب في الفوترة ولا تحتاج إلى مفتاح. تُرسم بلاطاتنا من بيانات OpenStreetMap وبياناتنا الخاصة، ويجب أن يعرض عنصر الإسناد © OpenStreetMap contributors وMy Geocode، وهو ما تضيفه أدوات التحميل أعلاه نيابة عنك.
المفاتيح في المتصفح
لا تضع مفتاح API في شيفرة جهة العميل. المفتاح الموجود في مصدر الصفحة مفتاح يستطيع أي شخص قراءته، وبما أن المفتاح يعمل من عنواني IP أو ثلاثة في الوقت نفسه، فإنه يتوقف عن العمل بعد الزائر الثاني أو الثالث على أي حال.
لا تحتاج بلاطات الخرائط وأنماطها وأدوات تحميل المكتبات أعلاه إلى أي مفتاح، لذا تعمل الخريطة نفسها دائمًا. أما استدعاءات الترميز الجغرافي والإكمال التلقائي والارتفاع التي تجريها المكتبات، فمرّرها عبر خادمك: تقبل أدوات التحميل المعامل proxy (gapi.mygeocode.com/maps/api/js?proxy=https://yoursite.com/geo) وترسل تلك الاستدعاءات إليه، فيضيف خادمك المفتاح ويمرّر الطلب إلينا. وعندها تُترك العناصر النائبة YOUR_MYGEOCODE_KEY أعلاه فارغة.
- يمكن للوكيل الخاص بك إضافة التخزين المؤقت وحدوده الخاصة، وهو ما لا تستطيعه المتصفحات.
- تصل الطلبات حينها من عنوان خادمك، لذا يغطي مفتاح واحد أي عدد من الزوار.