2010-08-02 62 views
2

我正在寫一個應用程序,需要繪製包含大量GPS點(長+拉特)的「路線」。點靠近在一起,不遵循道路,只是在每個點之間劃一條線是理想的。Android在地圖上繪製路徑從大量的經度/緯度點查看

我現在的實現非常慢,因爲我正在循環所有的GPS座標並在逐項疊加中創建一個新的Point和overlayitem。這需要大約20秒來加載所有這些點並將它們繪製到mapview。有沒有一種方法可以從GPS座標構建一系列直線或點並將它們繪製到地圖視圖上?目前執行的

例子:

for each set of long+lats // removed to simplify 
    point= new GeoPoint(latitude,longitude); 
    overlayitem = new OverlayItem(point,"",""); 
    itemizedOverlay.addOverlay(overlayitem); 
mapOverlays.add(itemizedOverlay); 
mMapController.setCenter(point); 

在此先感謝,希望我已經解釋的不夠好。

回答

3

檢查我的代碼示例在這裏回覆:

How to draw a path on a map using kml file?

這個例子解析KML文件(如谷歌地圖或谷歌地球進行路由計算提供的XML格式),並提請地理點到地圖。如果你已經有一個地理點列表,你可以看看drawPath()方法;並調整將地理座標參數傳遞給它的方式(我將它封裝到一個名爲NavigationDataSet的簡單bean中)。

+0

感謝它進行了一些修改,但我設法讓它工作,謝謝。 – stealthcopter 2010-08-02 14:55:40

3

我不清楚你在做什麼,因爲我不確定itemizedOverlay是如何在點之間繪製的。但我敢打賭,首要的問題是你使用了一堆OverlayItems,如果完全跳過這個部分並覆蓋itemizedOverlay的draw()方法會快得多。我之前完成了這一工作,對於繪製線條效果很好。基本的僞代碼:

create List of GeoPoints 
add List to ItemizedOverlay 
add a dummy marker to ItemizedOverlay (so that it knows to call `draw()`) 
in ItemizedOverlay.draw(), use mapView.getProjection() to map the array of GeoPoints to x,y coords 
use Canvas.drawLines() to draw a line between all your points 

由於速度是一個問題,確保創建於ItemizedOverlay的構造畫圖對象;他們可以儘可能多地重複使用。

另外作爲一個附註,它看起來像你使用addOverlay()the Hello, MapView demo演示。使用它的唯一問題是每次添加項目時都會調用populate();如果要添加一堆點,最好一次添加一堆覆蓋圖,然後在最後調用populate()

+0

不幸的是,我無法選擇正確的答案,但這個信息對我也有幫助,謝謝:) – stealthcopter 2010-08-02 14:56:34

相關問題