Maksymalna usługa obrazowania w Zoomie

  1. Maksymalne powiększenie obrazu
  2. Żądania dotyczące maksymalnego powiększenia
  3. Odpowiedzi MaxZoom

Omówienie

Interfejs API Map Google udostępnia obrazy mapy w różnych poziomach powiększenia. Większość mapy drogowej jest dostępna na poziomach powiększenia 0–18. Zdjęcia satelitarne różnią się bardziej, ponieważ nie są generowane, ale bezpośrednio fotografowane.

Zdjęcia satelitarne nie zawsze są dostępne przy dużym powiększeniu w przypadku odległych lokalizacji (słabo zaludnionych obszarów lub otwartych obszarów oceanu). Dlatego warto wcześniej sprawdzić najwyższy poziom powiększenia zdjęć w danej lokalizacji. Obiekt MaxZoomService udostępnia prosty interfejs do określania maksymalnego poziomu powiększenia w danej lokalizacji, dla której Mapy Google mają obrazy satelitarne.

MaxZoom Requests

Dostęp do elementu MaxZoomService jest asynchroniczny, ponieważ interfejs API Map Google musi wykonać wywołanie do zewnętrznego serwera. Z tego powodu musisz przekazać metodę wywołania zwrotnego, która zostanie wykonana po zakończeniu przetwarzania żądania. Ta metoda wywołania zwrotnego powinna przetworzyć wynik.

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

Odpowiedzi MaxZoom

Gdy funkcja getMaxZoomAtLatLng() wykona funkcję callback, przekaże 2 parametry:

  • status zawiera MaxZoomStatusżądania.
  • zoom zawiera poziom powiększenia. Jeśli z jakiegoś powodu usługa nie powiedzie się, ta wartość nie będzie obecna.

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

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

Ten przykład pokazuje mapę Tokio. Kliknięcie dowolnego miejsca na mapie wskazuje maksymalny poziom powiększenia w tym miejscu. (poziomy powiększenia w Tokio zazwyczaj wahają się między poziomami 18 a 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 próbkę