您的位置:首页 > 移动开发 > Android开发

Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)

2018-01-27 01:35 696 查看

Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)

可以在非地图视图下直接获取,只要传入当前位置的经纬度 当然也可以在地图模式下获取详细信息

在非第三方地图集成下(系统自带功能)获取当前位置的经纬度,参考:

http://blog.csdn.net/weixin_37577039/article/details/79178018

但是经过测试,发现这种方式获取的地理位置描述不够准确 因此还是建议通过高德地图方式进行位置获取

在高德地图集成下获取当前位置,参考:http://blog.csdn.net/weixin_37577039/article/details/79381762

获取逆地址编码

// 声明
GeocodeSearch geocoderSearch;


private void setCurrentLocationDetails(){
// 地址逆解析
geocoderSearch = new GeocodeSearch(getApplicationContext());
geocoderSearch.setOnGeocodeSearchListener(this);
// 第一个参数表示一个Latlng(经纬度),第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 25, GeocodeSearch.AMAP);
geocoderSearch.getFromLocationAsyn(query);
}


注意这里的latLonPoint不能是LatLng类型的

要为LatLonPoint类型的

定位回调监听器中调用setCurrentLocationDetails:

/**
* 定位回调监听器
*/
public AMapLocationListener mLocationListener = new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation amapLocation) {
if (!IsGpsWork.isGpsEnabled(getApplicationContext())) {
Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.hasNotOpenGps), Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
} else {
if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//定位成功回调信息,设置相关消息
amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
double currentLat = amapLocation.getLatitude();//获取纬度
double currentLon = amapLocation.getLongitude();//获取经度
latLonPoint = new LatLonPoint(currentLat, currentLon);  // latlng形式的
/*currentLatLng = new LatLng(currentLat, currentLon);*/   //latlng形式的
Log.i("currentLocation", "currentLat : "
a790
+ currentLat + " currentLon : " + currentLon);
amapLocation.getAccuracy();//获取精度信息
setCurrentLocationDetails(); // 设置当前位置具体描述
} else {
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e("AmapError", "location Error, ErrCode:"
+ amapLocation.getErrorCode() + ", errInfo:"
+ amapLocation.getErrorInfo());
}
}
}
}
};


3 获取回传数据

当然前提是 类要

implements GeocodeSearch.OnGeocodeSearchListener


/**
*  获取回调的逆地址内容
*/
@Override
public void onRegeocodeSearched(RegeocodeResult result, int rCode) {
String formatAddress = result.getRegeocodeAddress().getFormatAddress();
Log.e("formatAddress", "formatAddress:"+formatAddress);
Log.e("formatAddress", "rCode:"+rCode);
}
@Override
public void onGeocodeSearched(GeocodeResult result, int rCode) {
}


输出结果

返回结果成功或者失败的响应码。1000为成功,其他为失败



IsGpsWork类如下,用于检查GPS是否开启

public class IsGpsWork {
//判断GPS是否开启
public static boolean isGpsEnabled(Context context) {
LocationManager locationManager = (LocationManager) context
.getSystemService(Context.LOCATION_SERVICE);
// 判断GPS模块是否开启
return locationManager != null && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐