900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > android百度地图地址解析失败怎么办 【百度地图API】当地址解析失败时 如何调用sear

android百度地图地址解析失败怎么办 【百度地图API】当地址解析失败时 如何调用sear

时间:2019-04-17 21:17:27

相关推荐

android百度地图地址解析失败怎么办 【百度地图API】当地址解析失败时 如何调用sear

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

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

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

这里需要用到回调函数。

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

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

if(point){

map.centerAndZoom(point,16);

map.addOverlay(newBMap.Marker(point));

}},"北京市");

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

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

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

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

/milkmap/archive//12/22/1914106.html

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

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

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

完整源代码:HTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd">

地址解析失败时搜索

varmap=newBMap.Map("divMap");

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

vargc=newBMap.Geocoder();

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

if(pt){

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

}else{

varls=newBMap.LocalSearch("南宁市");

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

ls.setSearchCompleteCallback(function(rs){

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

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

if(poi){

varpt2=poi.point;

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

}

}else{

alert("fail");

}

});

}

},"南宁市");

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。