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