gpt4 book ai didi

javascript - 使用搜索删除 map 图钉

转载 作者:搜寻专家 更新时间:2023-11-01 04:08:24 27 4
gpt4 key购买 nike

我正在尝试创建一个搜索栏,用于过滤掉列表中与搜索查询不匹配的项目。我试图添加的附加功能是,如果它与搜索查询不匹配,它也会从 map 中删除图钉。

这就是我现在拥有的,它适用于删除页面顶部的名称,但我喜欢它也可以删除图钉。我想知道如何解决这个问题。

self.pins = ko.observableArray([
new self.mapPin("Waterloo Station", 51.503035, -0.112326, "test3""),
new self.mapPin("King's Cross Station", 51.530984, -0.122583, "test2"),
new self.mapPin("Putney Bridge", 51.468050, -0.209081, "test1")
]);

self.query = ko.observable('');

self.filterPins = ko.computed(function () {
var search = self.query().toLowerCase();
return ko.utils.arrayFilter(self.pins(), function (pin) {
return pin.name().toLowerCase().indexOf(search) >= 0;
});
});

HTML:

<input data-bind="value: query, valueUpdate: 'keyup'" autocomplete="off" type="text" class="form-control" placeholder="Filter Locations">

<ul data-bind="foreach: filterPins" class="nav navbar-nav" class=" nav navbar-nav">
<li class="active">
<a data-bind="text: name"></a>

如有任何帮助,我们将不胜感激!

最佳答案

我会将您的标记封装到它们自己的数据模型中,该模型负责在幕后与 Google map 进行交互:

// we have to give it access to the map object, so that
// it can register and de-register itself
var Pin = function Pin(map, name, lat, lon, text) {
var marker;

this.name = ko.observable(name);
this.lat = ko.observable(lat);
this.lon = ko.observable(lon);
this.text = ko.observable(text);

marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, lon),
animation: google.maps.Animation.DROP
});

this.isVisible = ko.observable(false);

this.isVisible.subscribe(function(currentState) {
if (currentState) {
marker.setMap(map);
} else {
marker.setMap(null);
}
});

this.isVisible(true);
}

现在您可以使用 pin = new Pin(map, 1, 2, 'text') 创建您的图钉,当您使用 pin.isVisible(false) 切换它们的可见性状态时,他们会自动注册或注销 map 。

你的过滤函数就这样变成了

self.filterPins = ko.computed(function () {
var search = self.query().toLowerCase();

return ko.utils.arrayFilter(self.pins(), function (pin) {
var doesMatch = pin.name().toLowerCase().indexOf(search) >= 0;

pin.isVisible(doesMatch);

return doesMatch;
});
});

关于javascript - 使用搜索删除 map 图钉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29557938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com