高德地图(实时获取定位)

获取定位数据

第 1 步,配置AndroidManifest.xml

声明Service组件

在application标签中声明service组件,每个app拥有自己单独的定位service。

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

然后,声明权限

(6.0以上)

<!--用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

<!--用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

<!--用于访问网络,网络定位需要上网-->

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<!--用于读取手机当前的状态-->

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><

!--用于写入缓存数据到扩展存储卡-->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<!--用于申请调用A-GPS模块-->

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>

<!--用于申请获取蓝牙信息进行室内定位-->

<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

最后,设置高德Key

在application标签中加入:

<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//开发者申请的key

</meta-data>

第 2 步,初始化定位

请在主线程中声明AMapLocationClient类对象,需要传Context类型的参数。推荐用getApplicationContext()方法获取全进程有效的context。


 

//声明AMapLocationClient类对象

public AMapLocationClient mLocationClient = null;

//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();

//初始化定位

mLocationClient = new AMapLocationClient(getApplicationContext());

//设置定位回调监听

mLocationClient.setLocationListener(mLocationListener);

//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);

第 3 步,配置参数并启动定位

创建AMapLocationClientOption对象

AMapLocationClientOption对象用来设置发起定位的模式和相关参数。

//声明AMapLocationClient类对象

public AMapLocationClient mLocationClient = null;

//声明定位回调监听器

public AMapLocationListener mLocationListener = new AMapLocationListener();

//初始化定位

mLocationClient = new AMapLocationClient(getApplicationContext());

//设置定位回调监听

mLocationClient.setLocationListener(mLocationListener);

//声明AMapLocationClientOption对象

public AMapLocationClientOption mLocationOption = null;

//初始化AMapLocationClientOption对象

mLocationOption = new AMapLocationClientOption();

选择定位场景

说明:该部分功能从定位SDK v3.7.0开始提供。如果开发者选择了对应的定位场景,

那么则不用自行设置AMapLocationClientOption中的其他参数,SDK会根据选择的场景自行定制option参数的值,

当然开发者也可以在基础上进行自行设置。实际按最后一次设置的参数值生效。

//声明AMapLocationClient类对象

public AMapLocationClient mLocationClient = null;

//声明定位回调监听器

public AMapLocationListener mLocationListener = new AMapLocationListener();

//初始化定位

mLocationClient = new AMapLocationClient(getApplicationContext());

//设置定位回调监听

mLocationClient.setLocationListener(mLocationListener);

AMapLocationClientOption option = new AMapLocationClientOption();

/** * 设置定位场景,目前支持三种场景(签到、出行、运动,默认无场景) */

// option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);

//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);

// option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
if(null != mLocationClient){
    mLocationClient.setLocationOption(option);
    //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
    mLocationClient.stopLocation();
    mLocationClient.startLocation();
}

//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);

选择定位模式

高德定位服务包含GPS和网络定位(Wi-Fi和基站定位)两种能力。定位SDK将GPS、网络定位能力进行了封装,

以三种定位模式对外开放,SDK默认选择使用高精度定位模式。

高精度定位模式:会同时使用网络定位和GPS定位,优先返回最高精度的定位结果,以及对应的地址描述信息。

//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);

//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);

//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);

  //设置定位模式为AMapLocationMode.Battery_Saving,低功耗模式。
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);
        //设置定位模式为AMapLocationMode.Device_Sensors,仅设备模式。
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Device_Sensors);
        //获取一次定位结果:
//该方法默认为false。
        mLocationOption.setOnceLocation(true);

//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);

//获取最近3s内精度最高的一次定位结果:
//设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
        mLocationOption.setOnceLocationLatest(true);

//设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。
        mLocationOption.setInterval(1000);
        //设置是否返回地址信息(默认返回地址信息)
        mLocationOption.setNeedAddress(true);
        //关闭缓存机制
        mLocationOption.setLocationCacheEnable(true);
        //给定位客户端对象设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
//启动定位
        mLocationClient.startLocation();
//结束!!Over   么么哒!!!!!1

//声明AMapLocationClient类对象public AMapLocationClient mLocationClient = null;//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener();//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(mLocationListener);

猜你喜欢

转载自blog.csdn.net/weixin_42421241/article/details/80778519