在Google Map Android API V2中显示/隐藏一组折线

时间:2013-05-29 03:07:35

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

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

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

有谁知道怎么做?在此先感谢:)

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

   PolylineOptions options = new PolylineOptions();

   options.add(lastLoc, curLoc);

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

2 个答案:

答案 0 :(得分:2)

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

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

编辑:一些示例

初始化List

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

插入每个curLoc&amp; 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));

祝你好运

答案 1 :(得分:2)

在您获得对GoogleMap的引用后,创建一个最初为空的Polyline(稍后再回复)。

获得位置更新后,在Polyline添加一个点,其中包含(丑陋的,因为没有Polyline.addPoint)代码:

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

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

所以现在你不必担心一堆短折线,但只需要一条长折线。

并非总是最初为空: 为了确保您在旋转手机或在后台杀死进程时不会失去用户体验,您必须坚持&#34;坚持&#34;所有要点。 onSaveInstanceState就足够了。