微信小程序定位判断点位是否在某个范围内(腾讯地图转百度地图)

news/2024/10/19 14:53:59/

业务:比较微信小程序定位是否在系统设置的某个位置的某个范围内

问题:微信小程序定位是拿的腾讯地图的经纬度(假设为点A),系统设置的某个位置是百度地图的经纬度(假设为点B),需要判断点A是否在点B的Range(米)范围内

解决方案:将腾讯点A的经纬度转换为百度地图的经纬度后再进行比较

package com.applets.manager.core.util;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.geotools.referencing.GeodeticCalculator;/*** @author zr 2024/5/11*/
@Slf4j
public class GeoUtil {/*** 判断一个点是否在某个圆形范围内(startingPoint为腾讯地图点位,endPoint为百度地图点位)* @param startingPoint* @param endPoint* @param range* @return转换*/public static boolean inDistanceWithConversion(MyPoint startingPoint , MyPoint endPoint , Integer range){MyPoint myPoint = qqMapTransBMap(startingPoint);return inDistance(myPoint,endPoint,range);}/*** 判断一个点是否在某个圆形范围内* @param startingPoint* @param endPoint* @param Range* @return*/public static boolean inDistance(MyPoint startingPoint , MyPoint endPoint , Integer Range) {// 84坐标系构造GeodeticCalculatorGeodeticCalculator geodeticCalculator = new GeodeticCalculator();// 起点经纬度geodeticCalculator.setStartingGeographicPoint(startingPoint.getLongitude(), startingPoint.getLatitude());// 末点经纬度geodeticCalculator.setDestinationGeographicPoint( endPoint.getLatitude(),endPoint.getLongitude());// 计算距离,单位:米double orthodromicDistance = geodeticCalculator.getOrthodromicDistance();if (orthodromicDistance < Range){return true;}else {return false;}}/*** 腾讯地图经纬度转百度地图经纬度* @param myPoint* @return*/public static MyPoint qqMapTransBMap(MyPoint myPoint) {double x_pi = 3.14159265358979324 * 3000.0 / 180.0;double x =  myPoint.getLatitude();double y =  myPoint.getLongitude();double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);double lngs = z * Math.cos(theta) + 0.0065;double lats = z * Math.sin(theta) + 0.006;return new MyPoint(lngs, lats);}@Data@AllArgsConstructor@NoArgsConstructorpublic static class MyPoint {public double longitude;public double latitude;}
}

http://www.ppmy.cn/news/1540270.html

相关文章

iptables限速规则

环境&#xff1a; iptables服务器&#xff1a;172.16.12.33 client&#xff1a;192.168.1.2 1、在防火墙上配置客户端的下载速度是1M/s &#xff08;1个包是1.3KB&#xff09; #限速客户端每秒的下载速度是1024KB&#xff0c;超出限制的流量就丢弃 [rootiptables-172-16-12-…

Web安全常见问题

OSI七层模型和HTTP请求 OSI 物理层-数据链路层-网络层-传输层-会话层-表示层-应用层 五层协议 物理层-数据链路层-网络层-传输层-应用层 HTTP请求类型&#xff1a; GET 请求的数据在url头 POST 请求的数据在请求体 PUT 更新资源 DELETE 删除 CONNECT http/1.1协议中预留…

HIKROBOT_SDK_text1——机器人控制权

1.切换示教员&#xff0c;然后在示教器释放掉控制权 2.连接机器人代码 #include <memory> #include <Windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h>#include "MP_Public_API.h"int main() {int64_t llRet…

自动化生成工作流?英伟达提出ComfyGen:通过LLM来匹配给定的文本提示与合适的工作流程

ComfyGen的核心在于通过LLM来匹配给定的文本提示与合适的工作流程。该方法从500个来自用户的多样化提示生成图像&#xff0c;随后使用一系列美学预测模型对生成结果进行评分。这些评分与相应的工作流程形成了一个训练集&#xff0c;包含提示、工作流程及其得分的三元组。 然后…

Nature Communications 英国伦敦大学等提出仿生自适应多平面触觉系统,实现机械与振动双重感知结合

触觉&#xff0c;作为人类感知外界并与之互动的重要方式&#xff0c;赋予了人类以辨识物体多重特性&#xff08;诸如纹理、硬度、可塑性及重量&#xff09;与捕捉微妙线索&#xff08;例如感知心跳或精准定位动脉振动&#xff09;的能力。这一感官机制不仅深化了人类对周围世界…

大厂面试真题-说说Redis的cluster模式的故障转移和自动恢复

说这个之前要先介绍一下Gossip Gossip 在Redis中&#xff0c;Gossip是一种用于节点之间通信和信息传播的协议。以下是关于Redis中Gossip的详细解释&#xff1a; 一、定义与功能 定义&#xff1a; Gossip协议&#xff0c;又称流言协议或八卦协议&#xff0c;是一种分布式系统…

C#基础-面向对象的七大设计原则

目录 1.开放封闭原则&#xff08;OCP&#xff09; 2.单一职责原则&#xff08;SRP&#xff09; 3.依赖倒置原则&#xff08;DIP&#xff09; 4.里氏替换原则&#xff08;LSP&#xff09; 5.接口隔离原则&#xff08;ISP&#xff09; 6.合成复用原则&#xff08;CRP&#…

vue中加载GLB模型,计算模型的长宽高、绘制模型的边框线

项目环境版本 vue&#xff1a;2.6.12threejs: 0.169.0node: 16.20.0 需求背景 主页面点击预览按钮&#xff0c;默认显示弹框&#xff0c;并且加载GLB模型文件点击弹框中的功能按钮&#xff0c;计算GLB模型的长宽高点击弹框中的功能按钮&#xff0c;绘制GLB模型的边框线(长方…