Fragmenty mapy to po prostu podział świata na zindeksowane siatkę. 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 wiele tematycznych zbiorów danych geograficznych, w tym przygotowanych 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).
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ć fragmentów mapy z interfejsu Map Tiles API, musisz najpierw wysłać żądanie
token sesji. Token sesji
śledzi bieżący stan mapy i widocznego obszaru. Podczas konfigurowania sesji
musisz ustawić wartość mapType
tak, 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, aby uniknąć wysyłania żądań zdjęć przy nieistniejących poziomach powiększenia.
Na przykład większość miast ma zdjęcia w powiększeniu 22, ale nie oceany wyświetlane będą po prostu niebieskie kwadraty bez cech.
Żą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 punktów widocznego obszaru, wyrażone w stopni. Północ i południe muszą się mieścić w zakresie (-90,90), wschód i zachód muszą być w zakresie zakres (-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 .
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) są dostępne w większości języków programowania do konwersji.
od szerokości i długości geograficznej po współrzędne mapy.
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
};
}