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

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 : " + 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为成功,其他为失败

9856120cfe7bed816b348699d60ee802.png

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);

}

}

你可能感兴趣的:(android,逆地址)