根据经纬度获取城市poi信息,以及cityCode(cityId)

 分析:在网上找了很多方法:

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

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信息是成立的,避免绕弯路。

你可能感兴趣的:(关键代码,原创,android,baidumap,GeoCoder,地理编码)