Servicio de imágenes con zoom máximo

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.
  1. Imágenes con zoom máximo
  2. Solicitudes de MaxZoom
  3. Respuestas de MaxZoom

Descripción general

La API de Google Maps proporciona mosaicos de mapas a varios niveles de zoom para imágenes de tipos de mapas. Por ejemplo, la mayoría de las imágenes de mapas de ruta están disponibles en los niveles de zoom 0 a 18. Las imágenes satelitales varían mucho, ya que no se generan, sino que se capturan directamente.

Debido a que las imágenes satelitales no siempre están disponibles a altos niveles de zoom para ubicaciones remotas (áreas de población dispersa o áreas oceánicas abiertas), te recomendamos conocer de antemano el nivel de zoom más alto para las imágenes en una ubicación determinada. El objeto MaxZoomService proporciona una interfaz simple para descubrir el nivel de zoom máximo de una ubicación determinada para la cual Google Maps tiene imágenes satelitales.

Solicitudes de MaxZoom

El acceso a MaxZoomService es asíncrono, ya que la API de Google Maps debe realizar una llamada a un servidor externo. Por ese motivo, debes pasar un método callback para ejecutar cuando se completa la solicitud. Este método de devolución de llamada debe procesar el resultado.

Para iniciar una solicitud a MaxZoomService, llama a getMaxZoomAtLatLng() y pasa el LatLng de la ubicación y una función de devolución de llamada que se ejecutará una vez completada la solicitud.

Respuestas de MaxZoom

Cuando getMaxZoomAtLatLng() ejecute la función de devolución de llamada, transmitirá dos parámetros:

  • status contiene el MaxZoomStatus de la solicitud.
  • zoom contiene el nivel de zoom. Si, por algún motivo, el servicio falla, este valor no estará presente.

El código status puede mostrar uno de los siguientes valores:

  • OK indica que el servicio encontró el nivel de zoom máximo para imágenes satelitales.
  • ERROR indica que no se pudo procesar la solicitud de MaxZoom.

En el ejemplo siguiente se muestra un mapa del área metropolitana de Tokio: Al hacer clic en cualquier parte del mapa, se indica el nivel de zoom máximo de esa ubicación. (Los niveles de zoom en Tokio generalmente varían entre 18 y 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 ejemplo

Probar la muestra