Javascript 之 获取两点之前的距离

工作中偶尔会碰到,后端返回一个目标位置的经纬度(吐槽:怎么不直接返回一个距离回来,还要让前端来算,【差评、嫌弃】),然后让你计算用户当前位置与目标位置的距离。

话不多说,直接上代码:

/*** 根据经纬度获取两点之间的距离* @param {Object} location1 = { latitude, longitude } 位置1的经纬度* @param {Object} location2 = { latitude, longitude } 位置2的经纬度*/
export const getDistance = (location1, location2) => {let lat1 = location1.latitude || 0;let lng1 = location1.longitude || 0;let lat2 = location2.latitude || 0;let lng2 = location2.longitude || 0;let rad1 = lat1 * Math.PI / 180.0;let rad2 = lat2 * Math.PI / 180.0;let a = rad1 - rad2;let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;let r = 6378137;let distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));// 返回 m(米)return Number(distance).toFixed(2);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉研究院 | EdgeYOLO:边缘设备上实时运行的目标检测器及Pytorch实现

本文来源公众号“计算机视觉研究院”,仅用于学术分享,侵权删,干货满满。 原文链接:EdgeYOLO:边缘设备上实时运行的目标检测器及Pytorch实现 代码地址:https://github.com/LSH9832/edgeyolo 今天分享的研究…

【LeetCode】升级打怪之路 Day 21:二叉树的最近公共祖先(LCA)问题

今日题目: 236. 二叉树的最近公共祖先1644. 二叉树的最近公共祖先 II235. 二叉搜索树的最近公共祖先 目录 LCA 问题LC 236. 二叉树的最近公共祖先 【classic】LC 1644. 二叉树的最近公共祖先 II 【稍有难度】LC 235. 二叉搜索树的最近公共祖先 ⭐⭐⭐ 今天做了几道有…

python备份库

个人简介 👨🏻‍💻个人主页:九黎aj 🏃🏻‍♂️幸福源自奋斗,平凡造就不凡 🌟如果文章对你有用,麻烦关注点赞收藏走一波,感谢支持! 🌱欢迎订阅我的…

SAM分割 图片bbox提示任意数量目标输出mask

前提条件:labelimg打标签得到bbox 1.代码 import torchfrom segment_anything import SamPredictor, sam_model_registry import cv2 import numpy as np import os import glob import xml.etree.ElementTree as ETcheckpoint "./weight/sam_vit_h_4b8939.…

分布式数据处理MapReduce简单了解

文章目录 产生背景编程模型统计词频案例 实现机制容错机制Master的容错机制Worker的容错机制 产生背景 MapReduce是一种分布式数据处理模型和编程技术,由Google开发,旨在简化大规模数据集的处理。产生MapReduce的背景: 数据量的急剧增长&…

通过OceanBase 3.x中not in无法走hash连接的变化,来看OB优化器的发展

作者简介: 张瑞远,曾从事银行、证券数仓设计、开发、优化类工作,现主要从事电信级IT系统及数据库的规划设计、架构设计、运维实施、运维服务、故障处理、性能优化等工作。 持有Orale OCM,MySQL OCP及国产代表数据库认证。 获得的专业技能与认…

C#,数值计算,矩阵相乘的斯特拉森(Strassen’s Matrix Multiplication)分治算法与源代码

Volker Strassen 1 矩阵乘法 矩阵乘法是机器学习中最基本的运算之一,对其进行优化是多种优化的关键。通常,将两个大小为N X N的矩阵相乘需要N^3次运算。从那以后,我们在更好、更聪明的矩阵乘法算法方面取得了长足的进步。沃尔克斯特拉森于1969年首次发表了他的算法。这是第…

C#程序员必备:编程面试基础题13道

目录 【简介】 【题目】 【解答】 【备注】 【作者的话】 【简介】 基础十三题,旨在帮助应届生求职,告别单纯刷乐扣题目的苦恼,通过举一反三的方法帮助你破解面试难题。 【题目】 1.求长:求数组长度。 2.去重&#xf…

计算机体系分类结构分类

从宏观上按处理机的数量进行分类,分为单处理系统,并行处理与多处理系统和分布式处理系统。 单处理系统(uni-processing system)。利用一个处理单元与外部设备结合起来实现存储,计算,通信,输入与输出。 并行处理与多…

【刷题】双指针进阶

请看入门篇 :双指针入门 送给我们一句话: 如今我努力奔跑,不过是为了追上那个曾经被寄予厚望的自己 —— 约翰。利文斯顿 双指针进阶 Leetcode 611 有效三角形的个数Leetcode LCR179.查找总价格为目标值的两个商品Leetcode 15.三数之和Thanks…

手把手教你使用Python第三方模块

1.第三方模块 一般是别人解决特定问题的功能进行了封装,可以通过安装直接使用 注意 第三方模块需要先安装,才能使用 常见的安装方式:通过pip工具或者通过pycharm编辑器进行安装 2.pip指令安装 pip -V # 查看pip的版本 pip 23.2.1 fr…

基于PHP的数字化档案管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的数字化档案管理系统 一 介绍 此数字化档案管理系统基于原生PHP,MVC架构开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 php(mvc)mysqlbootstrapphpstudyvscode 二 功能 …

网络原理(网络协议初识)

目录 1.网络通信基础 1.1IP地址 1.2端口号 1.3认识协议 1.4五元组 1.5 协议分层 2.TCP/IP五层(或四层)模型 2.1网络设备所在分层 2.2网络分层对应 3.封装和分用 1.网络通信基础 网络互连的目的是进行网络通信,也即是网络数据传输&#…

手写简易操作系统(九)--实现打印函数

前情提要 前面我们已经进入内核程序了,中间穿插了一点特权级的知识,现在我们开始准备一个打印函数 很不幸,还有汇编程序 一、C调用规约 因为涉及到C与汇编的联合编程,我们这里简述一下调用规约,调用规约就是约定参…

#android中的框架层

android中的框架层是什么? 在 Android 系统中,框架层(Framework)是指位于操作系统和应用程序之间的一层软件架构,提供了许多核心功能和服务,以方便应用程序开发者进行应用程序开发。Android 框架层包括了一…

jdk8与jdk17的区别。springboot2.x与springboot3.x的区别

1. jdk8与jdk17的区别 Java JDK 8 和 JDK 17 之间存在许多区别,包括功能、性能、语言特性和工具等方面。以下是它们之间的一些主要区别: 功能和语言特性: JDK 8引入了许多重要的语言特性,包括Lambda表达式、方法引用、Stream API、…

Node.js 学习笔记 fs、path、http模块;模块化;包;npm

Node.js学习 Node.js一、定义1.前端工程化2.Node.js 为何能执行 JS?3.安装nodejs、删除之前的nodejs4.使用 Node.js 二、fs模块 \- 读写文件三、path 模块案例 - 压缩前端html四、HTTP相关URL中的端口号常见的服务程序http 模块-创建 Web 服务案例:浏览时…

Python二级备考

考试大纲如下: 基本要求 考试内容 考试方式 比较希望能直接刷题,因为不懂的比较多可能会看视频。 基础操作刷题: 知乎大头计算机1-13题 import jieba txtinput() lsjieba.lcut(txt) print("{:.1f}".format(len(txt)/len(ls)…

XIAO ESP32S3部署Edge Impulse模型

在上一篇文章中我们介绍了如何使用edge impulse训练一个图片分类模型并导出arduino库文件。在这篇文章中我们将介绍如何在esp32s3中部署这个训练好的图片分类模型。 添加进Arduino库 有两种方法将下载的文件添加进Arduino库。 在Arduino IDE程序中,转到项目选项卡…

✅技术社区—集成xxl-job实现定时任务的管理和执行

xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。(其中XXL是作者许雪里的简称) xxl-job是对老牌调度平台Quartz进行的封装。在开始介绍xxl-job之前我来先简单…