İşaretçiyi iki GPS koordinatı boyunca yumuşak bir şekilde hareket ettirme


10

Bir GPS koordinatından diğerine bir işaretleyici hareketlendirmeye çalışıyorum. Şu anda bunu başarmak için Google Haritalar kullanıyorum ve algoritmam doğru görünse de, Google Haritalar GPS konumunu haritadaki doğru piksele dönüştürmede zayıf bir iş yapıyor, bu da harita uzaklaştırıldığında animasyonu çok düzgün hale getirmiyor . Yakınlaştırıldığında, çok düzgün ve bu yüzden "zig zag" ın Google'ın zayıf bir LatLng-> piksel dönüşümü yapmasından kaynaklandığından şüpheleniyorum.

En iyi çözüm, doğrudan işaretçiler (x, y) piksel koordinatlarıyla başa çıkmak benim için olurdu, ancak maalesef bir işaretçiye piksel konumu atamanın genel bir yöntemi yoktur.

Kodu burada bulabilirsiniz: http://dev.syskall.com/map/

Uzaklaştırıldığında animasyonu nasıl daha düzgün hale getirirsiniz? Alternatif olarak, Google Haritalar ile mümkün değilse yapmaya çalıştığım şeyi gerçekleştirmeme izin veren Google Haritalar'a eşdeğer bir şey kullanmakla ilgilenirim.

Not: Burası sorumu sormak için doğru yer olup olmadığından emin değilim, durum böyle değilse bana bildirin.

Yanıtlar:



2

İşaretçilerin bir konumdan diğerine sorunsuz bir şekilde geçiş yapmasını sağlamak için marker-animate-mütevazi kitaplığı kullanabilirsiniz.

İşaretçinizi şu şekilde başlatabilirsiniz:

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

Böylece işaretçiniz başlangıç ​​konumundan bu çağrıda verilene kadar animasyon uygular:

marker.setPosition(givenPosition);

PS: Kütüphanenin yazarıyım.


Kütüphaneniz simgeyi bir açıda döndürme yeteneğine sahip mi? son lat dayalı, lon sonraki lat lon hareket?
Tim Maxey

Buradaki tartışmaya bakın . Her animasyon adımı için, koordinatları alabileceğiniz ve işaretçinizi döndürmeye çalışabileceğiniz bir etkinlik var.
viskin


1

Aşağıdaki yaklaşımı da düşünebilirsiniz:

  • her konum için iki koordinat arasında bir işaretleyici koleksiyonu oluşturun
  • marker.setVisibility(value)işlevi kullanarak belirli bir işaretçiyi aç / kapat

Komple örnek

JSFiddle

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.