Google maps 使用敲除JS ko.utils.arrayFilter设置可见标记

Google maps 使用敲除JS ko.utils.arrayFilter设置可见标记,google-maps,knockout.js,Google Maps,Knockout.js,大家好,我正在尝试创建一个应用程序,在完成淘汰搜索时设置适当的可见标记 基本上,应用程序是。 当有人搜索它下面的列表时,会过滤列表,并仅使与过滤器列表关联的标记在地图上可见。 我已经创建了一个ko.utils.arrayFilter,我正在尝试只设置item.marker.setVisible(true) 我的Github链接是 再次感谢您,非常尊重社区,它帮助我学到了很多东西您只需设置标记的可见性,以匹配是否找到标记: if (!filter) { // this is new ko.

大家好,我正在尝试创建一个应用程序,在完成淘汰搜索时设置适当的可见标记

基本上,应用程序是。 当有人搜索它下面的列表时,会过滤列表,并仅使与过滤器列表关联的标记在地图上可见。 我已经创建了一个ko.utils.arrayFilter,我正在尝试只设置item.marker.setVisible(true)

我的Github链接是


再次感谢您,非常尊重社区,它帮助我学到了很多东西

您只需设置标记的可见性,以匹配是否找到标记:

if (!filter) {
  // this is new
  ko.utils.arrayForEach(self.listLoc(), function (item) {
    item.marker.setVisible(true);
  });
  return self.listLoc();
} else {
  return ko.utils.arrayFilter(self.listLoc(), function(item) {
    var result = (item.title.toLowerCase().search(filter) >= 0)
    item.marker.setVisible(result); // this is a new line
    return result;
  });
}


注意:除非你支持特别旧的浏览器,否则你可以使用而不是Knockout的
arrayFilter
util,而不是
arrayForEach

我没有话要感谢你,伙计,你无法想象你在这方面帮了我多少忙。尊敬你和所有帮助你的人。只有一个问题,如果我做了一个过滤器,然后删除它,那么它不会重置标记使它们都可见。对。还必须在返回整个列表的分支中设置可见性。更新答案和提琴。你是最棒的。你好,我可以问你一个关于infowindows的其他问题吗