![](/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.