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