簡體   English   中英

帶有Point的OpenLayers 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM