高德开放平台网址

首先进入平台,创建应用
Android高德定位集成

Android高德定位集成

Android高德定位集成

创建完成以后,就会出现我们需要的key,现在就开始配置我们的项目
共两种方法
第一种:拷贝jar包
这就需要我们先在平台上下载jar包
Android高德定位集成

Android高德定位集成

然后将jar包放入项目里关联,
再添加
app的build的文件中

implementation fileTree(include: [’*.jar’], dir: ‘libs’)

第二种

在app的build的文件里
在android 里的defaultConfig里添加

ndk {
            //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "arm64-v8a", "x86_64"
        }

添加依赖

//3D地图so及jar
implementation ‘com.amap.api:3dmap:latest.integration’
//定位功能
implementation ‘com.amap.api:location:latest.integration’
//搜索功能
implementation ‘com.amap.api:search:latest.integration’

在清单文件里添加权限

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

添加高德key

<meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="自己的appkey"></meta-data>

声明高德的服务

<service android:name="com.amap.api.location.APSService" />

用一个类去初始化,在里面自定义接口回传数据

public class MapLocationHelper implements AMapLocationListener {

    /**
     * 声明mlocationClient对象
     */
    private AMapLocationClient mLocationClient;
    /**
     * 声明mLocationOption对象
     */
    public AMapLocationClientOption mLocationOption = null;
    private LocationCallBack mLocationCallBack;
    private Context mContext;

    public MapLocationHelper(Context context, LocationCallBack locationCallback) {
        mContext = context;
        mLocationCallBack = locationCallback;
        initLocation();
    }

    /**
     * 初始化定位参数
     */
    private void initLocation() {
        mLocationClient = new AMapLocationClient(mContext);
        mLocationOption = new AMapLocationClientOption();
        // 设置定位监听
        mLocationClient.setLocationListener(this);
        // 设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        // 设置定位间隔,单位毫秒,默认为2000ms
        mLocationOption.setInterval(2000);
        // 设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
    }

    /**
     * 开启定位
     */
    public void startMapLocation() {
        //判断是否开启了,没有开启就开启
        if (!mLocationClient.isStarted()) {
            mLocationClient.startLocation();
        }
    }

    /**
     * 停止定位服务
     */
    public void stopMapLocation() {
        //判断服务是否开启了,若开启了则停止
        if (mLocationClient.isStarted()) {
            mLocationClient.stopLocation();
        }
    }

    @Override
    public void onLocationChanged(AMapLocation aMapLocation) {
        if (aMapLocation != null) {
            if (aMapLocation.getErrorCode() == 0) {
                // 可在其中解析amapLocation获取相应内容。
                //给接口设置数据
                mLocationCallBack.onCallLocationSuc(aMapLocation);
                stopMapLocation();
            } else {
                //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                Log.e("AmapError", "location Error, ErrCode:"
                        + aMapLocation.getErrorCode() + ", errInfo:"
                        + aMapLocation.getErrorInfo());
                stopMapLocation();
            }
        } else {
            stopMapLocation();
        }
    }

    //自定义一个接口,传输数据
    public interface LocationCallBack {
        void onCallLocationSuc(AMapLocation location);
    }

    /**
     * 设置接口回调
     * @param locationCallBack
     */
    public void setLocationCallBack(LocationCallBack locationCallBack){
        mLocationCallBack = locationCallBack;
    }
}

在Activity中 实现LocationCallBack接口 重写方法

创建实例,开启定位

 MapLocationHelper helper = new MapLocationHelper(this, this);
            helper.startMapLocation();

在重写的方法里,就可以获取信息,这就是里面所能获取到的所有信息
Android高德定位集成

相关文章:

  • 2022-01-09
  • 2022-12-23
  • 2021-05-15
  • 2022-02-16
  • 2021-10-21
猜你喜欢
  • 2021-12-12
  • 2022-12-23
  • 2021-04-26
  • 2021-12-07
  • 2021-10-08
  • 2021-04-26
  • 2021-05-07
相关资源
相似解决方案