H5获取GPS定位

438 阅读1分钟

navigator.geolocation

getCurrentPosition方法即可获取定位信息,但这个API在不同系统使用上有一些差异

  • 在ios中需使用https域名方可获取
  • 在安卓中无需SSl证书也可定位(weChat中需调用其JSAPI)

getCurrentPosition

该方法接收3个参数

  • success 成功得到位置信息时的回调函数 返回一个Position对象

  • error 可选 失败时的回调函数

  • options 可选配置项

success 返回的Position对象包含的coords对象就带有经纬度坐标

error返回的code属性可判别错误类型

  • 1:用户拒绝
  • 2:定位出错
  • 3:定位超时
 navigator.geolocation.getCurrentPosition(
      ({ coords }) => {
      console.log(coords.latitude, coords.longitude)
      },
      err => {
        switch (err.code) {
          case 1:
            console.log('用户拒绝页面发起的地理位置')
            break
          case 2:
            console.log('无法获取当前位置')
            break
          case 3:
            console.log('超时')
            break
          default:
            console.log('未知错误')
            break
        }
      },

注意

getCurrentPosition返回的坐标是WGS-84国际标准GPS坐标 而我们国内地图多数是GCJ-02及在此基础上加了坐标偏移的,而百度的BD-09更是进行了二次偏移加密, 所以在使用国内地图图层服务时需要把 getCurrentPosition WGS-84坐标转换为对应的地图坐标,不然会存在定位偏移

options

可选配置项

  • enableHighAccuracy 是否启动高精模式(布尔值)
  • maximumAge 设置定位缓存过期的时间(毫秒,0为禁用缓存)
  • timeout 设置获取定位信息超时时间 (毫秒超时触发ErrorCallback)

效果

WeChat_20230613101506.gif