2010-08-02 68 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

相关问题