Сервис Maximum Zoom Imagery

  1. Изображение с максимальным увеличением
  2. Запросы MaxZoom
  3. MaxZoom Ответы

Обзор

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;
Посмотреть пример

Попробуйте образец