نظرة عامة
توفّر واجهة برمجة التطبيقات لخرائط Google مربّعات خرائط بمختلف مستويات تكبير/تصغير للصور من نوع الخريطة. على سبيل المثال، تتوفّر معظم صور خارطة الطريق بدءًا من مستويات التكبير أو التصغير من 0 إلى 18. تتفاوت صور القمر الصناعي على نطاق أوسع إذ لا يتم إنشاء هذه الصور، بل يتم التقاطها مباشرةً.
نظرًا لعدم توفُّر صور القمر الصناعي دائمًا بمستويات تكبير/تصغير عالية للمواقع الجغرافية البعيدة، مثل المناطق المأهولة بالسكان أو مناطق المحيطات المفتوحة، قد تحتاج مسبقًا إلى معرفة أعلى مستوى تكبير للصور في موقع جغرافي معيّن. يوفّر الكائن MaxZoomService
واجهة بسيطة لاكتشاف أقصى مستوى تكبير في موقع جغرافي معيّن تتوفر له صور القمر الصناعي في "خرائط Google".
طلبات MaxZoom
الدخول إلى MaxZoomService
غير متزامن، لأنّ
واجهة برمجة التطبيقات لخرائط Google تحتاج إلى الاتصال بخادم خارجي. لهذا السبب، يجب ضبط طريقة callback ليتمّ تنفيذها عند اكتمال الطلب. ومن المفترض أن تعالج طريقة معاودة الاتصال هذه النتيجة.
لبدء طلب إلى MaxZoomService
،
استدعِ getMaxZoomAtLatLng()
مع تمرير
LatLng
للموقع الجغرافي ودالة استدعاء
لتنفيذه عند اكتمال الطلب.
استجابات MaxZoom
عندما تنفّذ getMaxZoomAtLatLng()
دالة callback، ستُرجع مَعلمتَين:
- يتضمّن
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;