Depois que o usuário pressionar o botão no meu aplicativo, eu gostaria de abrir o aplicativo padrão do Google Map e mostrar um local específico. Como eu posso fazer isso? (sem usar com.google.android.maps.MapView
)
android
google-maps
LA_
fonte
fonte
lat: 59.915494, lng: 30.409456
ele retorna a posição errada.String.format("geo:%f,%f", latitude, longitude)
voltou a corda com vírgulas:geo:59,915494,30,409456
.Você também pode simplesmente usar http://maps.google.com/maps como seu URI
ou você pode garantir que o aplicativo Google Maps seja usado apenas, isso impede que o filtro de intenções (diálogo) apareça, usando
igual a:
ou você pode adicionar rótulos aos locais adicionando uma string entre parênteses após cada conjunto de coordenadas da seguinte forma:
Para usar o local atual do usuário como ponto de partida (infelizmente não encontrei uma maneira de rotular o local atual), basta soltar o
saddr
parâmetro da seguinte maneira:Por uma questão de integridade, se o usuário não tiver o aplicativo de mapas instalado, será uma boa ideia capturar a ActivityNotFoundException, como declara @TonyQ, podemos iniciar a atividade novamente sem a restrição do aplicativo de mapas, podemos ter certeza que nunca chegaremos ao Toast no final, já que um navegador da Internet é um aplicativo válido para iniciar esse esquema de URL também.
EDITAR:
Para obter instruções, agora uma intenção de navegação é suportada com google.navigation
fonte
Usar o formato String ajudará, mas você deve ter cuidado com o código do idioma. Na Alemanha, o flutuador será separado por vírgula, em vez de um ponto.
Usando o
String.format("geo:%f,%f",5.1,2.1);
código do idioma inglês, o resultado será,"geo:5.1,2.1"
mas com o código do idioma alemão, você obterá"geo:5,1,2,1"
Você deve usar o código de idioma inglês para impedir esse comportamento.
Para definir um rótulo para o ponto geográfico, você pode estender sua localização geográfica usando:
!!! mas tenha cuidado com isso, o geo-uri ainda está em desenvolvimento http://tools.ietf.org/html/draft-mayrhofer-geo-uri-00
fonte
Confira esta página do google:
http://developer.android.com/guide/appendix/g-app-intents.html
Você pode usar um URI do formulário
para abrir o visualizador de mapa do Google e apontá-lo para um local.
fonte
Às vezes, se não houver nenhum aplicativo associado ao geo: protocal, você pode usar o try-catch para obter o ActivityNotFoundException para lidar com isso.
Isso acontece quando você usa algum emulador como o androVM, que não está instalado no Google Map por padrão.
fonte
Você também pode usar o snippet de código abaixo. Dessa forma, a existência do google maps é verificada antes do início da intenção.
Referência: https://developers.google.com/maps/documentation/android-api/intents
fonte
Para ir para o local COM PIN, use:
para sem pino, use isto em uri:
fonte
Eu tenho um aplicativo de exemplo onde eu preparo a intenção e apenas passo o CITY_NAME na intenção para a atividade do marcador de mapas que, eventualmente, calcula a longitude e latitude pelo geocoder usando CITY_NAME.
Abaixo está o snippet de código para iniciar a atividade do marcador de mapas e a MapsMarkerActivity completa.
Os links expiram, então colei o código completo acima, mas, caso deseje ver o código completo, ele está disponível em: https://github.com/gosaliajigar/CSC519/tree/master/CSC519_HW4_89753
fonte
Como está escrito em Kotlin, ele abrirá o aplicativo de mapas, se for encontrado, posicionar o ponto e permitir que você inicie a viagem:
Substitua
requireActivity()
por seuContext
.fonte