1 依賴
//定位
implementation 'com.amap.api:location:latest.integration'
//3D地圖
implementation 'com.amap.api:3dmap:latest.integration'
//地圖搜尋
implementation 'com.amap.api:search:latest.integration'
2 定位activity資訊
public class SelectAreaActivity extends BaseActivity implements EasyPermissions.PermissionCallbacks {
private AMapLocation mAMapLocation;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_selectarea);
ButterKnife.bind(this);
requestLocationPermissions();
}
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
getLocation();
}
private void requestLocationPermissions() {
String[] perms = {Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION};
if (EasyPermissions.hasPermissions(this, perms)) {
getLocation();
} else {
EasyPermissions.requestPermissions(this, "請求擷取您的位置", Constans.GET_LOCATION_PERMISSION, perms);
}
}
//聲明定位回調監聽器
//聲明AMapLocationClient類對象
public AMapLocationClient mLocationClient = null;
//聲明AMapLocationClientOption對象
public AMapLocationClientOption mLocationOption = null;
public AMapLocationListener mLocationListener = new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == 0) {
//擷取緯度
App.mMyLatitude = aMapLocation.getLatitude();
//擷取經度
App.mMyLongitude = aMapLocation.getLongitude();
App.mAddress = aMapLocation.getPoiName();
mAMapLocation = aMapLocation;
tvNowlocation.setText(aMapLocation.getAddress());
nowadCode = mAMapLocation.getAdCode() + mAMapLocation.getCityCode();
StringBuilder stringBuilder = new StringBuilder(nowadCode);
for (int i = 0; i < 12 - nowadCode.length(); i++) {
stringBuilder.append("0");
}
nowadCode = stringBuilder.toString();
} else {
Log.e("AmapError", "location Error, ErrCode:"
+ aMapLocation.getErrorCode() + ", errInfo:"
+ aMapLocation.getErrorInfo());
}
}
}
};
public void getLocation() {
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//設定定位回調監聽
mLocationClient.setLocationListener(mLocationListener);
//初始化AMapLocationClientOption對象
mLocationOption = new AMapLocationClientOption();
//設定定位模式為AMapLocationMode.Hight_Accuracy,高精度模式。
// mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode
// .Hight_Accuracy);
//設定定位模式為AMapLocationMode.Battery_Saving,低功耗模式。
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);
//擷取一次定位結果:
//該方法預設為false。
mLocationOption.setOnceLocation(true);
//關閉緩存機制
mLocationOption.setLocationCacheEnable(false);
//給定位用戶端對象設定定位參數
mLocationClient.setLocationOption(mLocationOption);
//啟動定位
mLocationClient.startLocation();
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
}
}