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



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

更多相关文章

  1. 万字长文带你了解最常用的开源 Squid 代理服务器
  2. Android(安卓)M预览版SDK发布 Android(安卓)M开发者预览版SDK下
  3. Android(安卓)模拟器解决公司网络内无法上网的另类解决方法
  4. [转]近百个Android优秀开源项目,覆盖Android开发的每个领域
  5. 实现Android(安卓)ARM64平台下Inline Hook框架
  6. Android分享到微信等社交平台教程
  7. Android4.0.1 模拟器内核 最新下载地址及编译步骤
  8. Android实践系列之项目基础配置
  9. Android(安卓)获取经纬度的服务

随机推荐

  1. Android软键盘之代码改变软键盘状态
  2. 【Android】【基础】获取屏幕宽高
  3. Android使用继承View类来绘图
  4. Android(安卓)Studio编译运行project报错
  5. android 读取SD卡或者其他地方文件功能函
  6. android扇形菜单
  7. android 碎片
  8. android增删改查sqlite数据库
  9. Android(安卓)按键事件流程概要
  10. Android打开页面