نظرة عامة
توفّر 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;