סקירה כללית
Google Maps API מספק משבצות מפה ב רמות זום שונות לתמונות מסוג מפה. לדוגמה, רוב התמונות של מפות הדרכים זמינות ברמות זום 0 עד 18. יש הבדלים משמעותיים יותר בין צילומי הלוויין, כי הם לא נוצרים אלא מצולמים ישירות.
מאחר שתמונות לוויין לא תמיד זמינות ברמות זום גבוהות במיקומים מרוחקים – באזורים עם אוכלוסייה דלילה או באזורים פתוחים באוקיינוס – מומלץ לבדוק מראש מהי רמת הזום הגבוהה ביותר של התמונות במיקום נתון. האובייקט MaxZoomService מספק ממשק פשוט לגילוי רמת הזום המקסימלית במיקום נתון שיש לו תמונות לוויין במפות Google.
בקשות MaxZoom
הגישה ל-MaxZoomService היא אסינכרונית, כי Google Maps API צריך לבצע קריאה לשרת חיצוני. לכן, צריך להעביר method של קריאה חוזרת שיתבצע בסיום הבקשה. שיטת הקריאה החוזרת הזו אמורה לעבד את התוצאה.
כדי להתחיל בקשה ל-MaxZoomService, צריך להפעיל את getMaxZoomAtLatLng(), ולהעביר את LatLng של המיקום ופונקציית קריאה חוזרת (callback) שתתבצע בסיום הבקשה.
תגובות של 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;