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

任务描述:

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

如何实现:

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

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>

 

posted on 2014-12-02 14:20  AlexGeng  阅读(10064)  评论(0编辑  收藏  举报

导航