Sterowanie powiększaniem i przesuwaniem

Wybierz platformę: Android iOS JavaScript

Omówienie

Korzystanie z mapy na stronie internetowej może wymagać określonych opcji umożliwiających kontrolowanie sposobu, w jaki użytkownicy będą mogli ją powiększać i przesuwać. Te opcje, takie jak gestureHandling, minZoom, maxZoomrestriction, są zdefiniowane w interfejsie MapOptions.

Domyślne zachowanie

Poniższa mapa pokazuje domyślne zachowanie interakcji z mapą, która została uruchomiona z definiowanymi tylko opcjami zoomcenter.

Kod tej mapy znajdziesz poniżej.

TypeScript

new google.maps.Map(document.getElementById("map")!, {
  zoom,
  center,
});

JavaScript

new google.maps.Map(document.getElementById("map"), {
  zoom,
  center,
});

Kontrolowanie obsługi gestów

Gdy użytkownik przewija stronę zawierającą mapę, może to spowodować niezamierzone powiększenie mapy. Tego zachowania można kontrolować za pomocą opcji mapy gestureHandling.

gestureHandling: cooperative

Na mapie poniżej opcja gestureHandling jest ustawiona na cooperative, co pozwala użytkownikowi na normalne przewijanie strony bez powiększania lub przesuwania mapy. Użytkownicy mogą powiększać mapę, klikając elementy sterujące. Mogą też powiększać i przesuwać mapę, używając 2 palców na ekranie dotykowym.

Kod tej mapy znajdziesz poniżej.

TypeScript

new google.maps.Map(document.getElementById("map")!, {
  zoom,
  center,
  gestureHandling: "cooperative",
});

JavaScript

new google.maps.Map(document.getElementById("map"), {
  zoom,
  center,
  gestureHandling: "cooperative",
});

Zobacz przykład

gestureHandling: auto

Mapa u góry strony bez opcji gestureHandling zachowuje się tak samo jak poprzednia mapa z opcją gestureHandling ustawioną na cooperative, ponieważ wszystkie mapy na tej stronie znajdują się w ramach <iframe>. Domyślna wartość gestureHandling auto przełącza się między greedycooperative w zależności od tego, czy mapa jest zawarta w <iframe>.

Mapa zawarta w <iframe> Zachowanie
tak cooperative
nie greedy

gestureHandling: greedy

Poniżej znajduje się mapa z wartością greedy parametru gestureHandling. W przeciwieństwie do cooperative ta mapa reaguje na wszystkie gesty dotykowe i zdarzenia przewijania.

gestureHandling: none

Opcję gestureHandling można też ustawić na none, aby wyłączyć gesty na mapie.

Wyłączanie przesuwania i powiększania

Aby całkowicie wyłączyć możliwość przesuwania i powiększania mapy, musisz uwzględnić 2 opcje: gestureHandlingzoomControl.

TypeScript

new google.maps.Map(document.getElementById("map")!, {
  zoom,
  center,
  gestureHandling: "none",
  zoomControl: false,
});

JavaScript

new google.maps.Map(document.getElementById("map"), {
  zoom,
  center,
  gestureHandling: "none",
  zoomControl: false,
});

Mapa poniżej pokazuje połączenie gestureHandlingzoomControl w powyższym kodzie.

Ograniczanie granic i powiększenia mapy

Możesz na przykład zezwolić na gesty i sterowanie powiększeniem, ale ograniczyć mapę do określonych granic lub do minimalnego i maksymalnego powiększenia. Aby to zrobić, możesz ustawić opcje restriction, minZoom i maxZoom. Poniżej znajdziesz kod i mapę, które pokazują te opcje.

TypeScript

new google.maps.Map(document.getElementById("map")!, {
  zoom,
  center,
  minZoom: zoom - 3,
  maxZoom: zoom + 3,
  restriction: {
    latLngBounds: {
      north: -10,
      south: -40,
      east: 160,
      west: 100,
    },
  },
});

JavaScript

new google.maps.Map(document.getElementById("map"), {
  zoom,
  center,
  minZoom: zoom - 3,
  maxZoom: zoom + 3,
  restriction: {
    latLngBounds: {
      north: -10,
      south: -40,
      east: 160,
      west: 100,
    },
  },
});