上一篇文章已经讲解了如何集成高德地图SDK:跳转链接
如何你想获取附近位置信息 关键字检索poi:跳转这儿
下面我们介绍下定位功能:
配置AndroidManifest文件
上一篇文章已经讲解清单文件配置: 对应的权限,服务和key值
注意:定位需要服务
<!-- 定位需要的服务 -->
<service android:name="com.amap.api.location.APSService"/>
初始化定位
先看下我们可以拿到的定位信息:
开启权限 :
//设置定位权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_PERMISSION_LOCATION);
} else {
// 初始化定位并设置定位回调监听
getCurrentLocationLatLng();
}
初始化定位:
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
mLocationClient.setLocationListener(mLocationListener);
//初始化AMapLocationClientOption对象
mLocationOption = new AMapLocationClientOption();
// 同时使用网络定位和GPS定位,优先返回最高精度的定位结果,以及对应的地址描述信息
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
// 设置为单次定位 : 默认为false
mLocationOption.setOnceLocation(true);
//设置定位请求超时时间 : 单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
mLocationOption.setHttpTimeOut(20000);
//启动地位:
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
定位回调监听:
AMapLocationListener接口只有onLocationChanged方法可以实现,用于接收异步返回的定位结果,回调参数是AMapLocation。
首先,可以判断AMapLocation对象不为空,当定位错误码类型为0时定位成功。
public AMapLocationListener mLocationListener = new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation amapLocation) {
if (!isGpsEnabled(getApplicationContext())) {
Toast toast = Toast.makeText(getApplicationContext(), "未开启GPS", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
} else {
if (amapLocation != null) {