Omówienie kart 2D

Przykład harmonogramuFragmenty mapy to po prostu podział świata na siatkę indeksowaną. Umożliwia ona efektywne i dynamiczne uzyskiwanie dostępu do danych mapy oraz ich wykorzystywanie w różnych skalach kartograficznych. Interfejs Map Tiles API zapewnia dostęp do licznych tematycznych zbiorów danych geograficznych, w tym do tych sporządzonych przez Google:

  • Płytki mapy drogowej oparte na wektorowych danych topograficznych ze stylizacją kartograficzną Google.

  • ortofotografia wykonana zarówno za pomocą kamer satelitarnych, jak i lotniczych, które dostarczają zdjęć Ziemi z lotu ptaka (z nadiru).

  • mapy z konturem cieniowania wypukłego.

Wszystkie fragmenty mapy 2D są powiązane z geografią i zgodne ze sobą. Są one wybierane na podstawie geograficznego zasięgu widocznego obszaru i poziomu powiększenia. Poziomy powiększenia sięgają od 0 (aby zobaczyć cały świat) do 22 (aby zobaczyć ulice i bloki).

Tematy map

Płytki mapy możesz pobrać dla tych motywów mapy.

Motyw mapy Opis
Plan działania drogi, budynki, punkty orientacyjne i granice polityczne;
Satelita zdjęcia wykonane z poziomu kosmosu,
Teren mapa konturowa, która pokazuje elementy naturalne, takie jak roślinność;

Aby zażądać kafelków mapy z Map Tiles API, musisz najpierw poprosić o token sesji. Token sesji śledzi bieżący stan mapy i widoku. Podczas konfigurowania tokenu sesji musisz ustawić wartość mapType, aby odpowiadała wybranemu przez Ciebie motywowi mapy. Następnie musisz dołączyć token sesji do każdego żądania wysyłanego do Map Tiles API.

Prośby o informacje dotyczące widocznego obszaru

Widok określa rozmiar pola, które obramowuje scenę świata. Prośby o informacje dotyczące widoku zwracają szczegóły dotyczące elementów mapy, które tworzą bieżący widok. Pobieranie informacji o widoku ma na celu uniknięcie żądania obrazów w poziomach powiększenia, które nie istnieją.

Na przykład większość miast ma zdjęcia na poziomie powiększenia 22, ale nie ma ich ocean, ponieważ wyświetlałyby się tylko niebieskie kwadraty bez żadnych elementów.

Żądanie dotyczące widoku jest żądaniem HTTPS GET o takim formacie.

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
Najdalej na północ, południe, wschód i zachód wysunięte punkty w widoku, wyrażone w stopniach. Północ i południe muszą mieścić się w zakresie (-90,90), a wschód i zachód – w zakresie (-180, 180). Aby wyrazić granice przecinające antymeridian, zachód może być dodatni (np. 170), a wschód – ujemny (np. –170). Wszystkie parametry są wymagane.

Odpowiedzi na pytania dotyczące widocznego obszaru

Odpowiedź z Viewport informuje, które obszary zawierają obrazy i przy jakim poziomie powiększenia. Odpowiedź z informacjami o widoku ma następujący format.

{
  "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 te pola:

copyright
Zawiera ciąg znaków, który musisz wyświetlić na mapie, gdy wyświetlasz mapę drogową i płytki satelitarne. Więcej informacji znajdziesz w zasadach dotyczących Map Tiles API.
maxZoomRect
Zawiera tablicę prostokątów ograniczających, które nakładają się na bieżący widok. Zawiera też maksymalny poziom powiększenia dostępny w każdym prostokącie.

Funkcje współrzędnych mapy

Większość języków programowania udostępnia narzędzia (proste funkcje) do konwertowania par szerokości i długości geograficznej na współrzędne płytek na określonym poziomie powiększenia. Rozważ ten przykład kodu JavaScript, który najpierw konwertuje obiekt latLng na punkt, a potem punkt na współrzędne płytki.

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
  };
}