Omówienie
Interfejs API Map Google udostępnia obrazy mapy w różnych poziomach powiększenia. Większość mapy drogowej jest dostępna na poziomach powiększenia 0–18. Zdjęcia satelitarne różnią się bardziej, ponieważ nie są generowane, ale bezpośrednio fotografowane.
Zdjęcia satelitarne nie zawsze są dostępne przy dużym powiększeniu w przypadku odległych lokalizacji (słabo zaludnionych obszarów lub otwartych obszarów oceanu). Dlatego warto wcześniej sprawdzić najwyższy poziom powiększenia zdjęć w danej lokalizacji. Obiekt MaxZoomService
udostępnia prosty interfejs do określania maksymalnego poziomu powiększenia w danej lokalizacji, dla której Mapy Google mają obrazy satelitarne.
MaxZoom Requests
Dostęp do elementu MaxZoomService
jest asynchroniczny, ponieważ interfejs API Map Google musi wykonać wywołanie do zewnętrznego serwera. Z tego powodu musisz przekazać metodę wywołania zwrotnego, która zostanie wykonana po zakończeniu przetwarzania żądania. Ta metoda wywołania zwrotnego powinna przetworzyć wynik.
Aby zainicjować żądanie do MaxZoomService
, wywołaj funkcję getMaxZoomAtLatLng()
, przekazując LatLng
lokalizacji i funkcję wywołania zwrotnego, która ma zostać wykonana po zakończeniu żądania.
Odpowiedzi MaxZoom
Gdy funkcja getMaxZoomAtLatLng()
wykona funkcję callback, przekaże 2 parametry:
status
zawieraMaxZoomStatus
żądania.zoom
zawiera poziom powiększenia. Jeśli z jakiegoś powodu usługa nie powiedzie się, ta wartość nie będzie obecna.
Kod status
może zwracać jedną z tych wartości:
OK
wskazuje, że usługa znalazła maksymalny poziom powiększenia dla zdjęć satelitarnych.ERROR
oznacza, że nie udało się przetworzyć żądania dotyczącego maksymalnego powiększenia.
Ten przykład pokazuje mapę Tokio. Kliknięcie dowolnego miejsca na mapie wskazuje maksymalny poziom powiększenia w tym miejscu. (poziomy powiększenia w Tokio zazwyczaj wahają się między poziomami 18 a 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;