Visão geral dos Blocos 2D

Exemplo de roteiroOs blocos do mapa são simplesmente a divisão do mundo em uma grade indexada. Com ele, é possível acessar e utilizar dados do mapa de maneira eficiente e dinâmica em várias escalas cartográficas. A API Map Tiles oferece acesso a vários conjuntos de dados geográficos temáticos, incluindo:

  • Blocos de imagens de roteiro baseados em dados topográficos vetoriais com estilo cartográfico do Google.

  • Ortofotografia capturada por câmeras aéreas e de satélite, que mostram imagens da Terra de cima para baixo (nadir).

  • Mapas de contorno da colina.

Os blocos de mapas 2D são todos georreferenciados e alinhados entre si. Eles são selecionados com base na extensão geográfica da janela de visualização e no nível de zoom. Os níveis de zoom variam de 0 (para ver o mundo por completo) a 22 (para ver ruas e blocos).

Temas de mapas

Você pode obter blocos de mapa para os seguintes temas de mapa.

Tema de mapa Descrição
Roteiro Estradas, edifícios, pontos de interesse e fronteiras políticas
Satélite Imagens fotográficas do espaço
Relevo Um mapa de contornos que mostra elementos naturais como vegetação

Para solicitar blocos de mapa da API Map Tiles, primeiro você precisa solicitar um token de sessão. Esse token rastreia o estado atual do mapa e da janela de visualização. Ao configurar seu token de sessão, defina o valor de mapType para corresponder ao tema de mapa desejado. Em seguida, inclua o token de sessão em cada uma das solicitações para a 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. Essas solicitações retornam detalhes sobre os blocos de mapa que compõem a janela de visualização atual. O motivo para solicitar informações da janela de visualização é 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, porque isso acabaria exibindo quadrados azuis incomparáveis.

A solicitação da janela de visualização é HTTPS GET no formato a seguir.

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 norte, sul, leste e oeste mais distantes na janela de visualização, expressos em graus. Norte e sul precisam estar no intervalo (-90,90), leste e oeste precisam estar no intervalo (-180, 180). Para expressar limites que cruzam o antimeridiano, oeste pode ser positivo (por exemplo, 170) e leste pode ser negativo (por exemplo, -170). Todos os 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 quais níveis de zoom. 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 contém os campos a seguir.

copyright
Contém uma string de atribuição que precisa ser mostrada no mapa quando os blocos de mapa de satélite e roteiros são mostrados. Para mais informações, consulte as Políticas da API Map Tiles.
maxZoomRect
Contém uma matriz de retângulos delimitadores que se sobrepõem à janela de visualização atual. Também contém o nível de zoom máximo disponível dentro de cada retângulo.

Funções de coordenadas de bloco

Ferramentas (funções simples) estão disponíveis na maioria das linguagens de programação para converter pares de latitude/longitude em coordenadas de bloco com um nível de zoom específico. Considere o exemplo de código JavaScript abaixo, que primeiro converte de um latLng para um ponto e depois de um ponto para as coordenadas do 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
  };
}