基于js利用经纬度进行两地的距离计算

2023-11-05

根据地球上两点之间的经纬度计算两点之间的直线距离。经纬度到距离的计算在通信工程中应用比较广泛,所以cosbeta通过搜索找到了一个js的计算脚本(其实是google map的计算脚本,应该算是比较准确了),做成了这个经纬度算距离的工具

今天有人给cosbeta发邮件,询问计算的公式是什么样的。其实,若是把地球当作一个正常的球体(其实它是椭球)来说,球面两点之间的距离计算并不复杂,运用球坐标很容易就能计算出两点之间的弧长。当然这都是高中的知识,我和你一样,也没有那个耐心来将其推导,所以我就利用google map的经纬度到距离计算的js脚本,将球面弧长的公式给还原出来(估计这个公式是经过部分修正的),还原出来的公式如下:

对上面的公式解释如下:

公式中经纬度均用弧度表示,角度到弧度的转化应该是很简单的了吧,若不会,依然请参考这个这个经纬度算距离的工具

Lat1 Lung1 表示A点纬度和经度,Lat2 Lung2 表示B点纬度和经度;

a=Lat1 – Lat2 为两点纬度之差  b=Lung1 -Lung2 为两点经度之差;

6378.137为地球半径,单位为公里;

计算出来的结果单位为公里;

 

相应的js脚本代码为: 

//进行经纬度转换为距离的计算

     function Rad(d){
       return d * Math.PI / 180.0;//经纬度转换成三角函数中度分表形式。
    }
    //计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度
    function GetDistance(lat1,lng1,lat2,lng2){
 
        var radLat1 = Rad(lat1);
        var radLat2 = Rad(lat2);
        var a = radLat1 - radLat2;
        var  b = Rad(lng1) - Rad(lng2);
        var 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 ;// EARTH_RADIUS;
        s = Math.round(s * 10000) / 10000; //输出为公里
        //s=s.toFixed(4);
        return s;
    }

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于js利用经纬度进行两地的距离计算 的相关文章

  • Ubuntu 12.04 下安装ncurses-devel

    解决Ubuntu 12 04 使用 make menuconfig 配置Linux 内核时 出现缺少 ncurses devel 库支持 Unable to find the ncurses libraries or the require
  • Instrusive 【HDU - 5040】【2014 北京 BFS】

    题目链接 一道有着很多需要细节的地方需要注意的题 挺不错的 这题的数据也是给的很好 然后讲一下题意吧 题意 有一个N N的网格 有起点M和终点T 我们从起点需要走到终点 每一步需要花费的时间是单位一 但是呢 我们不能被摄影机拍摄到 摄影机是
  • halcon21.11安装教程详解

    文章目录 1 软件下载 2 安装过程 halcon21 11安装教程详解 1 软件下载 a 官网 https www mvtec com cn b 百度网盘下载 链接 https pan baidu com s 1 Bdz1l54PQWxb
  • Pycharm-Python 下载安装第三方库

    Pycharm Python 下载安装第三方库 一 安装第三方库 00 新建项目 02 两种安装方式 通过代码提示安装 pip install 安装 二 小结 最近我使用 pip install 安装第三方库时出现了一些问题 不知道为什么
  • nvidia自动更新带来的问题

    实验室的ubuntu 14 04 lts server 上的gpu突然不能用了 使用 nvidia smi 查看gpu信息时显示 Failed to initialize NVML GPU access blocked by the ope
  • leetcode 54. 螺旋矩阵 python

    题目描述 题解 1 逆时针的遍历顺序为 右 下 左 上 定义一个directions的list 分别对应这四个方向 如果当前方向的下一个位置到达matrix边界或者已经被访问过 则变换为下一个方向 2 定义一个和输入matrix大小相同的f
  • scala学习-Description Resource Path Location Type value toDF is not a member of org.apache.spark.rdd.R

    编译如下代码时 出现value toDF is not a member of org apache Spark rdd RDD People 错误 val rdd RDD People sparkSession sparkContext
  • 单例模式详解----懒汉式/饿汉式(C++实现)

    单例模式 单例模式是一种常用的软件设计模式 它的核心结构中只包含一个被称为单例的特殊类 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问 从而方便对实例个数的控制并节约系统资源 如果希望在系统中某个类的对象只能存在一个 单
  • 强化学习算法回顾 Q-learning 玩 OpenAI 的 Taxi 游戏

    这里使用的是 OpenAI Taxi V3 环境 这里有 4 个地点 分别用 4 个字母表示 任务是要从一个地点接上乘客 送到另外 3 个中的一个放下乘客 越快越好 成功运送一个客人获得 20 分奖励 每走一步损失 1 分 希望尽快送到目的
  • JVM内存泄露与溢出

    内存泄漏和内存溢出 内存泄露 申请的内存空间没有被正确释放 导致内存空间被占用 并且之后也不会使用 内存溢出 申请的内存空间超过了空闲内存空间 即内存不够使用 所以说 内存泄漏可能会导致内存溢出 我们需要注意有可能会导致内存泄漏的情况 常见
  • 手把手带你linux部署清华大学大模型最新版 chaglm2-6b

    准备工作 下载项目源代码 git clone https github com THUDM ChatGLM2 6B 切换到项目根目录 cd ChatGLM2 6B 安装依赖 pip install r requirements txt 安装
  • 华为免费虚拟服务器,免费虚拟服务器试用一年

    免费虚拟服务器试用一年 内容精选 换一换 本文介绍了存储容灾SDRS各特性版本的功能发布和对应的文档动态 新特性将在各个区域 Region 陆续发布 欢迎体验 购买服务及配置特性时 操作步骤中未框选的配置项请保持默认值 申请服务时 未开通企
  • Ubuntu18.04下OpenCV3.4.11的安装及使用示例

    目录 一 认识 OpenCV 二 安装 OpenCV 1 安装包 2 配置环境 三 使用示例 图片 四 使用示例 视频 1 虚拟机获取摄像头权限 2 播放视频 3 录制视频 五 总结 六 参考资料 安装环境 VMware虚拟机安装的Ubun
  • Pytest系列-失败重跑插件pytest-rerunfailures的使用(9)

    前提条件 以下先决条件才能使用pytest rerunfailures Python 3 5 最高 3 8 or PyPy3 pytest 5 0或更高版本 安装 pip3 install pytest rerunfailures i ht
  • Vue前端项目-首页-获取角色

    目录 Vue端代码 1 前端守卫设置 2 Vuex中定义getter 3 新建 getters js 文件 4 定义 GetInfo 方法获取用户角色信息 5 获取用户信息API 6 请求拦截器 SpringBoot 端 1 Control
  • 操作系统进程管理相关习题

    一 选择题 从静态角度上看 进程是有 A B C 三部分组成 其中 C 是进程存在的唯一标志 当几个进程共享 A 时 A 应当是可重入代码 A B C 1 JCB 2 PCB 3 DCB 4 FCB 5 程序段 6 数据段 7 I O缓冲区
  • 基于OpenCv的人脸识别

    OpenCV 是一个开源的计算机视觉库 它支持多种编程语言 包括 C Python 等 它包含了很多计算机视觉算法和工具 其中包括人脸识别 人脸识别的基本思路是 首先从图像或视频中检测出人脸的位置 然后对人脸进行特征提取 最后根据这些特征来
  • Vue npm run dev 时提示“sh: 1: webpack-dev-server: not found“

    记录自用 在ubuntu下运行项目的时候出现如下问题 经过查找 发现应该是缺少部分模块的原因 通过执行 npm install 成功解决问题
  • eglSwapBuffers

    一般性嵌入式平台 利用双缓冲进行Swap的时候 Display和Surface进行实际意义上的地址交换 来实现eglSwapBuffers的标准 如上图的右侧所示 上图的左侧表示 单缓冲Framebuffer的形式 Surface永远都在后
  • GD32F103搭建工程记录: cannot open source input file “RTE_Components.h“: No such file or director

    搭建兆亿的 GDF103C8T6的工程的时候提示 报错 cannot open source input file RTE Components h No such file or directory 工程文件是 仿照stm32 去搭建的

随机推荐

  • 预置APK到android系统中(带源码/不带源码)

    一 如何将带源码的APK预置进系统 1 首先将app代码放在源码中 1 1 可以放在vendor 目录下自己项目的package app 下面 1 2 可以放在vendor google partner gms apps 或者 vendor
  • 服务器数据库查看版本信息失败,查看服务器上的数据库版本

    查看服务器上的数据库版本 内容精选 换一换 升级PostgreSQL引擎大版本 能让您享受到PostgreSQL新版本带来的功能 性能 安全的提升 但大版本升级可能存在向后不兼容的数据变更 可能导致现有业务运行不兼容 因此需要用户使用目标版
  • 程序中断方式

    系统设置程序中断的目的就是能让系统处理更高等级的任务 比如紧急事件 对系统有改动的更高权限的任务 因为CPU 是计算机中处理任务的核心 程序中断在CPU中设立 外设和程序中端分别是由中端控制器和程序内置的中断服务程序配合操作系统来决定 使操
  • 计算机硬件acc作用,累加器A的主要作用是什么_一文解析累加器a和acc的区别

    累加器简介 在中央处理器中 累加器 accumulator 是一种寄存器 用来储存计算产生的中间结果 如果没有像累加器这样的寄存器 那么在每次计算 加法 乘法 移位等等 后就必须要把结果写回到内存 也许马上就得读回来 然而存取主存的速度是比
  • 【微信小程序】微信小程序支付、微信小程序webview引入H5实现支付等

    最近有个需要由于H5页面需要嵌套在微信小程序里面 所以H5的支付在小程序里面就行不通了 不过我看社区里面说的测试环境微信小程序webview引入H5是可以实现调取H5支付功能的 线上则调不起来 时间紧迫 咱也不敢尝试啊 只能另辟蹊径了 哈哈
  • vs2013+qt5.9.5+vsaddin安装配置

    一 下载地址 Qt下载地址 https mirrors tuna tsinghua edu cn qt archive qt 5 9 5 9 5 qt opensource windows x86 5 9 5 exehttps mirror
  • 【安全开发】C/C++安全编码规范

    C本质上是不安全的编程语言 例如如果不谨慎使用的话 其大多数标准的字符串库函数有可能被用来进行缓冲区攻击或者格式字符串攻击 但是 由于其灵活性 快速和相对容易掌握 它是一个广泛使用的编程语言 下面是针对开发安全的C语言程序的一些规范 1 1
  • windows11百度网盘下载,win11iso镜像百度云下载

    windows11百度网盘下载 win11iso镜像百度云 windows11百度网盘下载 win11iso镜像百度云链接 https pan baidu com s 1r96WDwsDURdrRt1nl Z0PQ 提取码 6666 上面是
  • 在vant组件下阻止手机自带键盘弹起

    废话 van field输入框伴随着小键盘的弹起 但是在已经定义了的van popup中 小键盘的弹起显得多余 尤其在地区 籍贯等的选择上 所以利用 focus 在获取焦点的时候进行阻止 代码
  • 局域网配置网站DNS服务器的安装

    小提示 要想成功部署DNS服务 运行Windows Serve 2003的计算机中必须拥有一个静态IP地址 只有这样才能让DNS客户端定位DNS服务器 另外如果希望该DNS服务器能够解析Internet上的域名 还需保证该DNS服务器能正常
  • STM32单片机示例:多个定时器级联使用

    文章目录 目的 基础说明 关键配置与代码 示例链接 目的 有些情况下会遇到单片机的定时器位数不够用 这时候可以使用低定时器级联的方式来处理 这里将对此做个示例说明 基础说明 这里说的定时器级联是指一个定时器正常计数工作 然后在发生溢出时发送
  • PYthon 转换HTML到Text纯文本

    今天项目需要将HTML转换为纯文本 去网上搜了一下 发现Python果然是神通广大 无所不能 方法是五花八门 拿今天亲自试的两个方法举例 以方便后人 方法一 1 安装nltk 可以去pipy装 注 需要依赖以下包 numpy PyYAML
  • AT24C02的使用说明和完整代码-51单片机

    AT24C02的使用说明和完整代码 51单片机 简述 at24c02为存储器芯片 可以使用单片机将数据存入其中 同时也可以任意读取 at24c02的原理及使用方法在其说明资料中已有充分的讲述 本篇仅对其使用的关键步骤进行罗列 以及说明一下具
  • MySQL主从复制的实现

    MySQL主从复制的理解图 MySQL Replication原理 主从复制 也称 AB 复制 允许将来自一个MySQL数据库服务器 主服务器 的数据复制到一个或多个MySQL数据库服务器 从服务器 复制是异步的 从站不需要永久连接以接收来
  • React中文文档之Lifting State Up

    Lifting State Up 提升状态 经常的 几个组件需要映射相同的数据改变 我们推荐提升共享的state状态到它们最近的公共祖先元素 让我们看看这是如何实现的 在这个章节 我们将创建一个温度计算器 计算在一个给定的温度 水是否会沸腾
  • 20200331 --【Python】-- selenium 登录练习

    学习 python 的第59天 模拟腾讯课堂 自动化 登录案例 简单 coding utf 8 Time 2020 3 31 10 52 Author admin Site File 腾讯课堂登录 py Software PyCharm i
  • Allegro显示飞线和隐藏飞线

    隐藏飞线 显示飞线
  • C++ 标准库中数据类型转换

    头文件引用
  • 延迟队列的方案设计

    延迟队列的实现方案 一 应用场景 什么是延时队列 顾名思义 首先它要具有队列的特性 再给它附加一个延迟消费队列消息的功能 也就是说可以指定队列中的消息在哪个时间点被消费 延时队列在项目中的应用场景是比较多的 尤其像电商类平台 1 订单成功后
  • 基于js利用经纬度进行两地的距离计算

    根据地球上两点之间的经纬度计算两点之间的直线距离 经纬度到距离的计算在通信工程中应用比较广泛 所以cosbeta通过搜索找到了一个js的计算脚本 其实是google map的计算脚本 应该算是比较准确了 做成了这个经纬度算距离的工具 今天有