نظرة عامة
توفّر واجهة برمجة التطبيقات Google Maps API مربّعات الخريطة على مستويات تكبير مختلفة لصور نوع الخريطة. على سبيل المثال، تتوفّر معظم صور خريطة الطريق من مستويات التكبير من 0 إلى 18. تختلف صور القمر الصناعي بشكل أكبر لأنّ هذه الصور لا يتم إنشاؤها، بل يتم التقاطها مباشرةً.
بما أنّ صور القمر الصناعي لا تتوفّر دائمًا بمستويات تكبير عالية للمواقع الجغرافية البعيدة، مثل المناطق ذات الكثافة السكانية المنخفضة أو مناطق المحيطات المفتوحة، قد تحتاج إلى معرفة أعلى مستوى تكبير للصور في موقع جغرافي معيّن مسبقًا. يوفّر الكائن MaxZoomService واجهة بسيطة لاكتشاف الحد الأقصى لمستوى التكبير في موقع جغرافي معيّن تتوفّر له صور من القمر الصناعي في "خرائط Google".
طلبات MaxZoom
يتم الوصول إلى MaxZoomService بشكل غير متزامن، لأنّ
واجهة برمجة تطبيقات "خرائط Google" تحتاج إلى إجراء طلب إلى خادم خارجي. لهذا السبب، عليك تمرير طريقة رد اتصال لتنفيذها عند اكتمال الطلب. يجب أن تعالج طريقة ردّ الاتصال هذه
النتيجة.
لبدء طلب إلى MaxZoomService،
استخدِم getMaxZoomAtLatLng()، مع تمرير
LatLng الموقع الجغرافي ودالة رد الاتصال
لتنفيذها عند اكتمال الطلب.
ردود MaxZoom
عندما ينفّذ getMaxZoomAtLatLng() دالة رد الاتصال،
سيتم تمرير مَعلمتَين:
- يحتوي
statusعلىMaxZoomStatusالطلب. -
zoomيحتوي على مستوى التكبير. إذا تعذّر على الخدمة لسبب ما، لن تظهر هذه القيمة.
قد يعرض الرمز status إحدى القيم التالية:
- تشير القيمة
OKإلى أنّ الخدمة عثرت على الحد الأقصى لمستوى التكبير لصور القمر الصناعي. - تشير السمة
ERRORإلى أنّه تعذّرت معالجة طلب MaxZoom.
يعرض المثال التالي خريطة لمنطقة طوكيو الكبرى. ويشير النقر على أي مكان على الخريطة إلى الحد الأقصى لمستوى التكبير في ذلك الموقع الجغرافي. (تتفاوت مستويات التكبير حول طوكيو بشكل عام بين 18 و21).
TypeScript
let map: google.maps.Map; let maxZoomService: google.maps.MaxZoomService; let infoWindow: google.maps.InfoWindow; function initMap(): void { map = new google.maps.Map(document.getElementById("map") as HTMLElement, { zoom: 11, center: { lat: 35.6894, lng: 139.692 }, mapTypeId: "hybrid", }); infoWindow = new google.maps.InfoWindow(); maxZoomService = new google.maps.MaxZoomService(); map.addListener("click", showMaxZoom); } function showMaxZoom(e: google.maps.MapMouseEvent) { maxZoomService.getMaxZoomAtLatLng( e.latLng as google.maps.LatLng, (result: google.maps.MaxZoomResult) => { if (result.status !== "OK") { infoWindow.setContent("Error in MaxZoomService"); } else { infoWindow.setContent( "The maximum zoom at this location is: " + result.zoom ); } infoWindow.setPosition(e.latLng); infoWindow.open(map); } ); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
let map; let maxZoomService; let infoWindow; function initMap() { map = new google.maps.Map(document.getElementById("map"), { zoom: 11, center: { lat: 35.6894, lng: 139.692 }, mapTypeId: "hybrid", }); infoWindow = new google.maps.InfoWindow(); maxZoomService = new google.maps.MaxZoomService(); map.addListener("click", showMaxZoom); } function showMaxZoom(e) { maxZoomService.getMaxZoomAtLatLng(e.latLng, (result) => { if (result.status !== "OK") { infoWindow.setContent("Error in MaxZoomService"); } else { infoWindow.setContent( "The maximum zoom at this location is: " + result.zoom, ); } infoWindow.setPosition(e.latLng); infoWindow.open(map); }); } window.initMap = initMap;