添加线和多边形没有问题,但是当尝试在多边形层(“lyrPoly”)顶部添加标记时,它解释我想单击多边形(例如打开弹出窗口)而不是添加标记。我怎样才能避免这种情况?我正在使用 leaflet.pm 添加标记、线串和多边形。
这是标记的代码:
map.on('pm:create', function(e) {
e.marker;
var type = e.layerType,
layer = e.layer;
$(document).ready(function() {
var jsnMarker = layer.toGeoJSON().geometry;
jsnMarker = {
type: "MultiPoint",
coordinates: [jsnMarker.coordinates]
};
})
});
$(function() {
$('.check').change(function() {
var data = $(this).val();
if (data == "versionOne") {
var markerStyle = {
draggable: false,
icon: customIcon,
};
var options = {
markerStyle,
}
map.pm.enableDraw('Marker', options);
} else if (data == "versionTwo") {
var markerStyle = {
draggable: false,
icon: otherIcon,
};
var options = {
markerStyle,
}
map.pm.enableDraw('Marker', options);
}
$('.check').trigger('change');
});
在 ajax 函数中我使用这个:
lyrMarker = L.geoJSON(jsnMarker, {
pointToLayer: function (feature, latlng) {
if(feature.properties.marker_type=="versionOne"){
return L.marker(latlng, {
icon: customIcon
})
}else if
(feature.properties.marker_type=="versionTwo"){
return L.marker(latlng, {
icon: otherIcon
})
} ,
onEachFeature: forEachMarker
});
对于多边形层,我有一个相应的“onEachFeature”函数,如下所示:
function forEachFeature(feature, layer) {
var att = feature.properties;
var popupContent =
"Popup-content" ;
layer.bindPopup(popupContent, {
offset: [0, -120]
});
layer.on("click", function (e) {
lyrPoly.setStyle(style); //resets layer colors
layer.setStyle(highlight); //highlights selected.
});
};
将标记添加到背景/底图可以正常工作,但不能添加到多边形图层上。为什么会这样,什么是好的解决方案?我不想将标记添加到与多边形相同的图层,但要避免多边形“挡道”。
我有过interactive: false
在添加标记模式下制作多边形图层的想法,但没有成功。