之前我了解到的地图定位都是涉及到地图显示以后的定位,然后我在新项目中对于地图不用展示,但是需要位置。一开始我的想法是隐藏一个地图控件,然后通过高德之拾取地点来实现,但是一想到整个布局需要多添加一个控件的时候,强迫症的我就受不了!后来找了几个项目,发现之前的一个工具类,经测试完全木有问题。于是这里记录下来!!
package cn.com.lucky.mipi.util;
import android.content.Context;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
/**
* 地理位置信息
* Created by 魏兴 on 2017/7/6.
*/
public class LocationHolder implements AMapLocationListener {
public static String city = "正在定位地址...";
public LocationHolder(Context context){
// 初始化定位
AMapLocationClient mlocationClient = new AMapLocationClient(context);
// 设置定位回调监听
mlocationClient.setLocationListener(this);
// 初始化定位参数
AMapLocationClientOption mLocationOption = new AMapLocationClientOption();
// 设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
// 设置是否返回地址信息(默认返回地址信息)
mLocationOption.setNeedAddress(true);
// 设置是否只定位一次,默认为false
mLocationOption.setOnceLocation(false);
// 设置是否强制刷新WIFI,默认为强制刷新
mLocationOption.setWifiActiveScan(true);
// 设置是否允许模拟位置,默认为false,不允许模拟位置
mLocationOption.setMockEnable(true);
// 设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(5000);
// 给定位客户端对象设置定位参数
mlocationClient.setLocationOption(mLocationOption);
// 启动定位
mlocationClient.startLocation();
}
@Override
public void onLocationChanged(AMapLocation amapLocation) {
if (amapLocation != null && amapLocation.getErrorCode() == 0) {
city = amapLocation.getCity();
}
}
}