Opis
Interfejs API Map Google udostępnia elementy mapy na różnych poziomach powiększenia w przypadku zdjęć typu. Na przykład większość zdjęć z planu działań jest dostępna z poziomu powiększenia od 0 do 18. Zdjęcia satelitarne różnią się znacznie bardziej, ponieważ nie są one generowane, a fotografowane bezpośrednio.
Zdjęcia satelitarne nie zawsze są dostępne z dużym powiększeniem w odległych lokalizacjach (obszarach słabo zaludnionych lub otwartych) – dlatego warto wcześniej poznać maksymalny poziom powiększenia zdjęć danej lokalizacji. Obiekt MaxZoomService
udostępnia prosty interfejs do wykrycia maksymalnego poziomu powiększenia w danej lokalizacji, w której Mapy Google zawierają zdjęcia satelitarne.
Żądania MaxZoom
Dostęp do obiektu MaxZoomService
jest asynchroniczny, ponieważ interfejs API Map Google musi wywoływać serwer zewnętrzny. Dlatego 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 kod LatLng
lokalizacji oraz funkcję wywołania zwrotnego, która zostanie wykonana po jego zakończeniu.
Odpowiedzi MaxZoom
Gdy getMaxZoomAtLatLng()
wykona funkcję wywołania zwrotnego, zwróci 2 parametry:
status
zawieraMaxZoomStatus
żądania.zoom
określa poziom powiększenia. Jeśli z jakiegoś powodu usługa ulegnie awarii, ta wartość nie będzie dostępna.
Kod status
może zwracać jedną z tych wartości:
OK
wskazuje, że usługa znalazła maksymalny poziom powiększenia zdjęć satelitarnych.ERROR
wskazuje, że nie udało się przetworzyć żądania MaxZoom.
Poniższy przykład pokazuje mapę metropolii Tokio. Kliknięcie w dowolnym miejscu mapy wskazuje maksymalny poziom powiększenia w danej lokalizacji. (Poziomy powiększenia w Tokio zasadniczo różnią się w zależności od poziomu powiększenia 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;