欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

根据经纬度获取城市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信息是成立的,避免绕弯路。