使用传单点击地图绘制多边形
Draw polygon on click of map using leaflet
下面是我在 map.Using 上绘制多边形的代码,我可以绘制多边形,但是在单击地图时,它启用了绘制处理程序,第二次单击时我可以绘制多边形。
预期输出 -
第一次点击地图时,我想在地图上绘制第一个点。
map = new L.Map('map', {layers: [osm], center: new L.LatLng(-37.7772, 175.2756), zoom: 15 });
var drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);
var shapeOptions = {
color: '#0066FF',
fillColor: '#0066FF',
// clickable: false
weight: 10
};
var opt = {
position: 'topright',
draw: {
polygon: {
allowIntersection: false,
drawError: {
color: '#FF0000',
message: ''
},
repeatMode: true,
shapeOptions: shapeOptions
}
},
edit: {
featureGroup: drawnItems, //REQUIRED!!
remove: false
}
};
map.on('click', function(e) {
new L.Draw.Polygon(map).enable();
});
您在地图上每次 单击都会开始新的多边形编辑。您应该检查用户当前是否正在绘图。
要解决两次单击(而不是一次)的问题,您可以将 onclick
事件的 latlng
属性 传递给 L.Draw.Polygon(map).addVertex(latlng)
以绘制第一个多边形顶点第一次点击。
var editing = false;
map.on('click', function(e) {
if(!editing){ // do not start multiple "edit sessions"
editing = true;
var polyEdit = new L.Draw.Polygon(map);
polyEdit.enable();
polyEdit.addVertex(e.latlng);
}
});
map.on('draw:created', function (e) {
editing = false;
var type = e.layerType,
layer = e.layer;
drawnItems.addLayer(layer);
})
下面是我在 map.Using 上绘制多边形的代码,我可以绘制多边形,但是在单击地图时,它启用了绘制处理程序,第二次单击时我可以绘制多边形。
预期输出 - 第一次点击地图时,我想在地图上绘制第一个点。
map = new L.Map('map', {layers: [osm], center: new L.LatLng(-37.7772, 175.2756), zoom: 15 });
var drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);
var shapeOptions = {
color: '#0066FF',
fillColor: '#0066FF',
// clickable: false
weight: 10
};
var opt = {
position: 'topright',
draw: {
polygon: {
allowIntersection: false,
drawError: {
color: '#FF0000',
message: ''
},
repeatMode: true,
shapeOptions: shapeOptions
}
},
edit: {
featureGroup: drawnItems, //REQUIRED!!
remove: false
}
};
map.on('click', function(e) {
new L.Draw.Polygon(map).enable();
});
您在地图上每次 单击都会开始新的多边形编辑。您应该检查用户当前是否正在绘图。
要解决两次单击(而不是一次)的问题,您可以将 onclick
事件的 latlng
属性 传递给 L.Draw.Polygon(map).addVertex(latlng)
以绘制第一个多边形顶点第一次点击。
var editing = false;
map.on('click', function(e) {
if(!editing){ // do not start multiple "edit sessions"
editing = true;
var polyEdit = new L.Draw.Polygon(map);
polyEdit.enable();
polyEdit.addVertex(e.latlng);
}
});
map.on('draw:created', function (e) {
editing = false;
var type = e.layerType,
layer = e.layer;
drawnItems.addLayer(layer);
})