如何解决标记在传单搜索中显示两次
然后我尝试添加传单搜索插件。 搜索功能有效:当我搜索 somtehing 时,它会打开好的弹出窗口(信息由“复杂”例程生成)。
但现在我的标记显示了两次:我之前创建的标记,然后是搜索插件显示的标记。
我希望我说得够清楚了。下面是我的代码示例(我试图让它可读):
var geojsonFeature = { mygeojsondata };
// Runs several function to generate an "information page" for each feature
function createPopupInfo(feature,layer) {
var pop = render_name(feature);
//
// ...
}
var nbfeatures = 0;
var layer1 = new L.geoJSON(geojsonFeature,{
onEachFeature: createPopupInfo,pointToLayer: function (feature,latlng) {
nbfeatures++;
var marker = L.marker(latlng)
arrayOfLatLngs.push(latlng);
marker.on("add",function (event) {
// Retrieve the layer through event.target http://leafletjs.com/reference-1.0.0.html#event-target
event.target.openPopup();
var latLngs = [marker.getLatLng()];
var markerBounds = L.latLngBounds(latLngs);
map.fitBounds(markerBounds);
});
map.maxBoundsViscosity = 0;
return marker;
}
});
var searchControl = new L.Control.Search({
layer: layer1,propertyName: 'search_index',marker: false,movetoLocation: function (latlng,title,map) {
map.setView(latlng,17);
}
});
searchControl.on('search:locationfound',function (e) {
if (e.layer._popup)
e.layer.openPopup();
}).on('search:collapsed',function (e) {
layer1.eachLayer(function (layer) { //restore feature color
layer1.resetStyle(layer);
});
});
// Clustering
var markers = L.markerClusterGroup();
markers.addLayer(layer1);
map.addLayer(markers);
解决方法
当搜索找到某些东西时,利用该事件删除带有所有标记的图层:
searchControl.on('search:locationfound',function (e) {
if (e.layer._popup) e.layer.openPopup();
markers.removeLayer(layer1)
})
当然,您还需要在关闭搜索时重新添加这些标记:
searchControlon('search:collapsed',function (e) {
markers.addLayer(layer1);
layer1.eachLayer(function (layer) { //restore feature color
layer1.resetStyle(layer);
});
});
我会说当搜索结果为空时将它们全部添加回来是很好的用户体验,但是对于传单搜索没有明显的事件。
,我发现什么不起作用,我必须通过“聚集层”:
var searchControl = new L.Control.Search({
layer: markers,propertyName: 'search_index',...
来源: https://gis.stackexchange.com/questions/310797/using-l-control-search-and-l-markerclustergroup https://github.com/stefanocudini/leaflet-search/issues/166 另一个例子: http://embed.plnkr.co/46VJcp/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。