Serviços de imagens com zoom máximo

  1. Imagens de zoom máximas
  2. Solicitações de MaxZoom
  3. Respostas de MaxZoom

Visão geral

A API Google Maps oferece blocos de mapas em vários níveis de zoom para imagens de tipos de mapa. A maioria das imagens de roteiro está disponível, por exemplo, dos níveis de zoom 0 a 18. As imagens de satélite variam muito, porque elas não são geradas, mas fotografadas diretamente.

Como as imagens de satélite nem sempre estão disponíveis em níveis altos de zoom para locais remotos, áreas esparsas ou áreas abertas, talvez você queira saber com antecedência o nível de zoom mais alto para imagens em um determinado local. O objeto MaxZoomService fornece uma interface simples para descobrir o nível de zoom máximo em um determinado local do qual o Google Maps tenha imagens de satélite.

Solicitações de MaxZoom

O acesso ao MaxZoomService é assíncrono, já que a API Google Maps precisa fazer uma chamada para um servidor externo. Por esse motivo, é necessário transmitir um método de callback para ser executado após a conclusão da solicitação. Esse método de callback precisa processar o resultado.

Para iniciar uma solicitação para MaxZoomService, chame getMaxZoomAtLatLng(), transmitindo o LatLng do local e uma função de callback a ser executada após a conclusão da solicitação.

Respostas de MaxZoom

Quando getMaxZoomAtLatLng() executar a função de callback, ele retornará dois parâmetros:

  • status contém o MaxZoomStatus da solicitação.
  • zoom contém o nível de zoom. Se, por algum motivo, o serviço falhar, esse valor não estará presente.

O código status pode retornar um dos seguintes valores:

  • OK indica que o serviço encontrou o nível de zoom máximo para imagens de satélite.
  • ERROR indica que não foi possível processar a solicitação MaxZoom.

O exemplo abaixo mostra um mapa metropolitano de Tóquio. Clicar em qualquer lugar no mapa indica o nível de zoom máximo nesse local. Os níveis de zoom ao redor de Tóquio geralmente variam entre os níveis de zoom 18 e 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,
    (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;
Ver exemplo

Testar amostra