1

我正在做一个简单的项目,可以跟踪用户的位置并使用Polyline. 现在我想添加一个复选框来切换是否显示这些行。我认为的挑战是我这里有很多折线,所以我不知道如何同时将它们全部设置为不可见/可见。

也许我可以在一个图层上绘制它们然后切换该图层的可见性?我只是猜测..

有谁知道该怎么做?提前致谢 :)

编辑:可能不是很相关,但我仍然会展示如何在检测到用户移动后添加折线

   PolylineOptions options = new PolylineOptions();

   options.add(lastLoc, curLoc);

   mMap.addPolyline(options.color(Color.RED).width(3));
4

2 回答 2

2

要一次设置所有这些,请将每个lastLoc和添加curLoc到列表中,然后使用options.addAll(List)

您将一次显示所有折线,因此您可以根据需要将它们一起删除/隐藏:)

编辑:一些例子

初始化List

List<LatLng> points = new ArrayList<LatLng>();

将每个curLoc&lastLoc插入points

while (!traceFinished.equals(true)){
     points.add(curLoc); //read every new current location
}
points.add(lastLoc); //the final location, after the trace stopped

要显示折线,您可以调用:

PolylineOptions options = new PolylineOptions();
options.addAll(points);
mMap.addPolyline(options.color(Color.RED).width(3));

祝你好运

于 2013-05-29T03:30:42.233 回答
2

Polyline您获得对GoogleMap.

在您获得位置更新后,Polyline使用下面的(丑陋的,因为没有Polyline.addPoint)代码添加一个点:

List<LatLng> points = polyline.getPoints();
points.add(currentLocationLatLng);
polyline.setPoints(points);

当您需要隐藏它时,请使用polyline.setVisible(false);.

因此,现在您不必担心一堆短多段线,而只需担心一条长多段线。

最初并不总是空的: 为了确保在旋转手机或在后台被杀死的进程时不会失去用户体验,您必须“坚持”所有要点。onSaveInstanceState应该足够了。

于 2013-05-29T17:54:51.630 回答