Omówienie kart 2D

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

  • Fragmenty obrazów na mapie drogowej oparte na wektorowych danych topograficznych Google stylu kartograficznego.

  • Ortofotografia wykonywana za pomocą aparatów satelitarnych i samolotów, zdjęć Ziemi przedstawiających Ziemię z lotu ptaka (nadir).

  • Mapy konturowe cienistw górskich

Wszystkie fragmenty mapy 2D mają określone georeferencje i są wyrównane względem siebie. Zostali wybrane na podstawie położenia geograficznego widocznego obszaru i poziomu powiększenia. Poziomy powiększenia zakresu od 0 (oglądanie całego świata) do 22 (oglądanie ulic i bloki).

Tematy map

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 z Map Tiles API, musisz najpierw poprosić o token sesji. Token sesji śledzi bieżący stan mapy i widocznego obszaru. Podczas konfigurowania tokenu sesji musisz ustawić wartość mapType, aby pasowała do wybranego motywu mapy. Następnie musisz umieścić token sesji w każdym żądaniu skierowanym do Map Tiles API.

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

Widoczny obszar określa rozmiar ramki, która otacza scenę światową. Widoczny obszar żądania informacji zwracają szczegóły dotyczące fragmentów mapy, które składają się na w bieżącym widoku. Powodem, dla którego prosisz o informacje o widocznym obszarze, jest to, uniknąć wysyłania żądań zdjęć przy nieistniejących poziomach powiększenia.

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 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
Najdalej wysunięte na północ, południe, wschód i zachód 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). Do określenia granic przez południk 180° dodatnia (na przykład 170), a wschód może być liczbą ujemną (na przykład -170). Wszystkie parametry są wymagane.

Odpowiedzi dotyczące widocznego obszaru

Odpowiedź w widocznym obszarze informuje, które obszary zawierają zdjęcia i które przybliżenie poziomów. 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 dotyczący atrybucji, który musisz wyświetlić na swojej mapie, gdy aby wyświetlić plan i kafelki z satelitów. Więcej informacji: Zasady interfejsu Map Tiles API
maxZoomRect
Zawiera tablicę prostokątów ograniczających, które nakładają się na bieżącą widoczny obszar. Zawiera też maksymalny poziom powiększenia dostępny w każdym prostokącie.

Funkcje współrzędnych kafelków

Narzędzia (proste funkcje) dostępne w większości języków programowania umożliwiają konwersję par szerokości i długości geograficznej na współrzędne płytki na określonym poziomie powiększenia. Przyjrzyjmy się temu przykładowemu kodowi JavaScript, który najpierw konwertuje z latLng do punktu, a potem od punktu do współrzędnych 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
  };
}