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

判断是右键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


版权声明:本文为b809220024原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。