uniapp如何实现离线定位?

uniapp如何实现离线定位?调用方法获取坐标

阅读 4.8k
3 个回答

uni-app网络、离线定位获取经纬度的方法如下所示:

async getLatlng() {
  let getLatlngOnline = ()=>{
    return new Promise((resolve, reject)=>{
      uni.getLocation({
        type: 'cz001',
        success: (res)=> {
          resolve({lat: res.latitude, lng: res.longitude})
        },
        fail: (error)=> {
          uni.showToast({
            title: '当前位置获取失败,请检查是否打开GPS',
            duration: 3000,
            icon: 'icon'
          });
          reject();
        }
      });
    });
  }
  let getLatlngOffline = ()=>{
    return new Promise((resolve, reject)=>{
      plus.geolocation.getCurrentPosition((res)=>{
        resolve({lat: res.coords.latitude, lng: res.coords.longitude});
      }, (error)=>{
        uni.showToast({
          title: error.message,
          duration: 3000,
          icon: 'icon'
        });
        reject();
      });
    });
  }
  return new Promise((resolve, reject)=>{
    uni.getNetworkType({
      success: async ({networkType})=>{
        try{
          let coord = networkType === 'none'?await getLatlngOffline():await getLatlngOnline();
          resolve(coord);
        }catch(_){
          reject();
        }
      }
    })
  });
},

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

本质还是需要有定位服务权限后,调用接口获取信息,只不过此时信息可能只有坐标信息,而没有具体对应区域位置信息啦。
如果要获取区域位置,需要本地缓存相应数据来进行定位查询。

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题