最近公司需要通过计算终端与商家的两点直线距离,根据距离做一些服务。查看了各大互联网地图API,百度地图、高德地图等等通过两点的经纬度来计算两点的距离(位移)的服务只能通过网页调用脚本(JavaScript)来计算,这样对于后台来说实现是有点坑爹。从而在网上找了很久才找到有个方法计算出来的结果跟百度地图API比较接近。
以下是一些参考资料:
【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离
以下测试用到的工具:
获取地点经纬度或者通过经纬度验证地点的网页百度地图工具:拾取坐标系统
以下是跟百度地图JS API的结果最接近的干货:
public class DistanceUtil { private static double DEF_PI =Math.PI;// 3.14159265359 private static double DEF_2PI =2 *Math.PI;// 6.28318530712 private static double DEF_PI180 =Math.PI/ 180.0;// 0.01745329252 private static double DEF_R =6370996.81;// 地球的半径 /** * 通过两点的经纬度计算两点直线距离 * @param lng1Str 终端经度 * @param lat1Str 终端纬度 * @param lng2Str 商家经度 * @param lat2Str 商家纬度 * @return 返回的值四舍五入并保留两位小数,单位米 */ public static Double getTwopointsDistance(String lng1Str,String lat1Str, String lng2Str,String lat2Str) { if ((StringUtil.isBlank(lat1Str)) || (StringUtil.isBlank(lng1Str)) || (StringUtil.isBlank(lat2Str)) || (StringUtil.isBlank(lng2Str))){return null;} Double lon1 = Double.parseDouble(lng1Str); Double lat1 = Double.parseDouble(lat1Str); Double lon2 = Double.parseDouble(lng2Str); Double lat2 = Double.parseDouble(lat2Str); // 角度转换为弧度 double ew1 = lon1 * DEF_PI180; double ns1 = lat1 * DEF_PI180; double ew2 = lon2 * DEF_PI180; double ns2 = lat2 * DEF_PI180; // 求大圆劣弧与球心所夹的角(弧度) double distance = Math.sin(ns1) * Math.sin(ns2)+ Math.cos(ns1)* Math.cos(ns2)* Math.cos(ew1- ew2); // 调整到[-1..1]范围内,避免溢出 if(distance >1.0) distance = 1.0; else if(distance <-1.0) distance = -1.0; distance = DEF_R *Math.acos(distance); //格式化返回值 BigDecimal bd = new BigDecimal(distance); return distance = bd.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); } }
相关推荐
java使用 K3Cloud-WebAPI-Client.jar 调用K3 Cloud标准API
百度地图Web API是一个强大的工具,它允许开发者集成地图功能到他们的网站或应用程序中,提供了丰富的地图展示、定位、搜索以及路线规划等功能。本教程将详细介绍如何利用百度地图Web API实现移动地图的中心定位、...
OWIN-WebAPI-Service, owin/webapi Windows 服务示例包含基于属性的路由示例 OWIN WebAPI服务示例 有时候,你只需要一个好的例子来开始。在服务中,需要创建自承载的WebAPI 2服务,这是OWIN-WebAPI-Service项目插件...
包含翻译后的API文档:sentinel-spring-webmvc-adapter-1.8.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.alibaba.csp:sentinel-spring-webmvc-adapter:1.8.0; 标签:spring、alibaba、csp、sentinel、...
YM课设-C#-WebApi-Vue-员工管理系统-前端文件
在本项目中,“百度地图Web API增强显示.zip”是一个包含示例代码的压缩包,主要展示了如何使用百度地图Web API来实现地图上的雷达效果,并且提供了全国地图瓦片图。这个压缩包对于开发者来说,是一个很好的学习资源...
包含翻译后的API文档:springfox-spring-webmvc-3.0.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.springfox:springfox-spring-webmvc:3.0.0; 标签:spring、springfox、webmvc、jar包、java、中文文档; ...
综上所述,"web-demo-v3, 百度地图鹰眼web轨迹管理台V3.zip"是一个以Web为基础,利用百度地图鹰眼服务进行轨迹管理的开源项目,涵盖了Web开发、GIS集成、API接口设计等多个技术领域,对于希望在Web应用中集成轨迹...
【K3 Cloud WebAPI接口说明书_2.0.docx】文档是金蝶云提供的一个关于如何使用WebAPI接口进行系统集成的详细指南。这个接口说明书适用于开发者和IT专业人士,他们需要利用这些接口来构建和扩展基于金蝶云的应用程序。...
C# WebApi实战项目Demo,便于快速学习WEBAPI, WebAPI: 提供给不同客户端(跨平台客户端)调用网页的应用程序编程接口。 Web API,一般指基于HTTP协议的编程接口,接口一般定义为HTTP或HTTPS:请求方法、请求路径、...
WebApi-odata ,源码
包含翻译后的API文档:spring-webmvc-5.3.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework:spring-webmvc:5.3.7; 标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法...
百度地图API(Baidu Maps API)是百度提供的一套基于JavaScript语言的Web服务接口,它允许开发者在网页上嵌入地图,并进行各种地图相关的操作,如定位、绘制、标注等。在API中,我们可以获取到地图的坐标系统、地图...
基于官方k3cloud-webapi-sdk.7.0.jar的基础上的封装,更易于java开发人员直接上手使用
包含翻译后的API文档:spring-webmvc-5.3.15-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework:spring-webmvc:5.3.15; 标签:spring、webmvc、springframework、jar包、java、中文文档; 使用...
百度地图API是百度提供的一套Web服务接口,允许开发者在自己的应用、网站或小程序中嵌入地图、定位、路线规划等地图相关功能。它提供了丰富的地图展现、地理编码、反地理编码、轨迹服务、实时路况、全景图等服务。 ...
百度地图webapi获取地理位置
webApi-使用EF操作Mysql数据库工程demo源码
【K3 Cloud WebAPI】是金蝶公司为其云端企业资源规划系统K/3Cloud提供的一种基于Web服务的应用程序接口,允许开发者使用编程语言与K/3Cloud系统进行交互,实现数据的读取、写入以及业务流程的自动化。在本案例中,...