Visão geral dos Blocos 2D

Exemplo de roteiroOs blocos de mapa são simplesmente a divisão do mundo em uma grade indexada. 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 conjuntos de dados geográficos temáticos, incluindo os selecionados pelo Google:

  • Blocos de imagem do roteiro com base em dados topográficos vetoriais com o estilo cartográfico do Google.

  • Ortofotografia capturada por câmeras de satélite e aéreas que mostram 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 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 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 peça um token de sessão. O token de sessão rastreia o estado atual do mapa e da janela de visualização. Ao configurar seu token de sessão, você precisa 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 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. As solicitações de informações da janela de visualização retornam detalhes sobre os blocos do mapa que compõem sua janela atual. Você solicita informações da janela de visualização para evitar a solicitação de imagens em níveis de zoom inexistentes.

Por exemplo, a maioria das cidades tem imagens no nível de zoom 22, mas não do oceano, porque elas acabariam exibindo quadrados azuis inexistentes.

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 precisam estar no intervalo (-90,90), leste e oeste precisam estar no intervalo (-180, 180). Para expressar os limites que cruzam o antimeridiano, o oeste pode ser positivo (por exemplo, 170) e o 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 inclui os campos abaixo.

copyright
Contém uma string de atribuição que precisa ser mostrada no mapa ao mostrar blocos de mapas e satélites. 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 blocos

As 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 a seguir que primeiro converte um latLng em um ponto e depois de um ponto para 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
  };
}