我正在使用ol.interaction.Draw在地图上绘制点。我想让用户每次点击“绘图”图标时绘制一个唯一的点。 关于如何做到这一点的任何想法?
以下是互动的代码:
function addInteraction() {
draw = new ol.interaction.Draw({
source: sourceComments,
type: "Point"
});
draw.on('drawend',
function(evt) {
// unset sketch
sketch = null;
var allFeatures = comments.getSource().getFeatures();
var format = new ol.format.GeoJSON();
document.getElementById('geometry').value = JSON.stringify(format.writeFeatures(allFeatures), null, 4);
}, this);
map.addInteraction(draw);
}
谢谢!
答案 0 :(得分:1)
我有同样的问题,但使用了不同的方法来解决它。我没有使用交互,但在地图中捕获了点击事件。
var pinpointFeature = new ol.Feature();
var pinpointOverlay = new ol.FeatureOverlay({
features: [pinpointFeature]
});
map.on('click', function(event) {
pinpointFeature.setGeometry(new ol.geom.Point(event.coordinate));
//do something with your feature if needed
});
答案 1 :(得分:1)
您可以在drawend
事件中删除地图上的互动。
var draw;
function addInteraction() {
draw = new ol.interaction.Draw({
source: sourceComments,
type: "Point"
});
draw.on('drawend', function(evt) {
//... unset sketch
map.removeInteraction(draw);
}, this);
map.addInteraction(draw);
}