Служба Maximum Zoom Imagery

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
  1. Служба Maximum Zoom Imagery
  2. Запросы MaxZoom
  3. Ответы MaxZoom

Обзор

API Карт Google предоставляет для снимков типа карты фрагменты изображения с различными коэффициентами масштабирования. Например, для большинства изображений дорожных карт доступны уровни масштабирования от 0 до 18. Разница в уровнях масштабирования снимков со спутников более значительна, потому что эти изображения не генерируются, а непосредственно фотографируются.

Поскольку снимки со спутников с высоким уровнем масштабирования не всегда доступны для удаленных точек (например, для малонаселенных местностей или открытого моря), желательно заранее знать максимальный доступный уровень масштабирования для определенного места. Объект MaxZoomService предоставляет простой интерфейс, позволяющий узнать максимальный коэффициент масштабирования, для которого в Google Maps имеются снимки заданного местоположения.

Запросы MaxZoom

Доступ к MaxZoomService асинхронен, поскольку Google Maps API необходимо отправить вызов внешнему серверу. По этой причине необходимо передавать метод обратного вызова, который будет выполняться по завершении запроса. Этот метод обратного вызова должен обработать результаты.

Чтобы отправить запрос к MaxZoomService, вызовите метод getMaxZoomAtLatLng() и передайте ему координаты LatLng, а также функцию обратного вызова, которая будет выполнена по завершении запроса.

Ответы MaxZoom

Когда getMaxZoomAtLatLng() выполняет функцию обратного вызова, возвращаются два параметра:

  • status – содержит статус MaxZoomStatus запроса;
  • zoom – содержит уровень масштабирования. Если по какой-то причине запрос службы окажется неудачным, это значение будет отсутствовать.

Код status status может возвратить одно из указанных ниже значений.

  • OK обозначает, что службе удалось получить максимальный коэффициент масштабирования для снимков со спутника.
  • ERROR обозначает, что запрос MaxZoom не был обработан.

В следующем примере показана карта региональной агломерации Токио. При нажатии любой точки карты показывается максимальный уровень масштабирования для этой точки. (Уровни масштабирования в районе Токио обычно составляют от 18 до 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;
Посмотреть пример

Примеры кода