我为我的一个客户编写了一个Google Map的过滤功能。我希望能够根据用户可以在简单文本字段中输入的某些关键字来过滤标记。虽然它只会使用关键字的第一个字母进行过滤,但如果我输入整个关键字,则标记会消失,但效果很好。
我的JS:
$("#searchMap").keyup(function () {
$('#map_canvas').gmap('closeInfoWindow');
$('#map_canvas').gmap('set', 'bounds', null);
if($("#searchMap").val() !== "") {
var filters = [];
var splitInput = "";
var stripInput = "";
var inputVal = $("#searchMap").val();
stripInput = inputVal.replace(/\s+/g, '');
splitInput = stripInput.split(",");
$.each(splitInput, function(i) {
filters.push(splitInput[i]);
});
console.log(filters);
if (filters.length !== 0) {
$('#map_canvas').gmap('find', 'markers', {'property': 'tags', 'value': filters, 'operator': 'OR'}, function (marker, found) {
if (found) {
$('#map_canvas').gmap('addBounds', marker.position);
}
marker.setVisible(found);
});
} else {
$.each($('#map_canvas').gmap('get', 'markers'), function (i, marker) {
$('#map_canvas').gmap('addBounds', marker.position);
marker.setVisible(true);
});
}
} else {
$.each($('#map_canvas').gmap('get', 'markers'), function (i, marker) {
$('#map_canvas').gmap('addBounds', marker.position);
marker.setVisible(true);
});
}
});
过滤器包含一个包含用户输入的关键字的数组,例如:keyword,test,test2
但是如果我有一个带有多个关键字的数组的标签值的标记,例如:keyword,test,则当我输入" k"时,keyup函数将只显示标记。或者" t",如果我写完整个关键字"关键字",标记就会消失。关于为什么会发生这种情况的任何想法?