『实践』百度地图给map添加右键菜单(判断是否为marker)

 
 1 var map;
 2 var s;//经度
 3 var w;//纬度
 4 $(document).ready(function(){    
 5     $(".mune").load("jsp/common.jsp");
 6     map = new BMap.Map("container");         
 7     var point = new BMap.Point(121.577382, 29.874545);      //++江东区中心的坐标
 8     map.centerAndZoom(point, 15);                            //++设置为中心点
 9     map.enableScrollWheelZoom(true); //启用滚轮放大缩小
10     map.setDefaultCursor("crosshair");  
11     opts = {
12             width : 200,     // 信息窗口宽度
13             height: 80,     // 信息窗口高度
14             title : "站点信息" , // 信息窗口标题
15             enableMessage:true//设置允许信息窗发送短息
16     };
17     
18     
19     $.getJSON("./GetStationPlaceServlet",function(json){  
20         for(var i=0;i<json.length;i++){
21             var obj1 = eval(json);
22             //获取经纬度
23             fStationlon = parseFloat(obj1[i].Stationlon);
24             fStationlat = parseFloat(obj1[i].Stationlat);    
25             var pt = new BMap.Point(fStationlon,fStationlat);
26             var myIcon = new BMap.Icon("photo/station.png",new BMap.Size(22,22));
27               var marker = new BMap.Marker(pt,{icon:myIcon}); // 创建标注
28               map.addOverlay(marker);          //将标注添加到地图中
29             var strRes = parseFloat(obj1[i].StationId);
30             addClickHandler(strRes,marker);//左键单击marker事件
31             RightClickHandler(strRes,marker);//右键单击marker出现右键菜单事件
32             
33             
34         }
35     });
36     map.addEventListener("rightclick",function(e){
37         if(e.overlay){//判断右键单击的是否是marker
38             
39         }else{
40             s = e.point.lng;//经度
41             w = e.point.lat;//维度
42             RightClick();//右键单击map出现右键菜单事件
43         }
44     });
45 });    
46 
47 //右键单击map出现右键菜单事件
48 function RightClick(){
49     var createMarker = function(map){//右键更新站名
50         if (confirm("要新建站点吗?")){
51             if(true){
52                 $(".AllSetMassage").show();
53             }
54         }    
55     };
56     var markerMenu=new BMap.ContextMenu();
57     markerMenu.addItem(new BMap.MenuItem('新建站点',createMarker.bind(map)));
58     map.addContextMenu(markerMenu);//给标记添加右键菜单
59 }
60 
61 //右键单击marker出现右键菜单事件
62 function RightClickHandler(stationId,marker){
63     var removeMarker = function(e,ee,marker){//右键删除站点
64             var json={
65                     "StationId":stationId,
66             };
67             if (confirm("要删除站点"+stationId+"吗?")){
68                 if(true){
69                     $.getJSON("./DeleteStationServlet",{json:JSON.stringify(json)},function(json){
70                         if(json.result==true){
71                             alert("删除站点"+stationId+"成功!");
72                             map.removeOverlay(marker);               //将地图中的标记删除
73                         }        
74                     });
75                 }
76             }    
77     };
78     var updateMarker = function(marker){//右键更新站名
79         if (confirm("要修改站点"+stationId+"的站名吗?")){
80             if(true){
81                 $(".AllUpdateMassage").show();
82                 $("#stationId").val(stationId);
83             }
84         }    
85     };
86     var markerMenu=new BMap.ContextMenu();
87     markerMenu.addItem(new BMap.MenuItem('删除站点',removeMarker.bind(marker)));
88     markerMenu.addItem(new BMap.MenuItem('修改站名',updateMarker.bind(marker)));
89     marker.addContextMenu(markerMenu);//给标记添加右键菜单
90 }

效果:

右键单击map(非marker)

右键单击marker:

原文地址:https://www.cnblogs.com/landiljy/p/5241442.html