Google地图标记过滤器

时间:2018-03-23 20:40:31

标签: jquery-gmap3

我有一个巨大的商店列表,其中包含地址(经度和纬度以及codeclient ....)。对于每个商店,页面上的Google地图上会显示一个标记。 我的问题是,用户必须能够根据一件事过滤这些标记:CodeClient。所以更具体一点。如果用户在输入滑块中设置CodeClient,则应该只显示客户端(我们放入滑块的CodeClient的所有者)。 CodeClient = 12345,所以当我们将数字12345放在输入滑块中,然后单击按钮时它应该只显示该客户端的标记,我指的是引用该客户端位置的标记。

3 个答案:

答案 0 :(得分:2)

问题通过xomena解决,这是解决方案的路径

Filter Google maps markers with input sliders based on one variable

答案 1 :(得分:0)

好像你在部分询问设置标记可见性?正如在这篇Stack帖子(以及其他)中所触及的那样

Google Maps API Marker Visibility

最有可能的是,marker.setVisible(true/false)是可行的方法。

然后基本上你会在滑块输入的更改事件处理程序中这样做。

一个想法是在标记数组上循环并在设置标记匹配时将其切换为不可见,同时选择coce-client可见。

另一个想法是将它作为一个标记字典"其中密钥是代码客户端值,即:

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
}

答案 2 :(得分:0)

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

for (var i=0; i<markerArray.length; i++) {

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

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

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