百度地图实现 右键map,marker出现菜单

来源:互联网 发布:win8网络连接受限 编辑:程序博客网 时间:2024/05/24 05:29

判断是右键map还是marker

//创建地图函数:    function createMap(){        map.addEventListener("rightclick",function(e){            s = e.point.lng;//经度            w = e.point.lat;//维度            if(e.overlay){//判断右键单击的是否是marker                }else{            RightClickMap(s,w);//右键单击map出现右键菜单事件            }            });        window.map = map;//将map变量存储在全局    }

上面的代码,细心的人会发现我在对marker右键的时候没有调用方法,这是因为我的marker全部是从数据库取出来的,所以这里并没有调用 RightClickMaker(marker,point)方法。

右键map代码

//右键单击map出现右键菜单事件        function RightClickMap(s,w){        var EventMarker =function(map){        //addEventF是具体的菜单方法,要实现什么功能取决自身需求        addEventF(s,w);        };        var markerMenu=new BMap.ContextMenu();        markerMenu.addItem(new BMap.MenuItem('生成事件',EventMarker.bind(map)));        map.addContextMenu(markerMenu);//给标记添加右键菜单        } 

右键marker代码
直接右键一个marker生成菜单没有意义,所以我这里是从数据库取出数据,生成marker,并给对应的marker带上右键菜单功能

 //ajax显示Maker(EVENT)         $.ajax({            url:'preplan_event_queryAll.action',            type:'POST',            data:{            },            success:function(res){                 var data=eval('('+res+')');     for (var i = 0; i < data.length; i++) {        var point = new BMap.Point(data[i].longitude, data[i].latitude);        var marker = new BMap.Marker(point,        {        icon:eventIcon,        enableMassClear:false     //防止被大规模清除        });        points.push(point);        map.addOverlay(marker);        RightClickMaker(marker,point);//右键单击marker出现右键菜单事件
//右键单击Maker出现右键菜单事件        function RightClickMaker(marker,point){             var watchMarker = function(e,ee,marker){//右键查看附近        //要实现的方法        }        var markerMenu=new BMap.ContextMenu();        markerMenu.addItem(new BMap.MenuItem('查看附近资源',watchMarker.bind(marker)));        marker.addContextMenu(markerMenu);//给标记添加右键菜单        } 

效果图:
右键map
右键map
右键marker
这里写图片描述

BTW,我这里写的右键菜单,function是没有识别顺序的,如果每个marker调用上的function不一样(比如里面有i),那么用这种方法会出现不管右键哪个marker,结果都是ajax遍历结果的最后一个.
我在另一个里面写了解决方案,如果没有需求就不用了。
http://blog.csdn.net/b809220024/article/details/73469945