android 百度地图 正向地理编码GeoCoder

这里要注意的是:
mCoder.geocode(new GeoCodeOption().city(city).address(address));
必须放在监听后面,否则setOnGetGeoCodeResultListener监听不会回调,至少我遇到的是这样的,不知道其他人的是不是。
同理,逆向地理编码也需要放在后面。

  private static GeoCoder mCoder;

    /**
     * 正向地理编码获取坐标
     * @param city 城市
     * @param address 区县
     */
    public static void getGeoCoder(String city,String address){
        mCoder = GeoCoder.newInstance();

        mCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
            @Override
            public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
                if (null != geoCodeResult && null != geoCodeResult.getLocation()) {
                    if (null == geoCodeResult  || geoCodeResult.error != SearchResult.ERRORNO.NO_ERROR) {
                        //没有检索到结果
                        return;
                    } else {
                        double latitude = geoCodeResult.getLocation().latitude;
                        double longitude = geoCodeResult.getLocation().longitude;
                        EventBus.getDefault().post(new EventGeoCoder(latitude,longitude));
                    }
                    //释放检索实例
                    mCoder.destroy();
                }
            }

            @Override
            public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {

            }
        });
        //必须设置在监听后面,否则监听无法回调。
        mCoder.geocode(new GeoCodeOption().city(city).address(address));
    }

你可能感兴趣的:(android 百度地图 正向地理编码GeoCoder)