第一种方式:
public static void reverseGeoCode(LatLng latLng) {
// 创建地理编码检索实例
GeoCoder geoCoder = GeoCoder.newInstance();
//
OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {
// 反地理编码查询结果回调函数
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
if (result == null
|| result.error != SearchResult.ERRORNO.NO_ERROR) {
// 没有检测到结果
}
addressText = result.getAddress();//这里的addressText就是我们要的地址
}
// 地理编码查询结果回调函数
@Override
public void onGetGeoCodeResult(GeoCodeResult result) {
if (result == null
|| result.error != SearchResult.ERRORNO.NO_ERROR) {
// 没有检测到结果
}
}
};
// 设置地理编码检索监听者
geoCoder.setOnGetGeoCodeResultListener(listener);
//
geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(latLng));
// 释放地理编码检索实例
// geoCoder.destroy();
}
我在实际使用过程中用第一种方式一直没成功,onGetReverseGeoCodeResult这个回调方法一直没执行,或者执行以后返回的参数是空的,纠结了很久一直没解决,于是百度一番,找到了第二种方式!
第二种:
Activity implements OnGetGeoCoderResultListenerGeoCoder mSearch = null;
mSearch = GeoCoder.newInstance();
mSearch.setOnGetGeoCodeResultListener(this);
mSearch.reverseGeoCode(new ReverseGeoCodeOption()
.location(latlng));
}
@Override
public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
}
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
GeoCodeAddress = reverseGeoCodeResult.getAddress();
}
然后重写onGetGeoCodeResult方法和onGetReverseGeoCodeResult方法,在onGetGeoCodeResult里面写未取到地址的东西,而onGetReverseGeoCodeResult里面就是我们取到的值!