百度地图,mark点,获取mark的id label等

Posted 小~牧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度地图,mark点,获取mark的id label等相关的知识,希望对你有一定的参考价值。

设计要求: 
1,打开地图页面, 从自己的mysql数据库读取数据, 渲染到地图上(多个点)
2,点击其中一个点,生成一个自己定义的DIV(里面元素自己定义,这里不是用的label)
3,DIV里有该点 在数据库的所有数据(能获得推送实时数据)
initMap:function(){
  var me=this;//定义全局对象
  me.map = new BMap.Map("allmap", {enableMapClick:false}); //创建地图
  var point = new BMap.Point(120.61990712,31.31798737)// 创建点坐标(默认) 这里是苏州
  me.map.centerAndZoom(point, 12);                  //默认缩放比例  其实打开地图的默认等级
  me.map.enableScrollWheelZoom();                 //启用滚轮放大缩小
//添加控件
  var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});// 左上角,添加比例尺
  var top_left_navigation = new BMap.NavigationControl()//左上角,添加默认缩放平移控件
  me.map.addControl(top_left_control)
me.map.addControl(top_left_navigation);
  me.map.enableScrollWheelZoom();//获取缩放等级,这里没什么用写着玩的;

  //获取数据data  这里从自己数据库获取数据 我就省略了. 编辑大概样式()
  me["data"]={
  001:{name:苏州市工业园区,id:215006,lat: 31.31529999,lon:120.78209686,point:{[id_:001001,name_:测试点1]}},
  002:{name:苏州市新区,id:215003,lat: 33.31529999,lon:120.78209686,point:{[id_:002001,name_:测试点2]}}
  }

}
//大量添加markers 
addMarks: function (data) {
        var me=this;
        for(var m in data){
        me.addMark(data[m]) }
},
//单个添加marker点(包括单击事件,DIV展开,数据渲染,marker的ID位置放置,与获取)
addMark:function(data){     
        var me=this;
        var label;
        var point = new BMap.Point(data.lon,data.lat); //建立测试point点
        var marker=new BMap.Marker(point,{icon:new BMap.Icon("../../images/dc_chg_run_24.png", new BMap.Size(24, 24))}); //在地图上建立marker点  ,自定义图片,托片大小        
          label = new BMap.Label(data.id, { offset: new BMap.Size(20, 0) }); //创建marker点的标记,这里注意下,因为百度地图可以对label样式做编辑,所以我这里吧重要的id放在了label(然后再隐藏)
          label.setStyle( { display:"none" });//对label 样式隐藏
          marker.setLabel(label); //把label设置到maker上
          marker.setTitle(data.name); //这里设置maker的title (鼠标放到marker点上,会出现它的title,所以我这里把name,放到title里)
          me.map.addOverlay(marker); //把maker点添加到 地图上
          data["chargerMarker"]=marker; //这里很重要, 把maker对象放到缓存的data 里面
          marker.addEventListener("click", function (e) { //这里添加maker的监听点击事件,触发自定义div("#info-panel)的展示                       
                         $("#info-panel").toggle(300);//div展开,关闭
                        me.tag=e.target.getLabel().content; //点击maker点后  获取label里面的内容
                        $("#id").html(e.target.getLabel().content); //这里就可以获取到marker的id
                        //根据me.tag 作为data的key  就能获取缓存data对应数据,就可以渲染到 自定义div里

  }
},
//图标跟换,根据数据要求,对该marker图标切换,闪烁
假设 id="001";当然 数据推送的时候这个ID 实时变化的
changeIcon: function (id) {     
        var me=this;
        var myIcon;
        var state=parseInt(ms.state);
          switch(state){  
        case 0 : myIcon =new BMap.Icon("../../images/stop.png", new BMap.Size(24, 24)); break;
        case 1: myIcon =new BMap.Icon("../../images/run.png", new BMap.Size(24, 24)); break;
        case 2 : myIcon =new BMap.Icon("../../images/broken.png", new BMap.Size(24, 24)); break;
        default :; }
      me.data[id].chargerMarker.setIcon(myIcon);//改变图标    
},


PS:随便瞎写写的~写的不好,多多见谅~



 

以上是关于百度地图,mark点,获取mark的id label等的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图聚合点

谷歌markercluster

百度地图

java使用百度地图,进行点定位,点位置不正确

高德地图怎么在指定地点添加mark并且可以有点击事件csdn

PCB Mark点相关