Javascript 缩放后删除自定义geojson标记(加载传单)
我正在使用下面的代码向地图添加一些点,它们看起来很棒。我还添加了一些json多边形,没有问题 当达到某个缩放级别时,我希望点和多边形关闭。使用map.removeLayer(多边形名称)完美地关闭多边形,然后缩小。我使用map.addLayer(多边形名称),它们会回来(使用“zoomend”和if-else语句) 点要素不会像多边形那样对removeLayer函数作出反应。我还尝试了harvestPoints.setOpacity(0),它也不起作用。我应该使用什么代码来像多边形功能一样“打开”和“关闭”这些geojson标记Javascript 缩放后删除自定义geojson标记(加载传单),javascript,google-maps,leaflet,geojson,Javascript,Google Maps,Leaflet,Geojson,我正在使用下面的代码向地图添加一些点,它们看起来很棒。我还添加了一些json多边形,没有问题 当达到某个缩放级别时,我希望点和多边形关闭。使用map.removeLayer(多边形名称)完美地关闭多边形,然后缩小。我使用map.addLayer(多边形名称),它们会回来(使用“zoomend”和if-else语句) 点要素不会像多边形那样对removeLayer函数作出反应。我还尝试了harvestPoints.setOpacity(0),它也不起作用。我应该使用什么代码来像多边形功能一样“打开
function onEachPoint(feature, layer) {
layer.bindPopup(feature.properties.MGNT_AREA.toString());
layer.on('click', function (e) { layer.openPopup(); });
layer.bindLabel(feature.properties.MGNT_AREA.toString(), {
noHide: true,
className: "my-label",
offset: [-2, -25]
}).addTo(map);
};
var areaIcon = {
icon: L.icon({
iconUrl: 'labels/MonitoringIcon.png',
iconAnchor: [20, 24]
})
};
var harvestPoints = new L.GeoJSON.AJAX('labels/dfo_areas_point.json', {
onEachFeature: onEachPoint,
pointToLayer: function (feature, latlng) {
return L.marker(latlng, areaIcon);
}
});
不确定您的问题的根本原因是什么,因为我们不知道您在尝试从地图中删除点(标记)时如何准确地引用它们 通常情况下,多边形和点(标记)之间应该没有区别,以实现您所描述的效果(在特定缩放级别从地图中删除图层,然后在其他缩放级别将其添加回) 请注意,尽管您将其应用于geoJson图层组的
harvestPoints
可能发生的情况是将各个点(标记)添加到地图(onEachPoint函数中的最后一条指令),但尝试从地图中删除图层组HarvedPoints
。因为它似乎从未被添加到地图中,所以什么也没有发生
如果要同时打开/关闭harvestPoints
图层组中的所有点,只需将该图层组添加到地图或从地图中删除,而不是添加单个标记:
var harvestPoints=L.geoJson.ajax('labels/dfo\u areas\u point.json'{
onEachFeature:onEachPoint,
pointToLayer:功能(特性、latlng){
//确保'areaIcon'是一个选项对象
返回L.标记(板条、区域图标);
}
}).addTo(映射);//将整个geoJson层添加到地图。
map.on(“zoomend”,函数(){
var newMapZoom=map.getZoom();
如果(newMapZoom>=13){
map.addLayer(收获点);
}否则{
//删除包含点的整个geoJson层。
地图移除层(收获点);
}
});
旁注:默认情况下,弹出窗口在单击时打开,您不需要为此添加单击侦听器吗
演示:只需将.addTo(map)添加到geojson层的末尾即可。非常感谢你。我希望这能帮助别人。