Maksymalna liczba zdjęć w powiększeniu

  1. Maksymalne powiększenie
  2. Maksymalna liczba żądań Zoom
  3. Odpowiedzi MaxZoom

Opis

Interfejs API Map Google udostępnia elementy mapy na różnych poziomach powiększenia w przypadku zdjęć typu. Na przykład większość zdjęć z planu działań jest dostępna z poziomu powiększenia od 0 do 18. Zdjęcia satelitarne różnią się znacznie bardziej, ponieważ nie są one generowane, a fotografowane bezpośrednio.

Zdjęcia satelitarne nie zawsze są dostępne z dużym powiększeniem w odległych lokalizacjach (obszarach słabo zaludnionych lub otwartych) – dlatego warto wcześniej poznać maksymalny poziom powiększenia zdjęć danej lokalizacji. Obiekt MaxZoomService udostępnia prosty interfejs do wykrycia maksymalnego poziomu powiększenia w danej lokalizacji, w której Mapy Google zawierają zdjęcia satelitarne.

Żądania MaxZoom

Dostęp do obiektu MaxZoomService jest asynchroniczny, ponieważ interfejs API Map Google musi wywoływać serwer zewnętrzny. Dlatego musisz przekazać metodę wywołania zwrotnego, która zostanie wykonana po zakończeniu żądania. Ta metoda wywołania zwrotnego powinna przetworzyć wynik.

Aby zainicjować żądanie do MaxZoomService, wywołaj getMaxZoomAtLatLng(), przekazując kod LatLng lokalizacji oraz funkcję wywołania zwrotnego, która zostanie wykonana po jego zakończeniu.

Odpowiedzi MaxZoom

Gdy getMaxZoomAtLatLng() wykona funkcję wywołania zwrotnego, zwróci 2 parametry:

  • status zawiera MaxZoomStatus żądania.
  • zoom określa poziom powiększenia. Jeśli z jakiegoś powodu usługa ulegnie awarii, ta wartość nie będzie dostępna.

Kod status może zwracać jedną z tych wartości:

  • OK wskazuje, że usługa znalazła maksymalny poziom powiększenia zdjęć satelitarnych.
  • ERROR wskazuje, że nie udało się przetworzyć żądania MaxZoom.

Poniższy przykład pokazuje mapę metropolii Tokio. Kliknięcie w dowolnym miejscu mapy wskazuje maksymalny poziom powiększenia w danej lokalizacji. (Poziomy powiększenia w Tokio zasadniczo różnią się w zależności od poziomu powiększenia od 18 do 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;
Zobacz przykład

Wypróbuj fragment