Vue实现定位功能并且在移动端能获取定位

在vue的项目中难免会碰到获取当前定位的功能要求,接下来是我个人的获取定位的办法

//获取经纬度
getLocation(){
 navigator.geolocation.getCurrentPosition(
          (position) => {
            // this.location = `纬度: ${position.coords.latitude}, 经度: ${position.coords.longitude}`;
            const lat = String(
              Number(parseFloat(`${position.coords.latitude}`).toFixed(6))
            );
            const lon = String(
              Number(parseFloat(`${position.coords.longitude}`).toFixed(6))
            );
            this.getLocationDetails(lon, lat);
          },
          (error) => {
            console.error(error.message);
          }
        );
}
//调用逆地理编码API(我这里用的高德,你们可以视情况而定)
async getLocationDetails(longitude, latitude) {
      try {
        const response = await axios.get(
          `https://restapi.amap.com/v3/geocode/regeo?key=你们在开发者平台申请的key&location=${longitude},${latitude}`
        );
        // console.log(response.data);
        const address = response.data.regeocode.formatted_address;
        // console.log("具体位置:", address);
        this.location = address; // 这里的this.location是自己定义在变量,你们根据自己的改一下
      } catch (error) {
        console.error("获取位置信息失败:", error);
      }
    },

这个是简单的通过浏览器自带的navigator.geolocation来定位的办法,这里我做了小数点后六位的处理,所以位置不是那么精准,如果需要精确到具体位置的话可以解开经纬度小数点的限制

另外这里的定位我当时测试的时候在IE浏览器是支持的,但是在谷歌和火狐测试就不支持了,后来查阅资料有个最靠谱的解释是后端要配置SSL证书把http升级成https,因为这个操作方式在不安全的浏览器页面是不支持的,所以大家在碰到这个问题的时候可以去跟后端沟通问一下有没有配置ssl证书。另外在移动端的默认浏览器里也是可以获取地址的哦,但是想在微信内置页面获取需要配置微信的SDK,具体请查看相关资料

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 是一种用于构建用户界面的 JavaScript 框架,它提供了一种基于组件的开发模式,可用于构建单页面应用程序。在 Vue.js实现 Web 端的定位功能获取经纬度可以通过使用 HTML5 的 Geolocation API 来实现。 Geolocation API 是一种 HTML5 标准,允许 Web 应用程序使用 JavaScript 与浏览器通信并访问用户的地理位置信息。在 Vue.js 中,您可以使用 Geolocation API 获取用户的地理位置数据,并使用 Vue.js 的组件和生命周期方法来处理数据和更新 UI。以下是实现步骤: 首先,在您的 Vue.js 应用程序中,您需要创建一个组件来获取用户的位置。在这个组件中,您可以通过调用浏览器的 Geolocation API 来获取用户的位置信息。 ``` <template> <div> <button @click="getLocation">获取位置信息</button> <div v-if="lontitude && latitude"> 经度: {{longitude}} 纬度: {{latitude}} </div> </div> </template> <script> export default { data() { return { longitude: null, latitude: null } }, methods: { getLocation() { navigator.geolocation.getCurrentPosition(position => { this.longitude = position.coords.longitude this.latitude = position.coords.latitude }) } } } </script> ``` 这个组件包含一个按钮,当用户单击该按钮时将调用 getLocation 方法。该方法将调用 Geolocation API 中的 getCurrentPosition 方法,这将向用户请求权限以访问其位置信息。如果用户同意,浏览器将获取用户的位置信息,并将其保存在该组件的 data 对象中。 现在,我们已经获取到了用户的位置信息。您可以使用这些信息来更新 UI 并执行其他操作。例如,您可以使用这些信息来显示地图或定向用户的位置。 综上所述,Vue.js 使用 Geolocation API 可以轻松获取用户的当前位置信息,并可使用 Vue.js 的组件和生命周期方法进一步处理信息和更新 UI。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值