Android从大量经度/纬度点在地图视图上绘制路径

Android从大量经度/纬度点在地图视图上绘制路径,android,gps,android-mapview,Android,Gps,Android Mapview,我正在编写一个应用程序,需要绘制一条由许多GPS点(长+纬度)组成的“路线”。这些点靠得很近,不沿着道路走,简单地在每个点之间画一条线是理想的 当前的实现非常缓慢,因为我正在遍历所有GPS坐标,并在逐项覆盖中创建一个新的点和覆盖项。加载所有这些点并将其绘制到地图视图大约需要20秒。是否有一种方法可以从GPS坐标构建一系列直线或点,并将它们绘制到地图视图上 当前实施的示例: for each set of long+lats // removed to simplify point= n

我正在编写一个应用程序,需要绘制一条由许多GPS点(长+纬度)组成的“路线”。这些点靠得很近,不沿着道路走,简单地在每个点之间画一条线是理想的

当前的实现非常缓慢,因为我正在遍历所有GPS坐标,并在逐项覆盖中创建一个新的点和覆盖项。加载所有这些点并将其绘制到地图视图大约需要20秒。是否有一种方法可以从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);

提前感谢,希望我已经解释得足够好。

请在此处查看我的回复和代码示例:


本例解析kml文件(Google Maps或Google Earth提供的用于路线计算的xml格式),并将地理点绘制到地图上。如果您已经有了一个地理点列表,那么只需查看drawPath()方法;并调整向其传递geo coords参数的方式(我将其封装到一个名为NavigationDataSet的简单bean中)。

我不完全清楚您在做什么,因为我不确定ItemizeOverlay是如何在点之间绘制的。但我敢打赌,主要的问题是,您正在使用一组覆盖项,而完全跳过该部分并覆盖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
由于速度是一个问题,请确保在ItemizeOverlay的构造函数中创建绘制对象;它们可以根据您的需要重复使用


另外,作为旁注,您似乎正在使用中演示的
addOverlay()
。使用它的唯一问题是,每次添加项目时,它们都会调用
populate()
;如果您要添加一组点,最好一次添加一组覆盖,然后在最后调用
populate()

谢谢进行了一些修改,但我成功地使其工作,谢谢。不幸的是,我无法选择两个正确答案,但此信息对我也很有帮助,谢谢:)