Обзор
API Карт Google предоставляет фрагменты карты с различными уровнями масштабирования для изображений типа карты. Например, большинство изображений дорожных карт доступны при уровнях масштабирования от 0 до 18. Спутниковые изображения различаются более широко, поскольку эти изображения не создаются, а непосредственно фотографируются.
Поскольку спутниковые изображения не всегда доступны с высоким уровнем масштабирования для удаленных мест — малонаселенных территорий или районов открытого океана — вам может потребоваться заранее узнать самый высокий уровень масштабирования для изображений в данном месте. Объект MaxZoomService
предоставляет простой интерфейс для определения максимального уровня масштабирования в заданном месте, для которого в Картах Google есть спутниковые снимки.
Запросы MaxZoom
Доступ MaxZoomService
является асинхронным, поскольку API Карт Google необходимо выполнить вызов внешнего сервера. По этой причине вам необходимо передать метод обратного вызова для выполнения после завершения запроса. Этот метод обратного вызова должен обработать результат.
Чтобы инициировать запрос к MaxZoomService
, вызовите getMaxZoomAtLatLng()
, передав LatLng
местоположения и функцию обратного вызова, которая будет выполнена после завершения запроса.
MaxZoom Ответы
Когда getMaxZoomAtLatLng()
выполняет функцию обратного вызова , она передает обратно два параметра:
-
status
содержитMaxZoomStatus
запроса. -
zoom
содержит уровень масштабирования. Если по какой-либо причине служба выйдет из строя, это значение не будет присутствовать.
Код status
может возвращать одно из следующих значений:
-
OK
означает, что сервис нашел максимальный уровень масштабирования для спутниковых снимков. -
ERROR
указывает на то, что запрос MaxZoom не удалось обработать.
В следующем примере показана карта мегаполиса Токио. Щелчок в любом месте карты указывает максимальный уровень масштабирования в этом месте. (Уровни масштабирования Токио обычно варьируются от 18 до 21.)
Машинопись
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;