我们知道,百度提供了根据地址查询经纬的API:
http://api.map.baidu.com/geocoder/v2/?address=地址&output=json&ak=你的百度ak
但,如果你的地址比较模糊,比如只有小区名,而没有城市名和区名,此时调用该方法百度只会返回一条模糊查询的经纬度,中国同名小区可以说非常常见,所以有不小的概率返回的是同名小区而非你想要的结果。这时,你可以设立一个中心点,并设置一个搜索半径,在这个范围内搜索,就可大大提高准确率,或者在一个城市内搜索,设定这个城市为搜索范围。
//设置中心点图标 var centerIcon =new BMap.Icon("../img/logo/10.png", new BMap.Size(48,55));//设置自定义标注点 var centermarker = new BMap.Marker(new BMap.Point(current_lon,current_lat),{icon:centerIcon}); map.addOverlay(centermarker);
var mPoint = new BMap.Point(自定义经度, 自定义纬度); var radius=10000;//默认搜索半径10千米,超出部分按名称查询
var local = new BMap.LocalSearch(map, {onSearchComplete:afterSearch});//设置本地搜索,afterSearch是搜索回调方法,可以获取搜索结果 local.searchNearby(地址,mPoint,radius);
//搜索完成回调函数 function afterSearch(results) { if(results.Ar[0]){ //获取返回的第一条结果 var lat=results.Ar[0].point.lat; var lng=results.Ar[0].point.lng; 。。。 } }