最近公司需要通过计算终端与商家的两点直线距离,根据距离做一些服务。查看了各大互联网地图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
本指南将帮助新手快速入门,通过Java语言搭建开发和测试环境,使用金碟云提供的WEB API k3cloud-webapi-sdk.jar进行高效集成。 首先,我们需要了解金碟云的基本概念。金碟云是金碟公司推出的一款基于云计算的企业...
百度地图Web API是一个强大的工具,它允许开发者集成地图功能到他们的网站或应用程序中,提供了丰富的地图展示、定位、搜索以及路线规划等功能。本教程将详细介绍如何利用百度地图Web API实现移动地图的中心定位、...
百度地图JavaScriptAPI离线版 百度web demo等多个开发包,非常适用在不联网的环境使用,非常方便的下载地图瓦片,然后集成到web系统中。该版本我亲自使用过,完成开发工作。api需要有针对性修改。api有很多实例,只...
《K3 Cloud WebAPI接口说明书_V2.0》是一份详细阐述如何与金蝶K3 Cloud系统进行交互的文档,适用于希望通过WebAPI技术对K3 Cloud进行数据操作和功能调用的开发人员。该说明书旨在提供一个清晰的指导,帮助开发者理解...
YM课设-C#-WebApi-Vue-员工管理系统-前端文件
"基于百度地图Web API技术的WEBGIS气象服务研究及系统设计" 本文旨在研究基于百度地图Web API技术的WEBGIS气象服务的设计和实现。传统的专业用户气象服务网站开发周期长,产品展示形式单一等问题,限制了气象服务的...
C# WebApi实战项目Demo,便于快速学习WEBAPI, WebAPI: 提供给不同客户端(跨平台客户端)调用网页的应用程序编程接口。 Web API,一般指基于HTTP协议的编程接口,接口一般定义为HTTP或HTTPS:请求方法、请求路径、...
包含翻译后的API文档:spring-webmvc-5.3.7-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework:spring-webmvc:5.3.7; 标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法...
### K3 Cloud WebAPI知识点详解 #### 一、概述 K3 Cloud WebAPI是一个用于集成第三方系统的标准接口,它允许外部应用与K3 Cloud进行数据交互。本文档将重点介绍K3 Cloud凭证导入API,包括如何使用HTTP+JSON格式进行...
百度地图API(Baidu Maps API)是百度提供的一套基于JavaScript语言的Web服务接口,它允许开发者在网页上嵌入地图,并进行各种地图相关的操作,如定位、绘制、标注等。在API中,我们可以获取到地图的坐标系统、地图...
**百度地图API基础操作——百度鹰眼** 在IT行业中,地图API的应用十分广泛,而百度地图API是其中的佼佼者。这篇博文主要探讨的是如何使用百度地图API中的“百度鹰眼”服务,该服务专注于轨迹管理和展示,适用于物流...
包含翻译后的API文档:spring-webmvc-5.3.7-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework:spring-webmvc:5.3.7; 标签:springframework、spring、webmvc、中英对照文档、jar包、...
基于官方k3cloud-webapi-sdk.7.0.jar的基础上的封装,更易于java开发人员直接上手使用
百度地图API是百度提供的一套Web服务接口,允许开发者在自己的应用、网站或小程序中嵌入地图、定位、路线规划等地图相关功能。它提供了丰富的地图展现、地理编码、反地理编码、轨迹服务、实时路况、全景图等服务。 ...
【K3 Cloud WebAPI】是金蝶公司为其云端企业资源规划系统K/3Cloud提供的一种基于Web服务的应用程序接口,允许开发者使用编程语言与K/3Cloud系统进行交互,实现数据的读取、写入以及业务流程的自动化。在本案例中,...
百度地图webapi获取地理位置
1. 基于金蝶K3星空云 Java Sdk 为例的报表查询WEB API接口。 2. 本例提供了基本的参考示例,JAVA小伙伴很容易看懂。 3. 本例提供了核心代码类,不是全套,为金蝶K3web api 开发的小伙伴提供基本思路。 4. 本例包括...
百度地图API是开发者用来集成百度地图服务的一个强大工具,它允许程序员在自己的应用程序、网站或系统中嵌入地图功能,实现各种定制化的地理信息处理。通过使用百度地图API,开发者可以轻松地实现地图展示、定位、...
Aspnet-webapi-errorsample.zip,asp net core,它演示了首次运行web api时wierd的问题webapi errorsample,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和javascript...