Kafelki mapy to po prostu podział świata na indeksowaną siatkę. Pozwala uzyskać dostęp do danych mapy oraz ich wydajne i dynamiczne korzystanie z wielu skali kartograficznych. Interfejs Map Tiles API zapewnia dostęp do wielu tematycznych zbiorów danych geograficznych, w tym do wybranych przez Google:
Fragmenty mapy planu utworzone na podstawie danych topograficznych wektorowych ze stylem kartograficznym Google.
Ortofotografia sfotografowana zarówno z aparatów satelitarnych, jak i powietrznych, które wykonują zdjęcia Ziemi z góry (nadir).
Mapy konturu wzgórza.
Kafelki mapy 2D mają informacje georeferencyjne i są wyrównane względem siebie. Są one wybierane na podstawie zasięgu geograficznego widocznego obszaru i poziomu powiększenia. Poziomy powiększenia są w zakresie od zera (wyświetlenie całego świata) do 22 (wyświetlanie ulic i brył).
Motywy mapy
Możesz pobrać fragmenty w następujących motywach mapy.
Motyw mapy | Opis |
---|---|
Mapa drogowa | Drogi, budynki, ciekawe miejsca i granice polityczne |
Satelita | Zdjęcia wykonane z kosmosu |
Teren | Mapa konturowa pokazująca obiekty naturalne, takie jak roślinność |
Aby zażądać fragmentów mapy do interfejsu Map Tiles API, musisz najpierw zażądać tokena sesji. Token sesji śledzi bieżący stan mapy i widocznego obszaru. Podczas konfigurowania tokena sesji musisz ustawić wartość mapType
tak, aby pasowała do wybranego motywu mapy.
Potem w każdym żądaniu wysyłanym do interfejsu Map Tiles API musisz umieścić token sesji.
Prośby o informacje o widocznym obszarze
Okno robocze określa rozmiar ramki, w której otacza scenę światową. Żądania informacji o widocznym obszarze zwracają szczegóły kafelków mapy, które składają się na bieżący widoczny obszar. Pytasz o informacje o widocznym obszarze, aby uniknąć żądań zdjęć przy nieistniejącym poziomie powiększenia.
Na przykład większość miast ma zdjęcia z powiększeniem 22 stopni, ale nie pokazuje oceanu, ponieważ pojawiałyby się na nim bezrysowe niebieskie kwadraty.
Żą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 widoku.
north
,south
,east
,west
- Najdalej na północ, południe, wschód i zachodni punkt w widocznym obszarze, wyrażony w stopniach. Północ i południe muszą się mieścić w zakresie (-90,90), wschód i zachód – w zakresie (-180, 180). Aby wyznaczyć granice, które przekraczają południk, należy podać wartość zachodnią (np. 170), a wschód – ujemną (na przykład -170). Wszystkie parametry są wymagane.
Odpowiedzi dotyczące informacji o widocznym obszarze
Odpowiedź dotycząca widocznego obszaru informuje, które obszary zawierają zdjęcia i w jakim stopniu powiększenie. Odpowiedź z informacją o widocznym obszarze ma taki formularz.
{
"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 atrybucji, który musisz wyświetlić na mapie, gdy wyświetlasz plan i kafelki satelitarne. Więcej informacji znajdziesz w zasadach dotyczących interfejsu Map Tiles API.
maxZoomRect
- Zawiera tablicę ograniczonych prostokątów, które nakładają się na bieżący widoczny obszar. Określa też maksymalny poziom powiększenia dostępny w przypadku każdego prostokąta.
Funkcje współrzędnych
W większości języków programowania dostępne są narzędzia (proste funkcje) umożliwiające konwertowanie długości i szerokości geograficznej na współrzędne kafelków na określonym poziomie powiększenia.
Przyjrzyj się temu przykładowi kodu JavaScript, który najpierw konwertuje element latLng
w punkt, a następnie z punktu na współrzędne 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
};
}