openlayers如何在地图上添加右键菜单

 1、在openlayers的浏览器事件中添加一个”contextmenu”事件,该事件在单击鼠标右键时被激发。我是在页面初始化时候添加的,也可以直接去修改Events.js;
页面初始化时候添加的代码:
OpenLayers.Events.prototype.BROWSER_EVENTS=[ “mouseover”, “mouseout”,
“mousedown”, “mouseup”, “mousemove”,
“click”, “dblclick”, “resize”, “focus”, “blur”,”contextmenu”];
2、浏览器有一个默认的右键菜单,我们必须把它屏蔽掉,让其只显示自定义的右键菜单。
解决办法:(1)在页面初始化时,会创建一个map对象,只需要在完成创建map对象后添加下面这段代码即可;
map.div.oncontextmenu = function () { return false;};
(2)也可以直接对Map.js进行修改,在其initialize()中添加这段代码;
3、定义”mouseRight “鼠标右键控件,为其动态绑定一个”contextmenu”事件,并激活该控件。代码如下:
var mouseRight = new OpenLayers.Control();
OpenLayers.Util.extend(mouseRight, {
contextmenu: function(e) { …… },
setMap: function() { OpenLayers.Control.prototype.setMap.apply(this, arguments); this.map.events.register( ‘contextmenu’, this, this.contextmenu); }
});
mouseRight.activate();
map.addControl(mouseRight);
其中contextmenu: function(e){}为相应的事件处理函数,当在地图上单击右键后就会去实现这个函数中定义的一系列动作,如我的feature对象的查询、定位feature对象和弹出右键菜单等功能都定义在这个函数里。
4、自定义弹出右键菜单。利用openlayers的Popup,在单击右键定位到feature对象后,弹出菜单图层。

注:针对2.5版本

转载自:https://blog.csdn.net/sen2046/article/details/2735601

You may also like...