A App Google Maps para Android expõe várias intenções que podem ser usadas para iniciar o Google Maps em exibição, os modos pesquisa, navegação ou Street View. Se você quiser incorporar um mapa em seu aplicativo, consulte a API Android do Google Maps Guia explicativo.
Visão geral
As intents permitem que você inicie uma atividade em outro app descrevendo uma ação simples
que você gostaria de realizar (como "exibir um mapa" ou "mostrar rotas para o
aeroporto") em uma
Intent
objeto. A
App Google Maps para Android
oferece suporte a várias intents diferentes, o que permite iniciar o app Google Maps
e execute uma destas quatro ações:
- Exibir um mapa em um local e nível de zoom especificados.
- Procurar locais ou lugares e exibi-los em um mapa.
- Solicitar rotas de um local para outro. Rotas podem ser retornadas para três meios de transporte: carro, caminhada e bicicleta.
- Exibir imagens de panorama no Google Street View.
Esta página descreve as intenções que você pode usar com o aplicativo do Google Maps para Android Para mais informações sobre Intents e intents Filtros ou Intents comuns ao Android , consulte a documentação para desenvolvedores Android.
Solicitações de intent
Para iniciar o Google Maps com uma intent, primeiro você precisa criar um
Intent
objeto, especificando sua ação, URI e pacote.
- Ação: todas as intents do Google Maps são chamadas como uma ação de visualização.
ACTION_VIEW
- URI: as intenções do Google Maps usam URL codificado que especifica um valor com alguns dados para realizar a ação.
- Pacote: ligar para
setPackage("com.google.android.apps.maps")
vai Garantir que o aplicativo do Google Maps para Android processe a intenção. Se o não estiver definido, o sistema determinará quais aplicativos podem processar oIntent
: Se vários apps estiverem disponíveis, o usuário poderá ser solicitado a escolher qual deles que eles gostariam de usar.
Depois de criar a Intent
, você pode solicitar que o sistema inicie o aplicativo
aplicativo de várias maneiras. Um método comum é transmitir o Intent
para o
startActivity()
. O sistema iniciará o app necessário. Neste caso, o Google
Google Maps e comece a
Activity
correspondente.
Java
// Create a Uri from an intent string. Use the result to create an Intent. Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988"); // Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); // Make the Intent explicit by setting the Google Maps package mapIntent.setPackage("com.google.android.apps.maps"); // Attempt to start an activity that can handle the Intent startActivity(mapIntent);
Kotlin
// Create a Uri from an intent string. Use the result to create an Intent. val gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988") // Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) // Make the Intent explicit by setting the Google Maps package mapIntent.setPackage("com.google.android.apps.maps") // Attempt to start an activity that can handle the Intent startActivity(mapIntent)
Se o sistema não conseguir identificar um aplicativo que possa responder à intent, seu aplicativo pode falhar. Por essa razão, primeiro verifique se um endereço de e-mail aplicativo seja instalado antes de você apresentar uma dessas intents a um usuário.
Para verificar se um app está disponível para receber a intent, chame
resolveActivity()
no seu
Intent
objeto. Se o resultado não for nulo, há pelo menos um app que pode processar o
e é seguro ligar
startActivity()
Se o resultado for null
, não use a intent e, se possível,
precisa desativar o recurso que invoca a intent.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) { ... }
Kotlin
mapIntent.resolveActivity(packageManager)?.let { ... }
Por exemplo, para exibir um mapa de São Francisco, você pode usar este código:
Java
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); if (mapIntent.resolveActivity(getPackageManager()) != null) { startActivity(mapIntent); }
Kotlin
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") mapIntent.resolveActivity(packageManager)?.let { startActivity(mapIntent) }
Strings de consulta codificadas para URL
É necessário codificar para URI todas as strings passadas para as intenções do Google Maps. Por exemplo:
a string "1st & Pike, Seattle" vai se tornar 1st%20%26%20Pike%2C%20Seattle
.
Os espaços na string podem ser codificados com %20 ou substituídos pelo sinal de mais (+).
Você pode usar o método android.net.Uri
parse()
para codificar as strings.
Exemplo:
Java
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"));
Kotlin
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"))
Exibir um mapa
Use a intent geo:
para exibir um mapa em um local e com o nível de zoom especificados.
geo:latitude,longitude?z=zoom
Parâmetros
latitude
elongitude
definem o ponto central do mapa.z
pode definir o nível de zoom inicial do mapa. Intervalo de valores aceitos de 0 (o mundo inteiro) a 21 (edifícios individuais). O limite máximo pode variam de acordo com os dados do mapa disponíveis no local selecionado.
Exemplos
Java
// Creates an Intent that will load a map of San Francisco Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
// Creates an Intent that will load a map of San Francisco val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Pesquisando um local
Use essa intenção para exibir consultas de pesquisa em uma porta de visualização especificada. Quando o consulta tiver um único resultado, você poderá usar essa intent para exibir um alfinete em um um lugar ou endereço específico, como um ponto de referência, empresa, característica geográfica, ou cidade.
geo:latitude,longitude?q=query geo:0,0?q=my+street+address geo:0,0?q=latitude,longitude(label)
Parâmetros
Além dos parâmetros usados para exibir um mapa, a Pesquisa suporta o parâmetros a seguir:
q
define os lugares a serem destacados no mapa. O parâmetroq
é para todas as solicitações da Pesquisa. Ele aceita um local como um lugar. como nome ou endereço. A string precisa ser codificada para URL, um endereço como "Prefeitura, Nova York, NY" precisam ser convertidos em Cidade+Hall,Nova+York,NY.label
permite definir um rótulo personalizado em um lugar identificado no mapa. Alabel
precisa ser especificado como uma string.
Pesquisa categórica
Se você transmitir um termo de pesquisa geral, o Google Maps tentará encontrar um local próximo à lat/lng especificada que corresponde a seus critérios. Se nenhum local for especificado, o Google Maps tentará encontrar listagens próximas. Exemplo:
Java
// Search for restaurants nearby Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent); // Search for restaurants in San Francisco Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=restaurants"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
// Search for restaurants nearby val gmmIntentUri = Uri.parse("geo:0,0?q=restaurants") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent) // Search for restaurants in San Francisco val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=restaurants") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
É possível polarizar ainda mais os resultados da pesquisa especificando um parâmetro de zoom junto com a string de consulta. No exemplo abaixo, adicionar um zoom de 10 tentará para encontrar restaurantes no nível da cidade em vez de nas proximidades.
Java
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Pesquisa de locais
A pesquisa de um endereço específico exibe um pino nessa localização.
Java
Uri gmmIntentUri = Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
val gmmIntentUri = Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
O exemplo acima define uma lat/lng de 0
,0
, mas transmite um endereço como uma consulta.
fio. Ao pesquisar um local muito específico, as coordenadas de latitude e
não são obrigatórios. No entanto, se você não souber o endereço exato, poderá
tentam influenciar os resultados da pesquisa especificando uma coordenada. Para
exemplo, pesquisar "Rua Central" vai retornar muitas
resultados.
Java
// Searching for 'Main Street' will return too many results Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");
Kotlin
// Searching for 'Main Street' will return too many results val gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street")
Adicionar uma latitude/longitude ao URI da intent induzirá os resultados a uma determinada área:
Java
// Searches for 'Main Street' near San Francisco Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
// Searches for 'Main Street' near San Francisco val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Quando você souber que a pesquisa retornará um único valor, transmita um
um rótulo opcional. Os rótulos precisam ser especificados como uma string e vão aparecer na
marcador do mapa. Os marcadores só estão disponíveis quando q
é especificado como um
Coordenada lat/lng.
Java
// Display a label at the location of Google's Sydney office Uri gmmIntentUri = Uri.parse("geo:0,0?q=Google+Sydney@-33.8666,151.1957"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
// Display a label at the location of Google's Sydney office val gmmIntentUri = Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Como alternativa ao endereço ou à latitude/longitude, é possível exibir um alfinete em um local conhecido usando um Plus Code
Java
// Display the location of Google, San Francisco using a global plus code. Uri gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX"); // Equivalently, define the same location using a local plus code gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco"); // Construct and use the Intent as in the examples above
Kotlin
// Display the location of Google, San Francisco using a global plus code. var gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX") // Equivalently, define the same location using a local plus code gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco") // Construct and use the Intent as in the examples above
Iniciando a navegação guiada
Use essa intenção para iniciar a navegação do Google Maps com rotas passo a passo ao endereço ou coordenada especificado. As rotas são sempre fornecidas no a localização atual do usuário.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Parâmetros
q
: define o ponto final para as pesquisas de navegação. Esse valor pode ser coordenadas de latitude, longitude ou um endereço formatado para consulta. Se for uma consulta string que retornar mais de um resultado, o primeiro resultado será selecionados.mode
define o meio de transporte. O modo é opcional e pode ser definido como uma destas:d
para carro (padrão)b
para bicicletal
para motocicletaw
para caminhar
avoid
define os elementos que o trajeto deve tentar evitar. Evitar é opcional, e pode ser definido como um ou mais dos seguintes:t
para pedágiosh
para rodoviasf
para balsas
Exemplos
O Intent
abaixo solicitará a navegação guiada até o Zoológico de Taronga, em
Sydney, Austrália:
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
val gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Se preferir não pagar pedágios ou pegar balsa, solicite o trajeto que tenta evitar essas coisas.
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
val gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Se preferir um pouco de exercício, você pode solicitar rotas de bicicleta.
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
val gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Se preferir um veículo motorizado, você pode solicitar que as rotas
incluem vias estreitas e trilhas indisponíveis para carros. O intent
abaixo retorna
uma rota na Índia.
Java
Uri gmmIntentUri = Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
val gmmIntentUri = Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)
Exibir um panorama do Street View
Use a intent google.streetview
para iniciar o Google Street View. Google Street View
oferece vistas panorâmicas de locais designados em toda
área de cobertura.
Fotosferas enviadas por usuários,
e
Coleções especiais do Street View
também estão disponíveis.
google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt
Parâmetros
Todos os URIs google.streetview
precisam incluir um cbll
ou um panoid
.
cbll
aceita uma latitude e uma longitude como valores separados por vírgula46.414382,10.013988
). O aplicativo exibirá o panorama fotografado mais perto deste local. Como as imagens do Street View são atualizado e as fotografias podem ser tiradas de posições ligeiramente diferentes cada vez, é possível que seu local seja direcionado a um panorama quando as imagens são atualizadas.panoid
é um ID de panorama específico. O Google Maps usará o ID do panorama se umpanoid
e umcbll
são especificados. Os IDs de panorama estão disponíveis para uma no app Android ObjetoStreetViewPanoramaLocation
.cbp
é um parâmetro opcional que ajusta a orientação inicial do câmera. O parâmetrocbp
usa cinco valores separados por vírgulas, todos eles são opcionais. Os valores mais significativos são o segundo, quarto e quinto que definem o rolamento, o zoom e a inclinação, respectivamente. A primeira e a terceira valores não são compatíveis e precisam ser definidos como0
.bearing
: indica a direção da bússola da câmera em graus no sentido horário do norte. O norte verdadeiro é 0, o leste é 90, o sul é 180 e o oeste é 270. Valores passados para o rolamento serão unidos; ou seja, 0°, 360° e 720°, na mesma direção. O rumo é definido no segundo de cinco valores separados por vírgula.zoom
: define o nível de zoom da câmera. O nível de zoom padrão está definido em 0. Um zoom de 1 dobra a ampliação. O zoom está limitado entre 0 e o nível de zoom máximo do panorama atual. Isso significa que qualquer valor fora desse intervalo será definido como o extremo mais próximo dentro da faixa. Por exemplo, um valor de -1 será definido como 0. O zoom é o quarto dos cinco valores separados por vírgula.tilt
: especifica o ângulo para cima ou para baixo da câmera. O intervalo é -90 de 0 a 90, com 90 apontando para baixo, 0 centralizado no horizonte, e -90 olhando para cima.
Exemplos
Veja a seguir alguns exemplos do uso da intenção Street View.
Java
// Displays an image of the Swiss Alps Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent); // Uses a PanoID to show an image from Maroubra beach in Sydney, Australia Uri gmmIntentUri = Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent); // Opens Street View between two Pyramids in Giza. The values passed to the // cbp parameter will angle the camera slightly up, and towards the east. Uri gmmIntentUri = Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15"); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); mapIntent.setPackage("com.google.android.apps.maps"); startActivity(mapIntent);
Kotlin
// Displays an image of the Swiss Alps val gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent) // Uses a PanoID to show an image from Maroubra beach in Sydney, Australia val gmmIntentUri = Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent) // Opens Street View between two Pyramids in Giza. The values passed to the // cbp parameter will angle the camera slightly up, and towards the east. val gmmIntentUri = Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15") val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) mapIntent.setPackage("com.google.android.apps.maps") startActivity(mapIntent)