Movendo o marcador suavemente ao longo de duas coordenadas GPS


10

Estou tentando animar um marcador de uma coordenada GPS para outra. Atualmente, estou usando o Google Maps para conseguir isso e, embora meu algoritmo pareça correto, o Google Maps está fazendo um péssimo trabalho ao converter a posição do GPS para o pixel certo no mapa, o que torna a animação menos suave quando o mapa é reduzido. . Ampliado, é muito suave e é por isso que suspeito que o "zig zag" seja causado pelo Google fazendo uma fraca conversão de pixel LatLng->.

A melhor solução seria lidar diretamente com as coordenadas de pixel dos marcadores (x, y), mas infelizmente não existe um método público para atribuir a localização do pixel a um marcador.

O código está disponível aqui: http://dev.syskall.com/map/

Como você tornaria a animação mais suave quando diminuísse o zoom? Como alternativa, eu estaria interessado em usar um equivalente ao Google Maps que me permitiria realizar o que estou tentando fazer se não for possível com o Google Maps.

PS: Não tenho certeza se este é o lugar certo para fazer minha pergunta, deixe-me saber se não é o caso.

Respostas:



2

Você pode usar a biblioteca animada por marcador e discreta para fazer com que os marcadores façam a transição sem problemas de um local para outro.

Você pode inicializar seu marcador assim:

var marker = new SlidingMarker({
   //your original marker options
   //...
});

Portanto, seu marcador será animado do local inicial para o de uma chamada:

marker.setPosition(givenPosition);

PS Eu sou o autor da biblioteca.


Sua biblioteca tem capacidade de girar o ícone em ângulo? com base no último lat, lon indo para o próximo lat lon?
precisa

Veja a discussão aqui . Há um evento gerado para cada etapa da animação, onde você pode obter coordenadas e tentar girar seu marcador.
Viskin


1

Você também pode considerar a seguinte abordagem:

  • gerar uma coleção de marcadores entre duas coordenadas por cada local
  • alternar um marcador específico usando a marker.setVisibility(value)função

Exemplo completo

JSFiddle

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.