A API Maps Tools Resolution faz parte do Grounding Lite do Maps. Ele fornece endpoints em lote que resolvem nomes de locais e URLs do Google Maps para IDs de lugares do Google Maps. Você pode usar os IDs de lugar retornados com outras APIs da Plataforma Google Maps. Cada resposta também inclui um link que salva os lugares resolvidos como uma lista no Google Maps.
A API Resolution está disponível como métodos REST e como ferramentas no servidor MCP do Maps Grounding Lite:
| Capacidade | Método REST | Ferramenta MCP |
|---|---|---|
| Resolver nomes ou endereços de locais para lugares | resolveNames |
resolve_names |
| Resolver URLs do Google Maps para lugares | resolveMapsUrls |
resolve_maps_urls |
Antes de começar
Para usar a API Resolution, você precisa de um projeto na nuvem do Google Cloud com o faturamento ativado e o serviço da API Maps Grounding Lite ativado. Para instruções, consulte Ativar o serviço Maps Grounding Lite no projeto do Google Cloud.
Acesso e autenticação da API
A API Resolution é compatível com chaves de API e credenciais do OAuth 2.0.
Chave de API
É possível autenticar solicitações transmitindo uma chave de API válida da Plataforma Google Maps
no cabeçalho X-Goog-Api-Key ou anexando-a ao URL da solicitação:
https://mapstools.googleapis.com/v1:resolveNames?key=API_KEY
Nos exemplos desta página, substitua API_KEY pela sua chave de API.
Escopos do OAuth 2.0
Se você usa a autorização OAuth, o seguinte escopo é compatível:
https://www.googleapis.com/auth/maps-platform.mapstools
Limites de uso
As seguintes cotas padrão se aplicam à API Resolution:
- ResolveNames: 600 consultas por minuto e por projeto.
- ResolveMapsUrls: 600 consultas por minuto, por projeto.
- Tamanho do lote: até 20 consultas ou URLs por solicitação.
Cada solicitação conta como uma consulta, não importa quantos itens ela contenha.
Preços
As solicitações para ResolveNames e ResolveMapsUrls são faturadas sem custo financeiro (US$ 0) no SKU API Places: Text Search Fundamentos da Pesquisa (somente IDs). Assim como no restante do Maps Grounding Lite, seu projeto precisa ter uma conta de faturamento.
Validação e restrições de solicitações
Para evitar carga excessiva e garantir tempos de resposta rápidos, as solicitações em lote são validadas de forma rigorosa:
- Limite de tamanho do lote: os dois métodos permitem um máximo de 20 itens por solicitação.
- Requisitos do ResolveNames:
- Cada item em
queriesprecisa especificar um parâmetrotextnão vazio. - As consultas precisam representar um nome ou endereço específico (por exemplo, "Googleplex, Mountain View, CA" ou "Torre Eiffel, Paris").
- Pesquisas categóricas gerais (por exemplo, "restaurantes em São Paulo") ou nomes de redes genéricas sem um local (por exemplo, "Starbucks") não são compatíveis e podem não ser resolvidas.
- Cada item em
- Requisitos do ResolveMapsUrls:
- Cada URL precisa ser um URL do Google Maps estruturalmente válido.
- Formatos compatíveis:
- URL padrão do lugar:
https://www.google.com/maps/place/... - URL abreviado:
https://maps.app.goo.gl/...
- URL padrão do lugar:
- URLs gerais do Maps baseados em consultas (por exemplo,
https://maps.google.com/?q=restaurant) e URLs que não apontam para um único lugar exclusivo não são aceitos.
Salvar lugares resolvidos no Google Maps
Se pelo menos um item em um lote for resolvido, a resposta vai incluir um campo saveToMapsUrl. Este é um único link do Maps que contém todos os lugares resolvidos com sucesso no lote. Apresente esse link aos usuários que
querem salvar, compartilhar ou abrir os lugares resolvidos como uma lista no Google Maps.
Sempre use o link retornado pela API. Não crie o link por conta própria. Se nenhum item no lote for resolvido, a resposta não vai incluir saveToMapsUrl.
Processar erros parciais
Ambos os métodos são processadores em lote. Se alguns itens em um lote não forem resolvidos, a solicitação geral não vai falhar com um erro de nível superior. Em vez disso, a API retorna uma resposta de sucesso parcial, e você precisa verificar a resposta para falhas por item.
Interpretar a resposta
- Alinhamento garantido de 1:1: a lista
resultsretornada (paraResolveNames) ouentities(paraResolveMapsUrls) mapeia 1:1 com a lista de entrada, por índice. - Elementos vazios para falhas: se o item no índice
inão for resolvido, a lista de resultados vai conter um objeto vazio{}no índicei. - Mapa
failedRequests: a resposta contém um mapafailedRequests.- A chave é o índice de base zero do item com falha (representado como uma string em JSON).
- O valor é um objeto
google.rpc.Statusque contém o código do erro e uma mensagem explicando por que o item falhou.
saveToMapsUrlabrange apenas sucessos: o linksaveToMapsUrlinclui apenas os itens resolvidos. Os itens com falha não são incluídos.
Não presuma que todo o lote falhou porque um item falhou. Sempre verifique
failedRequests para saber quais itens, se houver, não puderam ser resolvidos.
Erros por item
A tabela a seguir lista os erros por item que podem aparecer em
failedRequests:
| Método | Causa | Código | Mensagem |
|---|---|---|---|
ResolveNames |
O nome ou endereço não pode ser resolvido para um lugar. | 5 (NOT_FOUND) |
Place not found. |
ResolveMapsUrls |
Não é possível resolver o URL para um lugar. | 3 (INVALID_ARGUMENT) |
Failed to resolve Maps URL to a place. |
| Ambos os métodos | Ocorreu um erro interno ao resolver o item. | 13 (INTERNAL) |
Internal server error. Please retry. If the problem persists, please open a support case. https://goo.gle/maps-platform-support |
Tente novamente apenas os itens que falharam com INTERNAL.
Falhas de nível superior
A API retorna um erro de nível superior em vez de uma resposta parcial nos seguintes casos:
- Solicitação inválida (
400 INVALID_ARGUMENT): a solicitação contém mais de 20 itens, uma solicitaçãoResolveNamesnão tem consultas ou tem uma consulta com um valortextvazio, ou uma solicitaçãoResolveMapsUrlstem um URL vazio ou que não é sintaticamente válido. Um item inválido faz com que toda a solicitação falhe. - Erros de autenticação, permissão ou cota: por exemplo, a chave de API está ausente ou é inválida, ou a solicitação excede os limites de uso.
- Erros de servidor (
500 INTERNAL): tente fazer a solicitação de novo.
Usar a API Resolution com o MCP
O servidor MCP do Maps Grounding Lite em https://mapstools.googleapis.com/mcp
expõe a API Resolution como duas ferramentas:
resolve_names: resolve um lote de nomes ou endereços de locais para IDs de lugar.resolve_maps_urls: resolve um lote de URLs do Google Maps para IDs de lugar.
Quando você configura seu LLM para usar o servidor MCP do Maps Grounding Lite, essas ferramentas ficam disponíveis junto com as outras ferramentas do Maps Grounding Lite. As ferramentas aceitam as mesmas entradas, aplicam as mesmas restrições e retornam a mesma resposta de falha parcial que os métodos REST.
As respostas da ferramenta incluem o campo save_to_maps_url. As descrições das ferramentas
instruem o LLM a apresentar esse link quando o usuário quiser salvar, compartilhar ou
abrir os lugares resolvidos como uma lista no Google Maps, em vez de construir um
link por conta própria.
O exemplo a seguir usa curl para chamar a ferramenta resolve_names diretamente:
curl --location 'https://mapstools.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--header 'X-Goog-Api-Key: API_KEY' \
--data '{
"method": "tools/call",
"params": {
"name": "resolve_names",
"arguments": {
"queries": [
{ "text": "Googleplex, Mountain View, CA" },
{ "text": "Eiffel Tower, Paris" }
]
}
},
"jsonrpc": "2.0",
"id": 1
}'
Para chamar resolve_maps_urls, defina name como resolve_maps_urls e transmita uma matriz urls em arguments.
Especificação da API REST e exemplos de cURL
ResolveNames
Método: POST
https://mapstools.googleapis.com/v1:resolveNames
Formato do corpo da solicitação
{
"queries": [
{ "text": "string" }
],
"locationBias": {
"viewport": {
"low": { "latitude": number, "longitude": number },
"high": { "latitude": number, "longitude": number }
}
},
"regionCode": "string"
}
queries(obrigatório): lista repetida de consultas a serem resolvidas (máximo de 20).locationBias(opcional): caixa delimitadora da janela de visualização para direcionar os resultados a uma região local.regionCode(opcional): código do país CLDR (por exemplo, "US" ou "FR") para influenciar os resultados.
Exemplo de curl: resolução bem-sucedida
Essa consulta resolve "Googleplex" e "Torre Eiffel".
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"queries": [
{ "text": "Googleplex, Mountain View, CA" },
{ "text": "Eiffel Tower, Paris" }
]
}' \
"https://mapstools.googleapis.com/v1:resolveNames?key=API_KEY"
Resposta JSON
{
"results": [
{
"entity": {
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
},
"confidence": "HIGH"
},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
],
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJj61dQgK6j4AR4GeTYWZsKWw,ChIJLU7jZClu5kcR4PcOOO6p3I0"
}
Exemplo de curl: resultados mistos (falha parcial)
Neste exemplo, o primeiro item é um texto que não pode ser resolvido, e o segundo item é um lugar válido.
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"queries": [
{ "text": "This is not a real place name at all 123456789" },
{ "text": "Eiffel Tower, Paris" }
]
}' \
"https://mapstools.googleapis.com/v1:resolveNames?key=API_KEY"
Resposta JSON
{
"results": [
{},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
],
"failedRequests": {
"0": {
"code": 5,
"message": "Place not found."
}
},
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJLU7jZClu5kcR4PcOOO6p3I0"
}
ResolveMapsUrls
Método: POST
https://mapstools.googleapis.com/v1:resolveMapsUrls
Formato do corpo da solicitação
{
"urls": [
"string"
]
}
urls(obrigatório): lista repetida de strings de URL do Google Maps a serem resolvidas (máximo de 20).
Exemplo de curl: resolução bem-sucedida
O exemplo a seguir resolve um URL de lugar padrão do Google Maps:
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba02425dad8f:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6"
]
}' \
"https://mapstools.googleapis.com/v1:resolveMapsUrls?key=API_KEY"
Resposta JSON
{
"entities": [
{
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
}
],
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJj61dQgK6j4AR4GeTYWZsKWw"
}
Exemplo de curl: resultados mistos (falha parcial)
O exemplo a seguir resolve um URL de lugar válido e um URL que não pode ser resolvido como um lugar:
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba02425dad8f:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6",
"https://www.google.com/not-a-place"
]
}' \
"https://mapstools.googleapis.com/v1:resolveMapsUrls?key=API_KEY"
Resposta JSON
{
"entities": [
{
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
},
{}
],
"failedRequests": {
"1": {
"code": 3,
"message": "Failed to resolve Maps URL to a place."
}
},
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJj61dQgK6j4AR4GeTYWZsKWw"
}
Exemplo de curl: falha na validação
O exemplo a seguir transmite mais de 20 URLs em uma única solicitação:
python3 -c 'import json; print(json.dumps({"urls": ["https://www.google.com/maps/place/Googleplex"] * 21}))' | \
curl -X POST \
-H "Content-Type: application/json" \
-d @- \
"https://mapstools.googleapis.com/v1:resolveMapsUrls?key=API_KEY"
Resposta JSON
{
"error": {
"code": 400,
"message": "Request contains more than 20 URLs.",
"status": "INVALID_ARGUMENT"
}
}
Enviar feedback
Para informar um problema ou compartilhar feedback sobre a API Resolution, use o componente público do Issue Tracker do Maps Grounding Lite: