Przegląd
Interfejs API Map Google udostępnia fragmenty mapy na różnych poziomach powiększenia w przypadku zdjęć typu mapy. Na przykład większość zdjęć map drogowych jest dostępna na poziomach powiększenia od 0 do 18. Zdjęcia satelitarne różnią się bardziej, ponieważ nie są generowane, ale fotografowane bezpośrednio.
Zdjęcia satelitarne nie zawsze są dostępne przy wysokich poziomach powiększenia w przypadku odległych lokalizacji, takich jak słabo zaludnione obszary czy otwarte morze. Dlatego warto wcześniej sprawdzić najwyższy poziom powiększenia zdjęć w danej lokalizacji. Obiekt MaxZoomService udostępnia prosty interfejs do sprawdzania maksymalnego poziomu powiększenia w danej lokalizacji, dla której Mapy Google mają zdjęcia satelitarne.
Żądania MaxZoom
Dostęp do MaxZoomService jest asynchroniczny, ponieważ interfejs API Map Google musi wywołać serwer zewnętrzny. Z tego powodu musisz przekazać metodę wywołania zwrotnego, która zostanie wykonana po zakończeniu żądania. Ta metoda wywołania zwrotnego powinna przetworzyć wynik.
Aby zainicjować żądanie do MaxZoomService, wywołaj getMaxZoomAtLatLng(), przekazując LatLng lokalizacji i wywołanie zwrotne, które ma zostać wykonane po zakończeniu żądania.
Odpowiedzi MaxZoom
Gdy getMaxZoomAtLatLng() wykonuje funkcję wywołania zwrotnego, przekazuje z powrotem 2 parametry:
statuszawieraMaxZoomStatusżądania.zoomzawiera poziom powiększenia. Jeśli z jakiegoś powodu usługa nie zadziała, ta wartość nie będzie dostępna.
Kod status może zwracać jedną z tych wartości:
OKwskazuje, że usługa znalazła maksymalny poziom powiększenia zdjęć satelitarnych.ERRORoznacza, że nie udało się przetworzyć żądania MaxZoom.
Poniższy przykład pokazuje mapę Tokio. Kliknięcie dowolnego miejsca na mapie wskazuje maksymalny poziom powiększenia w tej lokalizacji. (Poziomy powiększenia w Tokio zwykle wahają się od 18 do 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;