![](/img/trans.png)
[英]how to get points return from OpenLayers.Control.DrawFeature
[英]OpenLayers DrawFeature control with Point destroys double click to zoom
我有一些简单的代码是我从一个openlayers示例中复制的,用于在地图上绘制几种不同类型的几何图形。 问题是,无论何时选择“点”几何图形,我都无法双击放大。示例与代码之间的唯一区别是我正在注册处理程序以使用MOD_SHIFT,因为我想保留平移/缩放的能力。 这是一段代码:
point: new OpenLayers.Control.DrawFeature(this.geometryFilterLayer,
OpenLayers.Handler.Point,
{
'done': console.info("drew point")
},
{
keyMask: OpenLayers.Handler.MOD_SHIFT
}
),
polygon: new OpenLayers.Control.DrawFeature(this.geometryFilterLayer,
OpenLayers.Handler.Polygon,
{
'done': console.info("drew polygon")
},
{
keyMask: OpenLayers.Handler.MOD_SHIFT
}
),
上面代码的有趣之处在于,“完成”事件仅在创建控件/处理程序时才会触发,而keyMask根本不起作用-我必须遍历此对象并每次手动设置keyMask ,但这并不是眼前的真正问题。
我已经尽力尝试注册dblclick事件,但是无论如何,双击时都无法放大它。 在所有其他几何体(bbox,点/半径和多边形)上都可以正常工作。
有人可以给我一些建议吗?
我从未解决此问题,但最终完全放弃使用MOD_XXX。 每个不同的绘制控件都具有太多的内置功能,可用于在您按住shift,Ctrl,Alt等时发生的事情。我最终使用了自定义按钮和工具栏,从而用户可以自己明确地选择绘制控件。
this.toolbar = new OpenLayers.Control.Panel({
displayClass: 'olControlEditingToolbar'
});
map.addControl(this.toolbar);
var navButton = new OpenLayers.Control.Button({
displayClass: "olControlNavigation",
title: "Navigation",
trigger: lang.hitch(this, function(data){
this.toggleDrawControl("navigation");
navButton.activate();
pointButton.deactivate();
bboxButton.deactivate();
pointRadiusButton.deactivate();
polygonButton.deactivate();
})
});
...
this.toolbar.addControls([navButton, pointButton, bboxButton, pointRadiusButton, polygonButton]);
以及切换绘图控件的功能(可以在外部调用,因此这就是我重新调用激活和停用功能的原因:
toggleDrawControl: function(geometryType){
this.currentGeometryType = geometryType;
for(key in this.drawControls) {
var control = this.drawControls[key];
if(geometryType == key) {
control.activate();
this.drawingButtons[key].activate();
} else {
control.deactivate();
this.drawingButtons[key].deactivate();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.