getLocation.ts 2.5 KB
/* eslint-disable no-undef */
export const getLocationHandler = () => {
  console.log('first')
  uni.getLocation({
    type: "gcj02",
    success: async (res) => {
      const latitude = res.latitude; // 纬度
      const longitude = res.longitude; // 经度
      uni.setStorageSync('latitude', latitude)
      uni.setStorageSync('longitude', longitude)
      // uni.$u.toast(`latitude: ${latitude},longitude: ${longitude} 测试获取位置`)
    },
    fail(err) {
      console.error("Failed to get location", err);
      getAppLocation()
    },
  });
}

export const getAppLocation = (isAutoSetting = true) => {
  return new Promise((resolve, reject) => {
    plus.android.requestPermissions(
      ["android.permission.ACCESS_FINE_LOCATION"],
      function (resultObj) {
        var result = 0;
        for (var i = 0; i < resultObj.granted.length; i++) {
          var grantedPermission = resultObj.granted[i];
          console.log("已获取的权限:" + grantedPermission);
          result = 1;
        }
        for (var i = 0; i < resultObj.deniedPresent.length; i++) {
          var deniedPresentPermission = resultObj.deniedPresent[i];
          console.log("拒绝本次申请的权限:" + deniedPresentPermission);
          result = 0;
        }
        for (var i = 0; i < resultObj.deniedAlways.length; i++) {
          var deniedAlwaysPermission = resultObj.deniedAlways[i];
          console.log("永久拒绝申请的权限:" + deniedAlwaysPermission);
          result = -1;
        }
        // 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
        if (result != 1 && isAutoSetting) {
          //如果用户第一次拒绝后,跳转到**应用**的权限页面
          var Intent = plus.android.importClass("android.content.Intent");
          var Settings = plus.android.importClass("android.provider.Settings");
          var Uri = plus.android.importClass("android.net.Uri");
          var mainActivity = plus.android.runtimeMainActivity();
          var intent = new Intent();
          intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
          var uri = Uri.fromParts(
            "package",
            mainActivity.getPackageName(),
            null
          );
          intent.setData(uri);
          mainActivity.startActivity(intent);
        }
        resolve('');
      },
      function (error) {
        console.log("申请权限错误:" + error.code + " = " + error.message);
        reject({
          code: error.code,
          message: error.message,
        });
      }
    );
  });
};