首页 > 代码库 > 百度地图 自定义可编辑的交通路线

百度地图 自定义可编辑的交通路线

任务描述:

  我想自己绘制一条从地铁站出口到天安门的道路,而且还需要根据我的喜好来改变这条路线。 

如何实现:

  鼠标左击地图,绘制路线;双击后,绘制结束;绘制结束后,路线可编辑。 

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://www.mamicode.com/"http://api.map.baidu.com/api?v=1.4"></script>    <script type="text/javascript" src=http://www.mamicode.com/"http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script>    <script type="text/javascript" src=http://www.mamicode.com/"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>

 

百度地图 自定义可编辑的交通路线