Google 地图标记过滤器

Google maps markers Filter

我有一长串带有地址的商店(经度和纬度以及代码客户端......)。对于每家商店,页面上的 Google 地图上都会显示一个标记。 我的问题是,用户必须能够根据一件事过滤这些标记:CodeClient。所以要更具体。如果用户在输入滑块中设置 CodeClient,它应该只显示客户端(我们放入滑块的 CodeClient 的所有者)像这样; CodeClient = 12345,所以当我们将数字 12345 放入输入滑块并单击按钮时,它应该只显示此客户端的标记,我指的是引用此客户端位置的标记。

您似乎在部分询问有关设置标记可见性的问题?如本堆栈中所述 post(以及其他)

最有可能的是,marker.setVisible(true/false) 是正确的选择。

然后基本上您将在滑块输入的更改事件处理程序中执行此操作。

一个想法是遍历标记数组并将其切换为不可见,同时将选定的标记匹配 coce-client 设置为可见。

另一个想法是将其设为 "marker dictionary",其中键是代码客户端值,即:

markers = {
  12345: SomeMarkerInstance,
  67890: SomeOtherMarkerInstance,
  // ... etc
}

selectedMarker = '12345'

这样您就可以快速关闭当前所选标记的可见性,同时切换新选择的标记。其余标记默认不可见。

即(伪小代码)

function someEventHandler (event) {
  markers[selectedMarker].setVisible(false)
  markers[selectedCodeClientValue].setVisible(true)
  // and perhaps other stuff, e.g. recenter the map, etc
}

您正在使用此 CodeClient 为您的标记设置标题,并且您正在将您的标记推入数组中。那么这里的大问题是什么?只需遍历数组并根据标题 (CodeClient).

设置标记可见性
for (var i=0; i<markerArray.length; i++) {

  if (markerArray[i].title == '12345') {

    markerArray[i].setMap(map);
  } else {

    markerArray[i].setMap(null);
  }
}

问题由xomena解决,这是解决路径