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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:45   3023   0
设计要求: 
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);//改变图标        
},

  

 
 
 
 

 

转载于:https://www.cnblogs.com/xiaomurunning/p/5553870.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP