1. 程式人生 > >百度地圖新增marker並獲取InfoWindow裡面的內容,實現marker的增加、刪除、編輯

百度地圖新增marker並獲取InfoWindow裡面的內容,實現marker的增加、刪除、編輯

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=FB14a133b9bf40fec90d36c84fb4dd13"></script>
<title>地圖展示</title>
</head>
<body>
<div id="allmap" style="height:80%"></div>
<input type="button" id="btn" name="btn" value="加點" onclick="addPoint()" />
<input type="button" id="btn" name="btn" value="移除事件" onclick="removeEvent()" />
</body>
</html>
<script type="text/javascript">
// 百度地圖API功能
var map = new BMap.Map("allmap",{enableMapClick: false});    // 建立Map例項
map.centerAndZoom(new BMap.Point(116.404, 39.915), 16);  // 初始化地圖,設定中心點座標和地圖級別
map.addControl(new BMap.MapTypeControl());   //新增地圖型別控制元件
map.setCurrentCity("北京");          // 設定地圖顯示的城市 此項是必須設定的
map.enableScrollWheelZoom(true);     //開啟滑鼠滾輪縮放


function savePoint(){//滑鼠示例  滑鼠點選拾取座標點
alert(document.getElementById("test").value);
infoWindow.close();
infoWindow=[];
}
function del(arg){//點選時 地圖上新增的點錯誤時刪除
for(var i=0;i<arr.length;i++){
if(arr[i].k==arg){
map.removeOverlay(arr[i].marker);
break;
}
}
}
function addPoint(){//往地圖上加點
map.addEventListener('click', clickEvent);
}
function removeEvent(){//移除click事件 
map.removeEventListener('click', clickEvent);
infoWindow.close();
infoWindowEdit.close();
}
var k=0;//用來區別marker
var infoWindow; // 將訊息框新增到地圖中
var infoWindowEdit;
var arr=new Array();//存放新增的點  方便刪除
var clickEvent=function(e){
var lat=e.point.lat;
var lng=e.point.lng;
var point  = new BMap.Point(lng, lat);
var marker = new BMap.Marker(point);  // 建立標註
console.log("old  lat"+lat+"--"+lng);
map.addOverlay(marker);
arr.push({"lat":lat,"lng":lng,"point":point,"marker":marker,"k":++k});      
       var html = [];
       html.push("<div class=\"detailCarTip\" style='width:350px;height:100px'  >");
       html.push("<div style='font-size:14px;font-weight:bold;width:350px;'>" + "(" + "車輛資訊title" + ")</div>");  //車輛資訊
       html.push("<div style='border-bottom:1px solid #ff0000;style='width:350px;height:100px'></div>");     // 紅線
       html.push("<table cellpadding=\"0\" cellspacing=\"0\" style='width:350px;height:100px' ");
       html.push("<tr>");
       html.push("<td><label>"+ "位置:" +"</label><input type='text' id='test' name='test' /></td>");
       html.push("<td><input type='button' id='test' name='test' value='儲存' onclick='savePoint()' /></td><td><input type='button' id='test' name='test' value='刪除' onclick=\'del("+k+")\' /></td></td><td><input type='button' id='test' name='test' value='完成' onclick='removeEvent()' /></td>"
        );
       html.push("</tr>");
       html.push("</table>");
       html.push("</div>");
       infoWindow = new BMap.InfoWindow(html.join(""), {enableMessage: false,enableCloseOnClick:false});  // 建立資訊視窗物件
       marker.openInfoWindow(infoWindow); //開啟資訊視窗




       marker.addEventListener("click", function (e) { //點選時才打開訊息框 
        var newLat=lat;
        var newLng=lng;
        var m;
        for(var i=0;i<arr.length;i++){
        if(arr[i].lat==newLat && arr[i].lng==newLng){
        m=arr[i].k;
        }
        }
        var val=newLat+"---"+newLng;
       var html = [];
       html.push("<div class=\"detailCarTip\" style='width:350px;height:100px'  >");
       html.push("<div style='font-size:14px;font-weight:bold;width:350px;'>" + "(" + "車輛資訊title" + ")</div>");  //車輛資訊
       html.push("<div style='border-bottom:1px solid #ff0000;style='width:350px;height:100px'></div>");     // 紅線
       html.push("<table cellpadding=\"0\" cellspacing=\"0\" style='width:350px;height:100px' ");
       html.push("<tr>");
       html.push("<td><label>"+ "位置:" +"</label><input type='text' id='test' name='test' value="+"\""+val+"\""+"/></td>");//判斷是否同一個marker
       html.push("<td><input type='button' id='test' name='test' value='儲存' onclick='savePoint()' /></td><td><input type='button' id='test' name='test' value='刪除' onclick=\'del("+m+")\' /></td></td><td><input type='button' id='test' name='test' value='完成' onclick='removeEvent()' /></td>"
        );
       html.push("</tr>");
       html.push("</table>");
       html.push("</div>");
       infoWindowEdit = new BMap.InfoWindow(html.join(""), {enableMessage: false,enableCloseOnClick:false});  // 建立資訊視窗物件
        marker.openInfoWindow(infoWindowEdit); //開啟資訊視窗
       });

}

//新增方法  先建立 infow 這樣才能在呼叫map.openInfoWindow(infoWindow,point);時  預設新增圖示就是開啟info視窗的

/*

 function ceateInfo(map,marker,address,mft_linkman,mft_mobile,point){
var infoWindow=[];
var html = [];
        html.push("<div style='width:250px;height:80px'  >");
        html.push("<div style='font-size:14px;font-weight:bold;width:250px;'>自提地址資訊</div>");
        html.push("<div style='border-bottom:1px solid #ff0000;style='width:250px;height:80px'></div>");     // 紅線
        html.push("<table cellpadding=\"0\" cellspacing=\"0\" style='width:250px;height:80px' ");
        html.push("<tr>");
        html.push("<td>自提聯絡人:" + mft_linkman +"</td>");
        html.push("</tr>");
        html.push("<tr>");
        html.push("<td>自提聯電話:" + mft_mobile +"</td>");
        html.push("</tr>");
        html.push("<tr>");
        html.push("<td colspan='2'>自提聯地址:" + address + "</td>");
        html.push("</tr>");
        html.push("</table>");
        html.push("</div>");
        infoWindow = new BMap.InfoWindow(html.join(""), {enableMessage: false});  // 建立資訊視窗物件
marker.addEventListener("click", function () {
       marker.openInfoWindow(infoWindow); //開啟資訊視窗
   });
map.openInfoWindow(infoWindow,point);
 }

*/

</script>