Omówienie kart 2D

Przykład planu działaniaFragmenty mapy to po prostu podział świata na indeksowaną siatkę. Umożliwia skuteczny i dynamiczny dostęp do danych map oraz ich wykorzystanie w wielu skalach kartograficznych. Interfejs Map Tiles API zapewnia dostęp do wielu tematycznych zbiorów danych geodata, w tym wybranych przez Google:

  • Fragmenty obrazów mapy drogowej oparte na wektorowych danych topograficznych ze stylem kartograficznym Google.

  • Ortofotografia wykonywana przez aparaty satelitarne i powietrzne, które przedstawiają Ziemię z widokiem pionowym (nadir).

  • Mapy konturowe cienistw górskich

Wszystkie fragmenty mapy 2D mają określone georeferencje i są wyrównane względem siebie. Są dobierane na podstawie geograficznego zasięgu widocznego obszaru i poziomu powiększenia. Poziomy powiększenia mieszczą się w zakresie od 0 (aby zobaczyć cały świat) do 22 (aby zobaczyć ulice i bryły).

Motywy mapy

Możesz pobrać kafelki dla poniższych motywów mapy.

Motyw mapy Opis
Plan Drogi, budynki, ciekawe miejsca i granice polityczne
Satelita zdjęcia kosmiczne zrobione,
Teren Mapa konturowa pokazująca obiekty naturalne, takie jak roślinność

Aby zażądać kafelków mapy za pomocą interfejsu Map Tiles API, musisz najpierw poprosić o token sesji. Token sesji śledzi bieżący stan mapy i widocznego obszaru. Podczas konfigurowania tokena sesji musisz ustawić wartość mapType tak, aby pasowała do wybranego motywu mapy. Następnie musisz umieścić token sesji w każdym żądaniu do interfejsu Map Tiles API.

Prośby o dostęp do informacji o widocznym obszarze

Widoczny obszar określa rozmiar ramki, która otacza scenę światową. Żądania dotyczące informacji o widocznym obszarze zwracają szczegółowe informacje o kafelkach mapy, które składają się na bieżący widoczny obszar. Musisz prosić o informacje o widocznym obszarze, aby uniknąć żądania zdjęć w nieistniejących poziomach powiększenia.

Na przykład większość miast robi zdjęcia w powiększeniu 22, ale nie z oceanu, ponieważ w ten sposób wyświetlają się po prostu niebieskie kwadraty.

Żądanie widocznego obszaru to żądanie HTTPS GET w poniższym formularzu.

curl "https://tile.googleapis.com/tile/v1/viewport?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&zoom=zoom&north=north&south=south&east=east&west=west"

Prośba zawiera te pola:

zoom
Poziom powiększenia widocznego obszaru.
north, south, east, west
Najbardziej wysunięte na północ, południe, wschód i zachód punktu widocznego obszaru wyrażone w stopniach. Północ i południe muszą się mieścić w zakresie (-90,90), wschód i zachód muszą się mieścić w zakresie (-180, 180). Aby wyznaczyć granice przecinające południk południowy, zachód może mieć wartość dodatnią (np. 170), a wschód – wartość ujemną (np. -170). Wymagane są wszystkie parametry.

Odpowiedzi dotyczące widocznego obszaru

Odpowiedź pokazuje, które obszary zawierają zdjęcia i przy jakim poziomie powiększenia. Odpowiedź z informacjami o widocznym obszarze ma postać:

{
  "copyright": "Map data ©2023",
  "maxZoomRects": [
    {
      "maxZoom": 19,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 9,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 14,
      "north": 84.375,
      "south": -84.375,
      "east": 180,
      "west": -180
    }, ...
  ]
}

Treść odpowiedzi zawiera poniższe pola.

copyright
Zawiera ciąg znaków z informacjami o atrybucji, który musisz wyświetlić na mapie, gdy wyświetlasz plan działania i kafelki satelitarne. Więcej informacji znajdziesz w zasadach dotyczących interfejsu API Map Tiles.
maxZoomRect
Zawiera tablicę prostokątów ograniczających, które nakładają się na bieżący widoczny obszar. Zawiera też maksymalny poziom powiększenia dostępny w każdym prostokącie.

Funkcje współrzędnych kafelków

W większości języków programowania dostępne są narzędzia (proste funkcje) służące do konwersji z par szerokości i długości geograficznej na współrzędne kafelków na określonym poziomie powiększenia. Przyjrzyjmy się temu przykładowi kodu JavaScript, który najpierw konwertuje z latLng na punkt, a następnie z punktu na współrzędne kafelka.

var TILE_SIZE = 256;

function fromLatLngToPoint(latLng) {
  var mercator = -Math.log(Math.tan((0.25 + latLng.lat() / 360) * Math.PI));
  return {
    x: TILE_SIZE * (latLng.lng() / 360 + 0.5),
    y: TILE_SIZE / 2 * (1 +  mercator / Math.PI)
  };
}

function fromLatLngToTileCoord(latLng, zoom) {
  var point = fromLatLngToPoint(latLng);
  var scale = Math.pow(2, zoom);

  return {
    x: Math.floor(point.x * scale / TILE_SIZE),
    y: Math.floor(point.y * scale / TILE_SIZE),
    z: zoom
  };
}