前言:网上关于百度地图的API和技术博客不少,可是关于【自定义途经点】的技术博客少之又少,不少人为了修改途经点只好放弃掉driving这个接口(这个接口能够拿到路程距离和时间等很好用的数据,惋惜啊)segmentfault
先上一个官方demo,点我api
咱们能够看到,途经点以waypoint数组的方式,在检索的时候放入数组
功能是很强大,可是图标很chou有没有,彻底和咱们炫酷的UI不搭调啊,怎么办,果断改!函数
1.起点和终点的修改spa
两种方法,直接修改起点终点的marker属性,详细请点这里.net
第二种方法是删除起点和终点,再自定义一个覆盖物marker到相同的坐标出,详情请点我3d
2.途经点图标修改code
下面进入正题!先看效果htm
终于和这十个兄弟说拜拜了对不对?下面说下个人思路对象
看下onMarkersSet这个回调函数返回的原型
因此,咱们只须要修改途经点对象下 Lm.Zc.innerHTML 的value就好啦,这里我是将他改成display:none,再实例化我自定义的点放到对应坐标系,你也能够修改img的路径,根据本身口味来,下面是个人代码
//自定义图标 var startIcon=new BMap.Icon("../../../images/h5/patrol/location.png", new BMap.Size(23,38)); var endIcon=new BMap.Icon("../../../images/h5/patrol/location.png", new BMap.Size(23,38)); var wayPointIconHtml='<div style="position: absolute; margin: 0px; padding: 0px; width: 36px; height: 40px; overflow: hidden;"><img src="http://api0.map.bdimg.com/images/way-points.png" style="display: none; border:none;margin-left:-11px; margin-top:-35px; "></div>'
var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true},policy: route, onMarkersSet:function(res) { //标注点完成回调 console.info(res); var myStart = new BMap.Marker(start,{icon:startIcon}); map.removeOverlay(res[0].marker); //删除起点 map.addOverlay(myStart); var myP1 = new BMap.Marker(p1,{icon:startIcon}); console.log(res[1].Lm.Zc.innerHTML); //删除途经点 console.log(wayPointIconHtml); res[1].Lm.Zc.innerHTML=wayPointIconHtml; map.addOverlay(myP1); var myEnd = new BMap.Marker(end,{icon:endIcon}); map.removeOverlay(res[res.length-1].marker);//删除终点 map.addOverlay(myEnd); } }); driving.search(start,end,{waypoints:[p1]});