我正在做一个简单的项目,可以跟踪用户的位置并使用Polyline
绘制这些位置。现在我想添加一个复选框来切换是否显示这些行。我认为挑战是我在这里有很多折线,所以我不知道如何将所有折线同时设置为不可见/可见。
也许我可以在一个图层上绘制它们然后切换该图层的可见性?我只是猜猜..
有谁知道怎么做?在此先感谢:)
编辑: 可能不是很相关,但我仍然会展示一旦检测到用户移动我如何添加折线
PolylineOptions options = new PolylineOptions();
options.add(lastLoc, curLoc);
mMap.addPolyline(options.color(Color.RED).width(3));
答案 0 :(得分:2)
要一次设置所有这些内容,请将每个lastLoc
和curLoc
添加到列表中,然后使用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
就足够了。