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

任务描述:

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

 

如何实现:

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

 

TIPS:

  API1.1以后,可以使用enableEditing()来开启折线可编辑功能。

 

图示:

  

 

运行代码,请点击这里

 

代码:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具" />
<meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图" />
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>自定义可编辑路线</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?key=46ce9d0614bf7aefe0ba562f8cf87194&v=1.1&services=true">
</script>
</head>
<body>
<div style="width:520px;height:340px;border:1px solid gray" id="container">
</div>
</body>
<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.setPoints(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>
</html>

 

 

posted @ 2010-12-22 13:40  酸奶小妹  阅读(10239)  评论(5编辑  收藏  举报