O Google mudou sua API de mapa para Android e introduziu a API V2. Os códigos anteriores para o caminho de desenho não funcionam com API V2.
Consegui desenhar um caminho com API V2. Procurei muito a solução mas não encontrei resposta. Portanto, estou compartilhando sua resposta.
google-maps
path
google-maps-markers
routes
google-maps-android-api-2
Zeeshan Mirza
fonte
fonte
Respostas:
Em primeiro lugar, obteremos os pontos de origem e de destino entre os quais devemos traçar uma rota. Então, passaremos esses atributos para a função abaixo.
Esta função criará a url que enviaremos para obter a resposta da API de direção. Em seguida, analisaremos essa resposta. A classe do analisador é
Este analisador nos retornará string. Vamos chamá-lo assim.
Agora iremos enviar esta string para nossa função drawpath. A função drawpath é
O código acima irá desenhar o caminho no mMap. O código de decodePoly é
Como a chamada de direção pode levar algum tempo, faremos tudo isso na tarefa assíncrona. Minha tarefa assíncrona era
Eu espero que isso ajude.
fonte
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true); for (int z = 0; z < list.size(); z++) { LatLng point = list.get(z); options.add(point); } line = myMap.addPolyline(options);
Requests to this API must be over SSL
, mudehttp
parahttps
key
parâmetro emmakeURL
função, caso contrário, conseguiThis IP, site or mobile application is not authorized to use this API key
. Além disso, altere o url para emhttps
vez dehttp
como AlvaroSantisteban mencionou.Não sei se devo colocar isso como resposta ou não ...
Eu usei a solução de @ Zeeshan0026 para desenhar o caminho ... e o problema era que se eu desenhasse o caminho uma vez, e então tento desenhar o caminho novamente, os dois caminhos aparecem e isso continua ... caminhos que aparecem mesmo quando os marcadores foram excluído ... enquanto, idealmente, caminhos antigos "não deveriam estar lá quando um novo caminho é desenhado / marcadores são excluídos ..
passando por alguma outra questão sobre o SO, eu tive a seguinte solução
Eu adiciono a seguinte função na classe de Zeeshan
na minha atividade de mapa, antes de desenhar o caminho, chamei esta função .. exemplo de uso de acordo com meu aplicativo é
você pode usar
rt.clearRoute();
acordo com suas necessidades. Esperando que isso economize alguns minutos de outra pessoa e ajude algum iniciante a resolver esse problema.Código de classe completo
veja no github
Editar: aqui está parte do código da atividade principal ..
Editar 2 de acordo com os comentários
uso:
fonte
no código abaixo midpointsList é uma ArrayList de waypoints
Em seguida, copie e cole este url no seu navegador para verificar E o código abaixo é para analisar o url
E então passe o resultado para o método drawPath
A função decodificar poli é decodificar os pontos (latitude e longitude) fornecidos pela API de rotas na forma codificada
fonte
Experimente a solução abaixo para traçar um caminho com animação e também obter tempo e distância entre dois pontos.
DirectionHelper.java
GetPathFromLocation.java
DirectionPointListener
Agora desenhe o caminho usando o código abaixo em sua atividade
Resultado
Espero que isso possa ajudá-lo!
Obrigado.
fonte