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