1. js
  1. $.getJSON("./GetStationPlaceServlet",function(json){
  2. for(var i=0;i<json.length;i++){
  3. var obj1 = eval(json);
  4. //获取经纬度
  5. fStationlon = parseFloat(obj1[i].Stationlon);
  6. fStationlat = parseFloat(obj1[i].Stationlat);
  7. var pt = new BMap.Point(fStationlon,fStationlat);
  8. var myIcon = new BMap.Icon("photo/station.png",new BMap.Size(50,50),{ anchor: new BMap.Size(10, 10) });
  9. var marker = new BMap.Marker(pt,{icon:myIcon}); // 创建标注
  10. map.addOverlay(marker); //将标注添加到地图中
  11. var strRes = parseFloat(obj1[i].StationId);
  12. addClickHandler(strRes,marker);//左键单击marker事件
  13. RightClickHandler(strRes,marker);//右键单击marker出现右键菜单事件
  14. RightClick();//右键地图出现右键菜单事件
  15. }
  16. });
  17. //右键单击marker出现右键菜单事件
  18. function RightClickHandler(stationId,marker){
  19. var removeMarker = function(e,ee,marker){//右键删除站点
  20. var json={
  21. "StationId":stationId,
  22. };
  23. if (confirm("要删除站点"+stationId+"吗?")){
  24. if(true){
  25. $.getJSON("./DeleteStationServlet",{json:JSON.stringify(json)},function(json){
  26. if(json.result==true){
  27. alert("删除站点"+stationId+"成功!");
  28. map.removeOverlay(marker); //将地图中的标记删除
  29. }
  30. });
  31. }
  32. }
  33. };
  34. var updateMarker = function(marker){//右键更新站名
  35. if (confirm("要修改站点"+stationId+"的站名吗?")){
  36. if(true){
  37. $(".AllUpdateMassage").show();
  38. $("#stationId").val(stationId);
  39. }
  40. }
  41. };
  42. var markerMenu=new BMap.ContextMenu();
  43. markerMenu.addItem(new BMap.MenuItem('删除站点',removeMarker.bind(marker)));
  44. markerMenu.addItem(new BMap.MenuItem('修改站名',updateMarker.bind(marker)));
  45. marker.addContextMenu(markerMenu);//给标记添加右键菜单
  46. }
  47. //鼠标左键单击marker事件
  48. function addClickHandler(stationId,marker){
  49. marker.addEventListener("click",function(e){
  50. var p = marker.getPosition(); //获取marker的位置
  51. var staId={
  52. "StationId":stationId,
  53. };
  54. $.getJSON("./GetStationInfoServlet",{json:JSON.stringify(staId)},function(json){
  55.  
  56. for(var i=0;i<json.length;i++){
  57. var obj1 = eval(json);
  58.  
  59. stationName = obj1[i].stationName;
  60.  
  61. var content = "站点编号:"+stationId+"<br/>"+ "站点名称:"+stationName;
  62. openInfo(content,e);
  63. }
  64. });
  65. });
  66. }
  67. //左键单击marker弹出窗口事件
  68. function openInfo(content,e){
  69. var p = e.target;
  70. var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
  71. var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象
  72. map.openInfoWindow(infoWindow,point); //开启信息窗口
  73. }
  74. //修改站点站名
  75. function update(){
  76. var stationId=$("#stationId").val();//编号
  77. var stationName=$(".AllUpdateMassage_name").val();//名字
  78.  
  79. var json={
  80. "StationId":stationId,
  81. "StationName":stationName
  82. };
  83.  
  84. $.getJSON("./UpdateStationServlet",{json:JSON.stringify(json)},function(json){
  85.  
  86. if(json.result==true){
  87. alert("站点"+stationId+"站名修改成功!");
  88. $(".AllUpdateMassage").hide();
  89. }
  90. else{
  91. alert("失败!");
  92. }
  93. });
  94.  
  95. }

效果图:

地图上和数据库中都已删除此点信息:

我在实现这个时,发现有人只能在一个marker上添加右键菜单。我这个不存在这个问题。原理好像是关于闭包啥的,我也是新手不是很清楚,望懂得人不惜指教。

         

『实践』百度地图给多个marker添加右键菜单(删除、更新)的更多相关文章

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

      var map; var s;//经度 var w;//纬度 $(document).ready(function(){ $(".mune").load("jsp/c ...

  2. 百度地图API 循环向 marker 添加 click事件

    使用百度地图API,循环向marker添加InfoWindow时,所有的marker点击弹出的inforwindow为最后一个添加的infowindow,百度后,使用js闭包解决此问题,直接贴代码: ...

  3. 『实践』Yalmip获取对偶函数乘子

    『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...

  4. 『实践』Yalmip+Ipopt+Cplex使用手册

    Yalmip+Ipopt+Cplex使用手册 1.软件版本 Cplex 12.6.2,Matlab R2014a,Ipopt 3.12.9,Yalmip 2.Cplex添加方法 官方下载地址: htt ...

  5. 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现

    『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现 1.基本设定和软件版本 主机名 ip 对应角色 mas ...

  6. 百度地图API 海量点 自定义添加信息

    <!--添加百度地图--> <script type="text/javascript" src="http://api.map.baidu.com/a ...

  7. 『实践』Yalmip建模+Cplex类求解

    Yalmip建模+Cplex类求解 一.缘由 Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类.而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限. 图1 ...

  8. 『实践』Matlab实现Flyod求最短距离及存储最优路径

    Matlab实现Flyod求最短距离及存储最优路径 一.实际数据 已知图中所有节点的X.Y坐标. 图中的节点编号:矩阵中的编号 J01-J62:1-62; F01-F60:63-122; Z01-Z0 ...

  9. 『实践』Android之短信验证码(用的Mob短信验证)

    1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...

随机推荐

  1. 一千个不用Null的理由

    原文链接:http://www.importnew.com/27378.html 原文出处: xrzs 港真,Null 貌似在哪里都是个头疼的问题,比如 Java 里让人头疼的 NullPointer ...

  2. PKUWC Slay The Spire

    题面链接 LOJ sol 好神啊.果然\(dp\)还是做少了,纪录一下现在的思维吧\(QAQ\). 我们首先可以发现期望是骗人的,要不然他乘的是什么xjb玩意. 其实就是要求所有方案的最优方案和. 因 ...

  3. 【HDU5469】Antonidas(点分治,字符串哈希)

    [HDU5469]Antonidas(点分治,字符串哈希) 题面 HDU Vjudge 题解 啊哈?什么垃圾一眼点分治+Hash判断,哈哈哈哈哈,让我来码码码. 诶,怎么WA了.改改改改改. 诶,怎么 ...

  4. Android Intent 总结

    //打开指定网页Intent intent = new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.goo ...

  5. 解题:HEOI 2013 SAO

    题面 不好讲,直接上式子吧=.= 设$dp[i][j]$表示考虑完$i$的子树后$i$的排名为$j$的方案数,然后转移类似树形背包,具体来说是(这里假设子树在$i$后选,其实反过来还用这个式子答案也是 ...

  6. 解题:USACO14MAR Sabotage

    题面 题外话:我的实数二分有什么问题=.= 仍然(我为什么要这么说)是二分答案,如何检查呢?将所有的数减去二分出来的$mid$后求和得到和$sum$,然后如果在减出来的数列中能找出一段大于$sum$的 ...

  7. pyqt4_应用例子(计算器,对话框,进度条,日历等等)

    sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...

  8. 转:动态计算UITableViewCell高度详解

    转自:http://www.cocoachina.com/industry/20140604/8668.html   不知道大家有没有发现,在iOS APP开发过程中,UITableView是我们显示 ...

  9. 一道非常易错的js面试题

    题目如下: function Foo() { getName = function() { alert(1); }; return this; } Foo.getName = function() { ...

  10. js小记 unicode 编码解析

    var str = "\\u6211\\u662Funicode\\u7F16\\u7801"; // 关于这样的数据转换为中文问题,常用的两种方法. // 1. eval 解析 ...