uniapp 实现地图距离计算

在uniapp中实现地图距离计算可以借助第三方地图服务API来实现。以下是一种基本的实现方式:

  1. 注册地图服务API账号:你可以选择使用高德地图、百度地图等提供地图服务的厂商,注册一个开发者账号并获取API密钥。

  2. 安装相关插件或SDK:根据你选择的地图服务提供商,下载并安装相应的uniapp插件或SDK。例如,如果选择使用高德地图,可以安装uni-amap-map插件。

  3. 配置API密钥:在uniapp项目的配置文件(manifest.jsonvue.config.js)中,将你获取的API密钥配置进去,以便你的应用程序能够访问地图服务API。

  4. 创建地图组件:在uniapp的页面中创建一个地图组件,可以使用插件或SDK提供的相关组件进行创建。例如,在使用高德地图的情况下,可以使用<amap-map>标签创建地图组件。

  5. 获取坐标信息:在你的应用中,需要获取用户输入的起始位置和目标位置的经纬度坐标信息,可以通过表单、定位功能或手动输入等方式获取。

  6. 调用API计算距离:使用地图服务API提供的距离计算接口,传入起始位置和目标位置的经纬度坐标,调用API进行距离计算。例如,在使用高德地图的情况下,可以使用AMap.Distance类的getDistance()方法来计算距离。

  7. 显示结果:将距离计算结果显示在你的应用程序中,可以通过文本、弹窗等方式展示给用户。

这里我使用的是腾讯地图;腾讯地图实现上述功能在配置上的话会稍微复杂一点点;

首先需要配置下述代码

"permission": {"scope.userLocation": {"desc": "你的位置信息将用于小程序位置接口的效果展示"}}

首先需要再pages.json上配置;

 然后在manifest.json中的源码视图中配置

然后需要将你申请的key放入

 之后就可以在页面使用了;可以使用uniapp提供的api来进行自身位置的获取,首先使用getSetting来获取是否开启 定位权限;如果获取定位权限再根据getLocation获取自身位置的经纬度;然后根据自身定位与目标定位计算出距离

下面是计算代码

// 计算距离function getDistance(lat1, lon1, lat2, lon2) {const earthRadius = 6371; // 地球半径,单位为千米console.log(lat1, lon1, lat2, lon2);// 将经纬度转换为弧度const radLat1 = (Math.PI / 180) * lat1;const radLon1 = (Math.PI / 180) * lon1;const radLat2 = (Math.PI / 180) * lat2;const radLon2 = (Math.PI / 180) * lon2;console.log(radLat1,radLat2,radLon1,radLon2);// 计算经纬度的差值const deltaLat = radLat2 - radLat1;const deltaLon = radLon2 - radLon1;console.log(deltaLat,deltaLon);// 使用Haversine公式计算距离const a =Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +Math.cos(radLat1) *Math.cos(radLat2) *Math.sin(deltaLon / 2) *Math.sin(deltaLon / 2);const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));const distance = earthRadius * c;return distance.toFixed(2); // 返回保留两位小数的距离值};

注意:距离为km;调用方法为getDistance(经度1,纬度1,经度2,纬度2),希望对您有所帮助

 

 

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

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

相关文章

Go语言入门指南:从零开始探索Go的世界

一、简介 欢迎来到Go语言入门指南。在这个博文中&#xff0c;我们将带领你了解Go语言的背景、特点&#xff0c;以及如何从头开始编写一个简单的Go程序。让我们一起探索这个简洁、高效且强大的编程语言吧&#xff01; 二、Go的历史与特点 Go&#xff0c;又称Golang&#xff0…

区块链BaaS篇

区块链BaaS&#xff08;Blockchain as a Service&#xff09;区块链即服务&#xff1b;感觉5年前做的BaaS和现在做的BaaS没啥区别&#xff0c;换了批人重复造轮子&#xff0c;BaaS做的越来越乱&#xff0c;也越来越中心化。BaaS是方便区块链调用的工具&#xff0c;工具是方便使…

人力资源小程序的设计方案与实现

随着互联网的发展&#xff0c;人才招聘已经成为许多企业的一项重要任务。为了提高招聘效率和便利求职者&#xff0c;许多企业开始采用小程序作为招聘平台。本文将为大家介绍一个搭建本地人才招聘网小程序的实用指南。 首先&#xff0c;我们需要登录【乔拓云】制作平台&#xff…

软考高级系统架构设计师系列论文七十四:基于构件的软件开发

软考高级系统架构设计师系列论文七十四:基于构件的软件开发 一、构件相关知识点二、摘要三、正文四、总结一、构件相关知识点 软考高级系统架构设计师系列之:面向构件的软件设计,构件平台与典型架构

Python 面试:可变类型和不可变类型作为函数参数,关键字参数

1. 可变类型作为参数 可变对象: list/set/dict 参数会指向可变对象的副本的地址&#xff0c;每次修改的是同一个对象。 def flist(l):l.append(0)print(l)ll [] flist(ll) flist(ll)输出为&#xff1a; [0] [0, 0] # 注意&#xff1a;l只是ll的一个副本&#xff0c;修改l不…

checkstyle检查Java编程样式:识别应该被定义为final的类

介绍 总体说明 checkstyle可以使用FinalClass检查应该被定为final的类。如果违反了&#xff0c;就会报违反项&#xff1a; https://checkstyle.sourceforge.io/checks/design/finalclass.html checkstyle规则集文件对FinalClass模块的配置&#xff1a; 哪些类可以被定义fi…

React笔记(二)JSX

一、JSX JSX是javascript XML的简写&#xff0c;实际上是javascript的扩展&#xff0c;既有javascript的语法结构&#xff0c;又有XML的结构 1、JSX的规则要求 jsx必须要有一个根节点 如果不想产生无用的根标签&#xff0c;但是还要遵守JSX的语法的要求&#xff0c;可以使用…

Docker harbor 私有仓库的部署和管理

目录 一、什么是Harbor 二、Harbor的特性 三、Harbor的构成 四、部署配置Docker Harbor 1. 首先需要安装 Docker-Compose 服务 2.部署 Harbor 服务 3.使用harbor仓库 &#xff08;1&#xff09;项目管理 &#xff08;2&#xff09;用户管理 一、什么是Harbor Harbor …

飞桨中的李宏毅课程中的第一个项目——PM2.5的预测

所谓的激活函数&#xff0c;就是李宏毅老师讲到的sigmoid函数 和 hard sigmoid函数 &#xff0c;ReLU函数那些 现在一点点慢慢探索&#xff0c;会成为日后想都做不到的经历&#xff0c;当你啥也不会的时候&#xff0c;才是慢慢享受探索的过程。 有一说一&#xff0c;用chatGP…

安卓版yolo-fastest

安卓版本yolofastest效果测试 安卓配置OPENCV4ANDROID&#xff0c;见我的博客一篇文章opencv4dandroid配置 这个不需要使用JNI&#xff0c;十分简单的配置 说真的&#xff0c;其实只调用OPENCV的函数&#xff0c;自己写的代码不多&#xff0c;使用OPENCV4ANDROID和JNI的时间差…

el-select码值枚举

当码值的数据是自己写的时候&#xff1a; 例如&#xff1a;isOrNo&#xff1a;[{label:是,value:1},{label:否&#xff0c;value&#xff1a;‘2’}]&#xff0c; 当传给后端值时下拉选择是&#xff0c;值为1&#xff0c;我们当前拿到的只是值为value&#xff1a;1&#xff0…

项目经理常用工具01

主要工具 表达工具—SCRTV方法 情境 Scene&#xff1a;明确问题&#xff1a;是什么&#xff1f;冲突 Confilict&#xff1a;提出疑问&#xff1a;怎么了?原因 Reason&#xff1a;分析原因&#xff1a;为什么&#xff1f;策略 Tactics&#xff1a;进行决策&#xff1a;怎么办…

数据建模在MES管理系统中的作用,以及合理设计

随着信息化的快速发展&#xff0c;MES系统解决方案在企业中的应用越来越广泛。作为实现生产过程数字化的重要组成部分&#xff0c;MES系统扮演着监控、控制和优化生产运营的关键角色。而在MES系统中&#xff0c;数据建模是实现高效生产管理的重要环节之一。本文将探讨数据建模在…

自定义node-red节点中,如何编写节点的配置信息弹窗

前言 最近有读者通过博客向我咨询,在自定义node-red节点时,如何编写该节点的配置页面,就是我们通常见到的,双节节点打开的信息弹窗。如下图: 上面两张图,展示了inject节点与mqtt in 节点的配置弹窗。 在弹窗中,除了上面的删除,取消,完成,和下面的失效按钮。 中间…

Docker容器中的Postgresql备份脚本异常解决办法

本文基于K8S中Docker容器对postgres数据库进行备份的操作&#xff0c;编写好脚本后&#xff0c;手动执行脚本是正常的&#xff0c;但是crontab定时实行却报错&#xff0c;报错信息为kubectl command not found&#xff0c;提示没有找到kubectl指令。 本文主要介绍对该报错信息…

二级MySQL(二)——编程语言,函数

SQL语言又称为【结构化查询语言】 请使用FLOOR&#xff08;x&#xff09;函数求小于或等于5.6的最大整数 请使用TRUNCATE&#xff08;x&#xff0c;y&#xff09;函数将数字1.98752895保留到小数点后4位 请使用UPPER&#xff08;&#xff09;函数将字符串‘welcome’转化为大写…

C语言的发展及特点

1. C语言的发展历程 C语言作为计算机编程领域的重要里程碑&#xff0c;其发展历程承载着无数开发者的智慧和创新。C语言诞生于20世纪70年代初&#xff0c;由计算机科学家Dennis Ritchie在贝尔实验室首次推出。当时&#xff0c;Ritchie的目标是为Unix操作系统开发一门能够更方便…

Sass基础

Sass基础 简介 Sass是一种stylesheet语言&#xff0c;可以被编译成CSS。Sass允许你使用诸如variabels&#xff0c;nested rules&#xff0c;mixins&#xff0c;functions等等语法&#xff0c;这些都将在本篇的接下来进行讲解。 因为之前一直学的后端&#xff0c;前端只是因为…

echarts,highcharts图表双Y轴0刻度对齐的方案

Y轴的零刻度对齐的方案&#xff1a; 方案一&#xff1a; tickPositioner: function(){var maxDeviation Math.ceil(Math. max(Math.abs(this.dataMax),Math.abs(this.dataMin))); var halfMaxDeviation Math.ceil(maxDeviation / 2); return [-maxDeviation,-halfMaxDeviati…

javaweb、spring、springmvc和springboot有什么区别,都是做什么用的?

JavaWeb是一种基于Java技术的Web开发模式&#xff0c;用于构建动态的、可交互的Web应用程序。它是一种使用Java语言开发Web应用的技术堆栈&#xff0c;包括Java Servlet、JavaServer Pages&#xff08;JSP&#xff09;、JavaServer Faces&#xff08;JSF&#xff09;等。JavaWe…