【问题标题】:How can I show and hide markers on google map in android using a button如何使用按钮在 android 的谷歌地图上显示和隐藏标记
【发布时间】:2026-01-04 20:35:01
【问题描述】:

我是 android 编码的新手。我正在尝试使用操作栏中的按钮打开和关闭我设法在地图上显示的标记。

到目前为止我已经创建了这个方法,我不明白我接下来需要做什么

在这里,基本上我创建了一个位置数组并使用 for 循环将所有标记放在我的地图上。现在我想要做的是隐藏标记(如果它们通过单击按钮可见)并显示标记(如果它们被隐藏)。

public boolean showShops(){
        rL = new ArrayList<LatLng>();
        rl.add(new LatLng(40.433433, -1.422423));
        rl.add(new LatLng(40.433434, -1.422534));

        for(LatLng nRL : rL){ 
            mMap.addMarker(new MarkerOptions() 
            .position(nRL)
            .title("Shop")
        }

        return true;
    }

我已经尝试了很长时间,但似乎无法找到解决方案。我设法发现你必须 setVisible(false);隐藏和 setVisible(true);显示,但我不知道如何实现它。我尝试在上面的代码中添加它而不是 .add 但我得到了错误。

有人可以帮忙吗。

谢谢。

【问题讨论】:

  • 你能给我举个例子吗,我一直在搜索这个问题,至今没有结果。现在越来越烦人了。谢谢
  • @vitalnik 您发布的问题与 Android 无关。请勿发布进一步激怒原始发帖者的 sh**。

标签: android google-maps google-maps-api-3 map marker


【解决方案1】:

如果您不想隐藏地图上的其他内容,请使用 clear 在您的 GoogleMap 对象上,它会删除地图的所有其他叠加层。

如果该方法不适合您,您必须保留对所有标记的引用(例如在 ArrayList 中)并分别对每个标记调用 removesetVisible()

留个

ArrayList<Marker> myMarkers = new ArrayList<Marker>(); 

并将您添加到地图的每个标记添加到该列表中。

for(LatLng nRL : rL){ 
  myMarkers.add(mMap.addMarker(new MarkerOptions() 
        .position(nRL)
        .title("Shop"));
    }

如果您想将它们全部设置为不可见,请遍历该列表并setVisible(false) 在所有这些上。

 for (Marker m : myMarkers) {
   m.setVisible(false);
 }

【讨论】:

  • 我想关闭他们的可见性,我想不出办法。
  • 我的意思是你必须在使用它之前初始化 ArrayList(见编辑)。您需要知道如何使用 ArrayLists 才能使用此解决方案(无意冒犯)。
  • 对,你是。您现在应该可以应用该解决方案了 :)
  • 您好,很抱歉再次打扰您,我无法确定在该数组列表中添加纬度和经度的位置。此外,它告诉我将 for 循环中的 LatLng 设为 Marker。MarkerOptions 类型中的方法位置(LatLng)不适用于参数(Marker)
【解决方案2】:

如果你想让你的标记不可见,你也可以使用marker.setAlpha(0)

【讨论】: