我想知道使用Google Maps API v2在地图上绘制动态路线的最佳做法是什么。我希望有一张能够在用户移动时延长路线的地图。使用Polyline和PolylineOptions似乎有一个明显的解决方案。但是我找不到一个简单的方法来添加点之后我实例化了Polyline。绘制折线是这样的:
PolylineOptions polylineOptions = new PolylineOptions();
polylineOptions.add(POINT1, POINT2, POINT3);
Polyline line = googleMap.addPolyline(polylineOptions);
但是在我将该行传递给GoogleMap后,我无法为其添加任何新点。像
这样的东西polylineOptions.add(POINT1, POINT2, POINT3);
不会在我的路线上添加任何内容。
我可以添加完整的新Polyline。但是,有没有办法延长现有的?通过获取Polyline的所有点,添加新点并将它们写回到该行,我找到了一种方法:
List<LatLng> points = line.getPoints();
points.add(POINT4);
line.setPoints(points);
但这对我来说似乎很麻烦。有什么想法吗?
答案 0 :(得分:3)
在mainActivity
类中,定义名为LatLng
的私有静态prev
变量,并首先将其初始化为(0,0)
。还要创建一个标志变量并为其赋值0。在Listener的OnLocationChanged
方法中,创建一个名为LatLng
的局部变量current
并在此处获取当前坐标...首先检查flag的值,如果为0,则分配{{ 1}}到current
。然后添加折线。
再次将prev
分配给current
(这将在每次第一次之后发生,标志将为1)
例如:
prev
像这样的东西。当然可以进行性能改进,这只是一个示例代码。但它应该工作。每次折线只会添加前一个和当前点,从而逐点扩展。
答案 1 :(得分:0)
查看文档,似乎polylineOptions.add(LatLng)
和googleMap.addPolyline(polylineOptions)
方法返回polylineOptions
对象。第一种方法还会返回polylineOptions
WITH 添加到结尾的点。
我认为您必须再次将polylineOptions
添加到googleMap.addPolyline(polylineOptions)
或在第二次添加之前使用googleMap.clear()
。有点像这样:
polylineOptions = googleMap.addPolyline(polylineOptions);
// googleMap.clear();
googleMap.addPolyline(polylineOptions.add(point));