百度地图 自定义可编辑的交通路线
任务描述:
我想自己绘制一条从地铁站出口到天安门的道路,而且还需要根据我的喜好来改变这条路线。
如何实现:
鼠标左击地图,绘制路线;双击后,绘制结束;绘制结束后,路线可编辑。
TIPS:
API1.1以后,可以使用enableEditing()来开启折线可编辑功能。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>
<title>21.1自定义可编辑的交通路线</title>
</head>
<body>
<div style="clear: both;">
<div style="float: left; width: 500px; height: 340px; border: 1px solid gray" id="container">
</div>
</div>
</body>
</html>
<script type="text/javascript">
var map = new BMap.Map("container");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 18);
var e1, e2;
var p = []; //用来存储折线的点
var polyline;
var doneDraw = 0; //判断是否绘制折线结束
map.addEventListener("click", function (e1) { //当鼠标单击时
if (doneDraw == 0) { //判断是否绘制曲线完毕
p.push(new BMap.Point(e1.point.lng, e1.point.lat)) //存储曲线上每个点的经纬度
if (polyline) { polyline.setPath(p); } //如果曲线存在,则获取折线上的点 setPath(p)
else { polyline = new BMap.Polyline(p); } //如果折线不存在,就增加此点
if (p.length < 2) { return; } //当折线上的点只有一个时,不绘制
map.addOverlay(polyline); //绘制曲线
}
});
map.addEventListener("dblclick", function (e2) { //当鼠标双击时:结束绘制,并可以编辑曲线
alert("绘制完成");
doneDraw = 10;
polyline.enableEditing();
});
</script>
浙公网安备 33010602011771号