2013-03-26 32 views
6

Bir Android cihazında GPS özelliğini kullanarak parçamı çizmek istiyorum.Android cihazında hareketli bir parça nasıl görüntülenir

Tamamlanmış bir rotayı görüntülerken bir sorunum yok ancak taşıdığım parçayı göstermeyi zor buluyorum. Şimdiye kadar, bunu yapmanın 2 farklı yolunu buldum ama ne tatmin edici degiller.

YÖNTEM 1

PolylineOptions track = new PolylineOptions(); 
Polyline poly; 

while (moving) { 
    Latlng coord = new LatLng(lat,lng); // from LocationListener 
    track.add(coord); 
    if (poly != null) { 
     poly.remove(); 
    } 
    poly = map.addPolyline(track); 
} 

yani yeniden eklemeyi sonra yeni koordinatları ekleme ve daha önce kaldırmadan çoklu çizgiyi oluşturmak.

Bu, aşırı derecede yavaştır.

YÖNTEM 2

oldcoord = new LatLng(lat,lng);; 

while (moving) { 
    PolylineOptions track = new PolylineOptions(); 
    LatLng coord = new (LatLng(lat,lng); 
    track.add(oldcoord); 
    track.add(coord); 
    map.addPolyline(track); 

    oldcoord = coord; 
} 

yani tek çoklu çizgiler bir dizi çizmek.

Bu yöntem, Yöntem 1'den çok daha hızlı sonuç verirken, özellikle de daha düşük yakınlaştırma düzeylerinde oldukça pürüzlü görünüyor, çünkü her bir piksel karesi kapalı ve yalnızca gerçekten dokunan köşeler.

Daha iyi bir yol var mı, eğer öyleyse, nedir?

cevap

8

2.0 Haritalar API'sini kullanarak basit bir çözüm var.

  1. gibi EnlBoy noktaların bir listesini oluşturmak: Üç adımları kullanarak güzel pürüzsüz bir güzergah çizgisini alırsınız

    List<LatLng> routePoints; 
    
  2. listeye güzergah noktalarını ekleyin (/ yapılmalı olabilir) bir döngü içinde:

    routePoints.add(mapPoint); 
    
  3. bir poligon oluşturmak ve bu şekilde o EnlBoy noktaları listesini besleme:

    Polyline route = map.addPolyline(new PolylineOptions() 
        .width(_strokeWidth) 
        .color(_pathColor) 
        .geodesic(true) 
        .zIndex(z)); 
    route.setPoints(routePoints); 
    

Bir deneyin!

+0

Cevabınız için teşekkürler. Sonunda kendimle geldim (yöntem 1). Yapmakta olduğum problem, polyline oluşturmanın ve çıkarmanın bir ArrayList koordinatında yinelediğimde, işlemin sonsuza kadar sürdüğüydi. Ancak, bu işlemi onChangeListener'a yüklediğimde bir cazibe gibi çalıştı. –

+0

@PeteH Beni bilgilendirmekten memnuniyet duyar mısınız, routePoints.add yönteminde mapPoint nedir (mapPoint); – Keshav1234

+0

a MapPoint basitçe bireysel bir LatLng nesnesidir, yani harita ekranınız için istenen noktalardan biridir. – PeteH