如何利用百度API进行地图标注还有对标注的点的路线进行绘画~
var map = new BMap.Map("allmap");
var geoc = new BMap.Geocoder(); //地址解析对象
var markersArray = [];
将地图创建到DIV容器中
map.addEventListener(“click”, showInfo);
//清除标识
function showInfo(e) {
document.getElementById('lng').value = e.point.lng;
document.getElementById('lat').value = e.point.lat;
geoc.getLocation(e.point, function(rs) {
var addComp = rs.addressComponents;
var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
if(confirm("确定要地址是" + address + "?")) {
//document.getElementById('allmap').style.display = 'none';
document.getElementById('sever_add').value = address;
}else{
alert("jnn")
map.removeOverlay(markersArray[markersArray.length-1]);
}
});
addMarker(e.point);
}
给地图加添加标注的监听
有了数据marker数组,开始画轨迹,根据api来
map.enableScrollWheelZoom(true);
var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}});
var kp=[];
for(var i = 0; i <markersArray.length; i++) {
if((i==0||i==markersArray.length-1)==false){
kp.push(markersArray[i]);
}
}
获得标识数组
driving.search(markersArray[0], markersArray[markersArray.length-1],{waypoints:kp});
利用driving里的search来搜索路线根据轨迹画出
开始2个是起始点,后面是经停点(也就是我们的marker数组去掉头尾的kp数组)
for(var i = 0; i <markersArray.length; i++) {
marker = new BMap.Marker(new BMap.Point(markersArray[i].getPosition().lng, markersArray[i].getPosition().lat));
if(i == 0) { //给标注添加标签
label = new BMap.Label("起点", {
offset: new BMap.Size(20, -10)
});
} else if(i == length - 1) {
label = new BMap.Label("终点", {
offset: new BMap.Size(20, -10)
});
} else {
label = new BMap.Label("途经点" + i, {offset: new BMap.Size(20, -10)});
}
marker.setLabel(label); //标签添加到标注上
map.addOverlay(marker); //添加标注
var content = '这是第' + (i + 1) + '个点';
infoWindow = new BMap.InfoWindow(content); //给标注添加信息窗口
marker.infoWindow = infoWindow;
marker.addEventListener("click", function(e) { //标注添加点击事件
this.openInfoWindow(e.target.infoWindow);
});
这是加标签跟标识的方法。