Fragmenty mapy to po prostu podział świata na siatkę indeksowaną. Umożliwia ona dynamiczny i wydajny dostęp do danych mapy 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.
Fragmenty mapy 2D są georeferencjonowane i wyrównane względem siebie. 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).
Motywy mapy
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 interfejsu 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
zgodnie z wybranym motywem 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. Informacje o widoku przesyłasz, aby uniknąć żą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 dotyczy to oceanu, 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 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). 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 powiększeniu. 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
};
}