gpt4 book ai didi

javascript - 停止 OpenLayers 2 中的事件?

转载 作者:行者123 更新时间:2023-11-28 07:41:39 25 4
gpt4 key购买 nike

我有一张带有功能的 map 。我想点击功能并对“featureselected”使用react。我还希望能够单击 map 中的其他位置。

  OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {                
defaultHandlerOptions: {
'single': true,
'double': false,
'pixelTolerance': 0,
'stopSingle': false,
'stopDouble': false
},
initialize: function(options) {
this.handlerOptions = OpenLayers.Util.extend(
{}, this.defaultHandlerOptions
);
OpenLayers.Control.prototype.initialize.apply(
this, arguments
);
this.handler = new OpenLayers.Handler.Click(
this, {
'click': this.trigger
}, this.handlerOptions
);
},
trigger: function(evt) {
// do things
}
});



var click = new OpenLayers.Control.Click();
selectControl = new OpenLayers.Control.SelectFeature(vector);
_map.addControl(selectControl);
selectControl.activate();
_map.addControl(click);
click.activate();
vector.events.on({
'featureselected': onSelect,

单击该功能时,我不想调用 map 的单击功能。我必须在 onSelect 中调用什么来防止事件传播、冒泡?现在,当我单击某个功能时,这两个函数都会被调用。我尝试了OpenLayers.Event.stop(evt),发现evt.cancelBubble,找不到evt.Bubbles

非常感谢,罗波

最佳答案

我有一个带有 MouseOver-Control(矢量)、SelectFeature(矢量)的 OpenLayers map ,还有一个在未找到任何内容的情况下搜索 GetFeatureInfo-Requests 和单击位置的 Click-Event。

它可能会帮助您在 selectControl 之前添加 Click-Control。

我的初始化函数大致如下所示,按以下顺序排列:

oMouseOverCtrl = new OpenLayers.Control.SelectFeature( oMouseOverVectorArray, { ... });
oMapObj.addControl( oMouseOverCtrl );
oMouseOverCtrl.activate();

oMouseClickControl = new OpenLayers.Control.SelectFeature( oMouseOverVectorArray, { ... });
oMapObj.addControl( oMouseClickControl );
oMouseClickControl.activate();

oMouseClickControlInfotool = new OpenLayers.Control.WMSGetFeatureInfo({...});
oMapObj.addControl( oMouseClickControlInfotool );
oMouseClickControlInfotool.activate();

关于javascript - 停止 OpenLayers 2 中的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27947267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com