如何使用Google Maps Android API v2绘制动态线(路线)

时间:2012-12-18 12:49:23

标签: android google-maps-android-api-2

我想知道使用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);

但这对我来说似乎很麻烦。有什么想法吗?

2 个答案:

答案 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));