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 wielu tematycznych zbiorów danych geograficznych, w tym do tych udostępnionych 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.

Fragmenty mapy 2D są georeferencjonowane i do siebie dopasowane. 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 zainteresowania 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 pasowała do wybranego motywu 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 oceanu, ponieważ wyświetlałyby się tylko niebieskie kwadraty bez żadnych elementów.

Żądanie dotyczące widoku jest żądaniem HTTPS GET o tym kształcie.

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 mają obraz i na jakim poziomie zoomu. Odpowiedź z informacjami o widoku ma taki 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
  };
}