android 高德地图定位圈,android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)...

Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下

以前使用的是jar包 导入来实现高德定位

现在通过Gradle集成SDK(也可以使用jar包)

//定位依赖

implementation 'com.amap.api:location:latest.integration'

之后到高德申请key值,登录打开控制台 点击创建应用,如图:

f10544b35f539347e94f2602693e5183.png

填写相应信息,

名称,PackageName:项目的包名,至于SHA1安全码可以这样获取,可以 Window+R 打开控制台  输入cmd点击确定

dc892b266ba7ff459d56731ca8f95671.png

之后在弹框中完成以下操作就可以看到SHA1安全码了

7f364d9e141a3dc1922ab495638a5e29.png

上图的密钥库口令默认的是:android        (注:输入口令是看不见的,输入完成Enter即可)

输入完信息确定就可以看到key值了

c24eb2f409b889acec696a7db72cf4f2.png

AndroidManifest.xml中加入权限

复制代码

标签中添加Key值信息

Activity代码:(和以前的相比少了很多不必要的代码)

/***

* 定位

*/

private void showLocation() {

try {

mlocationClient = new AMapLocationClient(this);

mLocationOption = new AMapLocationClientOption();

mlocationClient.setLocationListener(this);

//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式

mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);

mLocationOption.setInterval(5000);

//设置定位参数

mlocationClient.setLocationOption(mLocationOption);

//启动定位

mlocationClient.startLocation();

} catch (Exception e) {

}

}

@Override

public void onLocationChanged(AMapLocation amapLocation) {

try {

if (amapLocation != null) {

if (amapLocation.getErrorCode() == 0) {

//定位成功回调信息,设置相关消息

//获取当前定位结果来源,如网络定位结果,详见定位类型表

Log.i("定位类型", amapLocation.getLocationType() + "");

Log.i("获取纬度", amapLocation.getLatitude() + "");

Log.i("获取经度", amapLocation.getLongitude() + "");

Log.i("获取精度信息", amapLocation.getAccuracy() + "");

//如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。

Log.i("地址", amapLocation.getAddress());

Log.i("国家信息", amapLocation.getCountry());

Log.i("省信息", amapLocation.getProvince());

Log.i("城市信息", amapLocation.getCity());

Log.i("城区信息", amapLocation.getDistrict());

Log.i("街道信息", amapLocation.getStreet());

Log.i("街道门牌号信息", amapLocation.getStreetNum());

Log.i("城市编码", amapLocation.getCityCode());

Log.i("地区编码", amapLocation.getAdCode());

Log.i("获取当前定位点的AOI信息", amapLocation.getAoiName());

Log.i("获取当前室内定位的建筑物Id", amapLocation.getBuildingId());

Log.i("获取当前室内定位的楼层", amapLocation.getFloor());

Log.i("获取GPS的当前状态", amapLocation.getGpsAccuracyStatus() + "");

//获取定位时间

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = new Date(amapLocation.getTime());

Log.i("获取定位时间", df.format(date));

// 停止定位

mlocationClient.stopLocation();

} else {

//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。

Log.e("AmapError", "location Error, ErrCode:"

+ amapLocation.getErrorCode() + ", errInfo:"

+ amapLocation.getErrorInfo());

}

}

} catch (Exception e) {

}

}

@Override

protected void onStop() {

super.onStop();

// 停止定位

if (null != mlocationClient) {

mlocationClient.stopLocation();

}

}

/**

* 销毁定位

*/

private void destroyLocation() {

if (null != mlocationClient) {

/**

* 如果AMapLocationClient是在当前Activity实例化的,

* 在Activity的onDestroy中一定要执行AMapLocationClient的onDestroy

*/

mlocationClient.onDestroy();

mlocationClient = null;

}

}

@Override

protected void onDestroy() {

destroyLocation();

super.onDestroy();

}

运行得到日志:

08b585845347c0fbed9d27bbb37cebc5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值