百度地图搜索(三)

来源:互联网 发布:知美术馆 编辑:程序博客网 时间:2024/05/21 14:05

问题

开发中遇到的问题,记录一下

1、默认显示路况信息

var ctrl = new BMapLib.TrafficControl({    showPanel: false //是否显示路况提示面板  });  map.addControl(ctrl);  ctrl.setAnchor(BMAP_ANCHOR_TOP_RIGHT);  ctrl.showTraffic();

2、去掉搜索结果面板上的‘去往终点的路线’几个字(自己找的简单方法,目测不正确的方式)

h1{display:none}

3、判断覆盖物的点击事件还是地图的点击事件

map.addEventListener("click", showInfo);function showInfo(e) {    console.log(e);    //alert(e.point.lng);    //alert(flag);    //判断是不是覆盖物,单击地图时为null    if (e.overlay==null) {      endLng = e.point.lng;      endLat = e.point.lat;      getAddress(e.point.lng, e.point.lat);      //sss1();    }  }

4、三条线路(最少时间、最短距离、避免高速)

路线数组在js方法中,不能加引号,引号会查询内容出差。

5、刚加载完成页面时,第一次点击地图,触发点击地图事件,获取经度纬度后地址反解析时,解析结果为空(null)
错误代码:

var address=null;function getAddress(longitude, latitude) {    //通过baiduMap API获取街道名称    var point = new BMap.Point(longitude, latitude);    var gc = new BMap.Geocoder();    gc.getLocation(point, function (rs) {      var addComp = rs.addressComponents;      address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;    });    return address;  }

修改后:

var address=null;function getAddress(longitude, latitude) {    //通过baiduMap API获取街道名称    var point = new BMap.Point(longitude, latitude);    var gc = new BMap.Geocoder();    gc.getLocation(point, function (rs) {      var addComp = rs.addressComponents;      address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;      sss1();    });    //return address;  }function sss1(){      //alert(address);      $('#end-input').val(address);  }

自己分析原因:gc.getLocation()方法,因为内部实现为异步加载处理,所以第一次点击时没有执行完就return,通过方法调用去避免此类发生。

6、删除路线

function removeLuxian() {    var alls = map.getOverlays();    for (var i = 0; i < alls.length; i++) {        var s = 0;        for (var j = 0; j < markers.length; j++) {            if (alls[i].stationId == markers[j].stationId) {                s = 1;            }        }        if (s == 0) {            console.log(alls[i]);            map.removeOverlay(alls[i]);        }    }}

以上为个人处理的方式,有更好的处理方法,求交流。
百度地图api:http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a7b3

0 0
原创粉丝点击