根据经纬度获取城市poi信息,以及cityCode(cityId)
程序员文章站
2022-06-10 16:28:48
...
分析:在网上找了很多方法:
1、发送一个http请求地址获取JSON信息:
http://api.map.baidu.com/geocoder?output=json&location=39.913542,116.379763&ak="你的AK");
,该方法不可用,貌似服务已经关闭 X
2、MKSearch.reverseGeoCode() 此API是百度官方文档,呵呵哒能点出来算你狠,不可用! X
3、mCoder = new Geocoder(getApplicationContext());
List<Address> mAddress= mCoder.getFromLocation(lat,lon,maxlenth);不可用,啥都没有获取到 X
以上方法就别尝试了,API大都删除或者失效了。
终极解决方案:
1、一般在有网的情况下,在baidumap监听回调方法中就可以获取各种信息:
BDAbstractLocationListener mlistener=new BDAbstractLocationListener(){
@Override
public void onReceiverLocation(BDLocaton bdLocation){
if(bdLocaiton!=null&&bdLocation.getLocType()!=BDlocation.TypeServerError){
String latitude=bdlocation.getLatitude();
String longitude=bdlocation.getLongitude();
//cityCode就是CityID,可以用于初始化加载离线地图
String cityCode=bdlocation.getCityCode();
String city=bdlocation.getCity();
String countryCode=bdlocation.getCountryCode();
String address=bdlocation.getAddress();
String addrstr=bdlocation.getAddrstr();
}
}
}
小结:因为以上方法都是在有网的情况下进行处理,所以从BDAbstractLocationListener中获取城市Poi信息是成立的,避免绕弯路。
上一篇: 跨页面读取数据库session失败
下一篇: FCK在线编辑器上传图片加入水印功能