【发布时间】:2017-03-18 23:06:19
【问题描述】:
我正在使用 Google Maps API 制作动态地图,该 API 使用标记来标记预定义位置的列表,例如:
self.locations = [{
name: 'Foxtrot',
lat: 38.713905,
lng: -9.1518868,
type: 'Bar'
}
它还有一个搜索字段,允许您按位置名称进行过滤 (filteredNav)。它还应该过滤标记,但是……这就是问题所在。
我的建议如下:
尝试编写console.log(self.location_array());。因为位置和 标记数据模式是分开的,你必须循环 self.location_array() 处理并找到显示哪一个,哪一个 通过在标记对象上调用 setVisible(或 setMap)来隐藏。
这是我的代码:
// Create observable array
self.nav = ko.observableArray(self.locations);
// Create empty observable string
self.filter = ko.observable('');
// Show nav and filter
self.filteredNav = ko.computed(function() {
var filter = self.filter().toLowerCase();
if (!filter) {
return self.nav();
}
return self.nav().filter(function(i) {
// Check for proper casing or lowercase
return i.name.toLowerCase().indexOf(filter) > -1 || i.name.indexOf(filter) > -1;
});
//THIS IS THE PROBLEM!
for (var i = 0; i < location_array()[i].length; i++) {
//??????
location_array()[i].setVisible(true);
}//?????
}
注意:可观察数组实现:vm.location_array()[i]
所以...问题是...我该如何进行循环?我不知道该怎么做....
【问题讨论】:
标签: javascript arrays google-maps google-maps-api-3 google-maps-markers