android百度地图地址解析失败怎么办,【百度地图API】当地址解析失败时,如何调用search方法查找地址...

有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”。

-----------------------------------------------------------------------------

首先,我们需要弄明白,地址解析的原理:使用Geocoder进行地址解析,比如“北京市海淀区上地10街”,当系统匹配到这个地址时,getPoint就会返回一个坐标点。

这里需要用到回调函数。

var myGeo = new BMap.Geocoder();// 将地址解析结果显示在地图上,并调整地图视野

myGeo.getPoint("北京市海淀区上地10街", function(point){

if (point) {

map.centerAndZoom(point, 16);

map.addOverlay(new BMap.Marker(point));

}}, "北京市");

当系统无法匹配“北京市海淀区上地10街”的时候,会返回“北京市海淀区”的几何中心点。

如果还是无法匹配,会返回“北京市”的几何中心点。

如果你只是想返回“北京市”的坐标,或者说想要模糊查询,建议不要使用地址解析。

而是使用LocalSearch类的search方法。例子详见:

http://www.cnblogs.com/milkmap/archive/2010/12/22/1914106.html

当地址解析失败时,你可以调用localsearch函数。这个方法被称之为模糊查询。

在以下的例子里,为了方便快捷,我取了第一个查询结果。

这样,当地址解析“南宁市青秀区”失败时,会自动search这个地址,并打点在地图上。

2011042718093969.jpg

完整源代码:HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

地址解析失败时搜索

var map = new BMap.Map("divMap");

map.centerAndZoom(new BMap.Point(108.532769,22.825487), 12);    //这里是定义到了南宁市

var gc = new BMap.Geocoder();

gc.getPoint("南宁市青秀区", function(pt){

if(pt){

map.addOverlay(new BMap.Marker(pt));        //如果地址解析成功,则添加红色marker

}else{

var ls = new BMap.LocalSearch("南宁市");

ls.search("南宁市青秀区");

ls.setSearchCompleteCallback(function(rs){

if (ls.getStatus() == BMAP_STATUS_SUCCESS){

var poi = rs.getPoi(0);     //取第1个查询结果

if(poi){

var pt2 = poi.point;

map.addOverlay(new BMap.Marker(pt2));       //如果查询到,则添加红色marker

}

}else{

alert("fail");

}

});

}

}, "南宁市");

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值