2014-10-29 59 views
0

我正在創建一個跟蹤用戶位置並在調用onLocationChange(位置位置)時繪製多段線的應用程序。折線顏色取決於加速度計。我知道如何使用多段線,但PolyLineOptions對象只能是單色。 我讀過它可以通過使用GroundOverlay來實現,但是我不知道如何使用它以及如何在位圖上繪製一條線時使用我的位置(不知道如何使用它的座標)。有人可以幫助我,給一些例子鏈接?請注意,每條多段線(或位圖線)應該在用戶移動時動態添加。我已經做了研究,但我發現的只有Drawing multi color PolyLines on Maps V2,並沒有解釋所有的事情。感謝幫助!在android中繪製不同顏色的多段線

+0

當用戶移動時,你能那麼就創建一組點(你能順利進行,儘量減少點#),而不是附加到現有的一個新的折線?這樣,如果你創建一個新的折線,那麼你可以指定顏色。 – alpinescrambler 2014-10-29 15:52:40

+0

onLocationChange每秒調用一次,所以我認爲會有很多多義線供處理器處理 – user1275995 2014-10-29 16:05:51

+0

請勿立即添加。首先收集它們,例如,一旦計數達到1000點(或計時器,每5分鐘一次),先將其平滑(減少點數),然後用剩餘的點數添加新的折線。如果用戶沿直線行進,則平滑算法應只保留2個點。 – alpinescrambler 2014-10-29 16:50:05

回答

0

「每個locationChange和它的顏色取決於加速度計 變化,我想這樣做實時」

注意,這將可能使您的應用程序出現遲緩或掛你是否」重新添加多段線或使用您想要的GroundOverlay方法。

總之,這裏的我會怎樣用「的GroundOverlay辦法」

1)創建ñ的圖像,將代表速度的每個範圍做到這一點。例如「慢」(0-1000)的紅色圖像,1001-2000的綠色圖像等......)

2.)定義一個數組,該數組將保存這些圖像的資源ID,按照你想要它。例如:

int[] speedImageBucket = {R.drawable.slow,R.drawable.medium,R.drawable.fast}; 

3.)所以每次locationChange火災,計算該圖像添加,以及添加到地圖作爲覆蓋。例如:

.... 
float speed = loc.getSpeed(); // loc is the current location object passed in 
int speedBucket = (int) (speed/1000); // 1000 is the linear increment of your ranges for example 

//TODO: handle if speedBucket (array index) is out of range 

GoogleMap map = ...; // get a map. 
BitmapDescriptor image = BitmapDescriptorFactory.fromResource(speedImageBucket[speedBucket ]);; // get an image. 

// Adds a ground overlay with 50% transparency. 
GroundOverlay groundOverlay = map.addGroundOverlay(new GroundOverlayOptions() 
.image(image) 
.position(loc,1) 
.transparency(0.5)); 
+0

好的,但告訴我如何估計線條的開始和結束,它的寬度不能固定,它應該取決於加速度計數據,因此它必須靈活,我不能只添加靜態圖像。 – user1275995 2014-10-30 18:45:44

相關問題