設計要求:
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:隨便瞎寫寫的~寫的不好,多多見諒~