vue 实现Web端的定位功能 获取经纬度

下面是“Vue实现Web端的定位功能,获取经纬度”的完整攻略:

准备工作

  1. 引入 Vue.js 库和 Vue-Geolocation 库。
  2. 创建一个 Vue 实例对象。
  3. 在实例对象中编写定位方法。

第一个示例

下面是一个简单的示例,演示如何获取用户当前的经度和纬度:

<template>
  <div>
    <button @click="getLocation()">获取位置</button>
    <p>当前位置: {{position}}</p>
  </div>
</template>

<script>
import Geolocation from 'vue-geolocation';

export default {
  components: {
    Geolocation
  },
  data() {
    return {
      position: {}
    }
  },
  methods: {
    getLocation() {
      this.$geolocation.getCurrentPosition().then(position => {
        this.position = position.coords;
      })
    }
  }
}
</script>

在上面的示例中,我们使用了 vue-geolocationgetCurrentPosition 方法来获取用户的经纬度信息。位置信息保存在 position 变量中,使用双花括号语法 {{position}} 渲染出来。

第二个示例

在下面这个示例中,我们演示如何获取用户距离一个固定位置的距离。在这个示例中,我们将固定位置设置为深圳市腾讯大厦的经纬度。

<template>
  <div>
    <button @click="getLocation()">获取位置</button>
    <p v-if="position.latitude && position.longitude">当前经度: {{position.latitude}},当前纬度: {{position.longitude}}</p>
    <p v-if="distance">距离腾讯大厦: {{distance}} 千米</p>
  </div>
</template>

<script>
import Geolocation from 'vue-geolocation';

export default {
  components: {
    Geolocation
  },
  data() {
    return {
      position: {},
      distance: null
    }
  },
  methods: {
    getLocation() {
      this.$geolocation.getCurrentPosition().then(position => {
        this.position = position.coords;
        this.getDistance();
      })
    },
    getDistance() {
      const lat1 = this.position.latitude;
      const lng1 = this.position.longitude;
      const lat2 = 22.539176;
      const lng2 = 113.926837;
      const radLat1 = lat1 * Math.PI / 180.0;
      const radLat2 = lat2 * Math.PI / 180.0;
      const a = radLat1 - radLat2;
      const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
      let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
      Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
      s = s * 6378.137;
      s = Math.round(s * 10000) / 10000;
      this.distance = s;
    }
  }
}
</script>

在这个示例中,我们定义了一个 getDistance 方法,用来计算当前位置到深圳市腾讯大厦的距离。我们手动设置了腾讯大厦的经纬度,并使用 haversine formula 计算距离。距离保存在 distance 变量中,使用双花括号语法 {{distance}} 渲染出来。

以上就是“Vue实现Web端的定位功能,获取经纬度”的完整攻略了,希望可以帮助你实现相关的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 实现Web端的定位功能 获取经纬度 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • OPPO A1 5G值得入手吗 OPPO A1 5G详细评测

    OPPO A1 5G值得入手吗? 1. 规格参数 先来看一下OPPO A1 5G的规格参数: CPU 内存 存储 系统 屏幕大小 分辨率 五八天玑 700 4GB/6GB 128GB ColorOS 11(基于Android 11) 6.5英寸 2400 × 1080 从规格参数来看,OPPO A1 5G和同价位产品相比有较高的配置和存储。 2. 外观设计 …

    云计算 2023年5月17日
    00
  • Python3 文章标题关键字提取的例子

    首先我们需要明确的是,文章标题关键字提取是为了从文章标题中提取出关键字,以便于文章的分类、索引和搜索。Python3是一种强大的编程语言,可以用来编写提取文章标题关键字的程序。 下面是这个过程的完整攻略: 1. 安装依赖 在开始之前,我们需要安装一些必要的Python包。可以使用以下命令安装: pip install jieba pip install nl…

    云计算 2023年5月18日
    00
  • Django执行python manage.py makemigrations报错的解决方案分享

    当我们想对Django项目的模型进行修改时,需要执行python manage.py makemigrations命令生成迁移文件。但有时候,当我们执行这个命令时,可能会遇到一些错误,例如: No changes detected 当我们没有对项目的模型进行任何修改时,执行python manage.py makemigrations会提示”No chang…

    云计算 2023年5月18日
    00
  • BMJ是什么币种?BMJ币合法吗?

    BMJ是什么币种? BMJ指的是Blockchain for Medical Justice(医疗正义区块链)的代币。BMJ代币是由Crypto Doctor团队发行的。该代币旨在建立一个基于区块链的医疗生态系统,为医疗行业提供一种去中心化、安全、透明且开放的数字解决方案。 BMJ代币具有智能合约功能,可用于支付医疗服务费用,也可以作为治疗费用的补贴。还可以…

    云计算 2023年5月17日
    00
  • Google Docs部分文档被自动共享 凸显云计算安全问题 – 狼人:-)

    Google Docs部分文档被自动共享 凸显云计算安全问题 2011-10-08 19:53 狼人:-) 阅读(123) 评论(0) 编辑 收藏 举报 近日,Google曾给不少Google Docs用户发信表示,由于Google的疏忽导致用户存在Google Docs上的部分文档会在用户不知晓的情况下被共享. 业界人士认为,Google的这一疏忽显现了云…

    云计算 2023年4月13日
    00
  • 云计算平台(检索篇)-Elasticsearch-索引篇

    Es索引的我们可以理解为数据入库的一个过程。我们知道Es是基于Lucene框架的一个分布式检索平台。索引的同样也是基于Lucene创建的,只不过在其上层做了一些封闭。          Es的索引过程比较通用的大体上有两种方式,其一是得用自身Rvier从数据库中拉数据,当然现在已经有了很多相关插件,Mysql、MDB等数据库。这种方式可以做到近时实索引,因为…

    云计算 2023年4月10日
    00
  • ASP.NET Core MVC中过滤器工作原理介绍

    下面是关于“ASP.NET Core MVC中过滤器工作原理介绍”的完整攻略,包含两个示例说明。 简介 在ASP.NET Core MVC中,过滤器是一种非常常用的技术,它可以在请求处理过程中,对请求进行预处理、后处理、异常处理等操作。本文将详细讲解ASP.NET Core MVC中过滤器的工作原理和使用方法。 过滤器的工作原理 在ASP.NET Core …

    云计算 2023年5月16日
    00
  • 基于MybatisPlus插件TenantLineInnerInterceptor实现多租户功能

    实现多租户功能可以使用MybatisPlus插件TenantLineInnerInterceptor,该插件内部通过拦截SQL语句,并在SQL语句中添加租户ID的条件,从而实现多租户数据隔离。 实现步骤 1. 添加MybatisPlus依赖 <dependency> <groupId>com.baomidou</groupId&…

    云计算 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部