1.地理编码查询接口是单列模式的,我们需要调用让它自己实例化
// 在OnCreate方法里创建地理编码检索实例
GeoCoder geoCoder = GeoCoder.newInstance();
2.调用这个方法把你想要的经纬度传入
/**
* 经纬度或地址相互转换
*
* @param latlng
*/
private void latlngToAddress(LatLng latlng) {
// 设置反地理经纬度坐标,请求位置时,需要一个经纬度geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(latlng));
//设置地址或经纬度反编译后的监听,这里有两个回调方法,
geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
//经纬度转换成地址
@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(getActivity(), "找不到该地址!",Toast.LENGTH_SHORT).show();
}
tv_address.setText("地址:" + result.getAddress());
}
@Override
public void onGetGeoCodeResult(GeoCodeResult result) {
// 详细地址转换在经纬度
String address=result.getAddress();
}});
}
地理编码指的是将地址信息建立空间坐标关系的过程。有可分为正向地图编码和反向地图编码。
正向地理编码指的是由地址信息转换为坐标点的过程,核心代码如下:
第一步,创建地理编码检索实例;
mSearch = GeoCoder.newInstance();
第二步,创建地理编码检索监听者;
OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {
public void onGetGeoCodeResult(GeoCodeResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
//没有检索到结果
}
//获取地理编码结果
}
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
//没有找到检索结果
}
//获取反向地理编码结果
}
};
第三步,设置地理编码检索监听者;
mSearch.setOnGetGeoCodeResultListener(listener);
第四步,发起地理编码检索;
mSearch.geocode(new GeoCodeOption()
.city(“北京”)
.address(“海淀区上地十街10号”);
第五步,释放地理编码检索实例;
mSearch.destroy();
反向地理编码服务实现了将地球表面的地址坐标转换为标准地址的过程。
原文:http://blog.csdn.net/bob_xing_yang/article/details/50450544