百度地圖新增marker並獲取InfoWindow裡面的內容,實現marker的增加、刪除、編輯
<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>