Os blocos de mapa são simplesmente a divisão do mundo em um formato
rede. Ele permite acessar e utilizar dados do mapa de maneira eficiente e dinâmica
em várias escalas cartográficas. A API Map Tiles dá acesso a
vários geoconjuntos de dados temáticos, incluindo dados selecionados pelo Google:
Blocos de imagem do roteiro com base em dados topográficos vetoriais com o estilização cartográfica.
Ortofotografia capturada por câmeras de satélite e aéreas que fornecem imagens de cima para baixo (nadir) da Terra.
Mapas de contorno de sombras.
Os blocos de mapas 2D são todos georreferenciados e alinhados entre si. Eles foram selecionados com base na extensão geográfica da janela de visualização e no nível de zoom. Níveis de zoom variam de zero (para visualizar o mundo inteiro) a 22 (para visualizar ruas e blocos).
Temas de mapas
É possível ter blocos de mapas para os seguintes temas de mapa.
Tema do mapa | Descrição |
---|---|
Roteiro | vias, edifícios, pontos de interesse e fronteiras políticas |
Satélite | Imagens fotográficas tiradas do espaço |
Terreno | Um mapa de contorno que mostra características naturais, como vegetação |
Para solicitar blocos de mapa da API Map Tiles, primeiro é necessário solicitar um
token de sessão. O token de sessão
acompanha o estado atual do mapa e da janela de visualização. Quando você configurar sua sessão
é necessário definir o valor mapType
para corresponder ao tema do mapa que você quer.
Em seguida, inclua o token de sessão em cada uma das solicitações para
API Map Tiles.
Solicitações de informações da janela de visualização
A janela de visualização define o tamanho da caixa que enquadra a cena mundial. Janela de visualização As solicitações de informação retornam detalhes sobre os blocos de mapa que compõem o janela de visualização atual. O motivo pelo qual você solicita informações da janela de visualização é garantir para evitar a solicitação de imagens em níveis de zoom que não existem.
Por exemplo, a maioria das cidades tem imagens no nível de zoom 22, mas não do oceano, já que ela acabaria exibindo quadrados azuis sem atributos.
A solicitação da janela de visualização é uma solicitação HTTPS GET no seguinte formato.
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"
A solicitação contém os seguintes campos:
zoom
- O nível de zoom da janela de visualização.
north
,south
,east
,west
- Os pontos mais distantes ao norte, sul, leste e oeste na janela de visualização, expressos em graus. Norte e sul devem estar no intervalo (-90,90), leste e oeste devem estar no o intervalo (-180, 180). Para expressar os limites que cruzam o antimeridiano, oeste pode ser positivo (por exemplo, 170) e leste pode ser negativo (por exemplo, -170). Todos parâmetros são obrigatórios.
Respostas de informações da janela de visualização
A resposta da janela de visualização informa quais áreas têm imagens e em qual zoom níveis Uma resposta de informações da janela de visualização tem o seguinte formato:
{
"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
}, ...
]
}
O corpo da resposta inclui os campos abaixo.
copyright
- Contém uma string de atribuição que você precisa exibir no mapa quando exibir blocos de mapas e satélites. Para mais informações, consulte a Políticas da API Map Tiles.
maxZoomRect
- Contém uma matriz de retângulos delimitadores que se sobrepõem à janela de visualização. Também contém o nível de zoom máximo disponível dentro de cada retângulo.
Funções de coordenadas de blocos
Ferramentas (funções simples) estão disponíveis na maioria das linguagens de programação para converter
desde pares de latitude/longitude a coordenadas de bloco em um nível de zoom específico.
Considere o seguinte exemplo de código JavaScript que primeiro converte de uma
latLng
a um ponto e, depois, de um ponto para as coordenadas de bloco.
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
};
}