`

模拟百度地图WebAPI-计算距离

阅读更多

      最近公司需要通过计算终端与商家的两点直线距离,根据距离做一些服务。查看了各大互联网地图API,百度地图、高德地图等等通过两点的经纬度来计算两点的距离(位移)的服务只能通过网页调用脚本(JavaScript)来计算,这样对于后台来说实现是有点坑爹快哭了。从而在网上找了很久才找到有个方法计算出来的结果跟百度地图API比较接近。

以下是一些参考资料:

【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离

 

经纬度计算公式的原理

 

百度地图JSAPI示例

 

模拟百度地图API

以下测试用到的工具:

获取地点经纬度或者通过经纬度验证地点的网页百度地图工具:拾取坐标系统

以下是跟百度地图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快速搭建开发_测试环境(测试工程_SDK)k3cloud-webapi-sdk

    本指南将帮助新手快速入门,通过Java语言搭建开发和测试环境,使用金碟云提供的WEB API k3cloud-webapi-sdk.jar进行高效集成。 首先,我们需要了解金碟云的基本概念。金碟云是金碟公司推出的一款基于云计算的企业...

    百度地图(webapi)移动地图,根据中心点定位

    百度地图Web API是一个强大的工具,它允许开发者集成地图功能到他们的网站或应用程序中,提供了丰富的地图展示、定位、搜索以及路线规划等功能。本教程将详细介绍如何利用百度地图Web API实现移动地图的中心定位、...

    百度地图JavaScriptAPI离线版 百度web demo 百度地图下载器等

    百度地图JavaScriptAPI离线版 百度web demo等多个开发包,非常适用在不联网的环境使用,非常方便的下载地图瓦片,然后集成到web系统中。该版本我亲自使用过,完成开发工作。api需要有针对性修改。api有很多实例,只...

    K3 Cloud WebAPI接口文档V1.0.docx

    K3 Cloud WebAPI 接口文档 K3 Cloud WebAPI 接口文档是 Kingdee BOS 云平台的接口文档,旨在提供给开发者使用 K3 Cloud WebAPI 进行集成和开发的参考指南。本文档详细介绍了 K3 Cloud WebAPI 的架构、技术栈、接口...

    OWIN-WebAPI-Service, owin/webapi Windows 服务示例包含基于属性的路由示例.zip

    OWIN-WebAPI-Service, owin/webapi Windows 服务示例包含基于属性的路由示例 OWIN WebAPI服务示例 有时候,你只需要一个好的例子来开始。在服务中,需要创建自承载的WebAPI 2服务,这是OWIN-WebAPI-Service项目插件...

    K3 Cloud WebAPI接口说明书_V2.0

    《K3 Cloud WebAPI接口说明书_V2.0》是一份详细阐述如何与金蝶K3 Cloud系统进行交互的文档,适用于希望通过WebAPI技术对K3 Cloud进行数据操作和功能调用的开发人员。该说明书旨在提供一个清晰的指导,帮助开发者理解...

    web-demo-v3, 百度地图鹰眼web轨迹管理台V3.zip

    综上所述,"web-demo-v3, 百度地图鹰眼web轨迹管理台V3.zip"是一个以Web为基础,利用百度地图鹰眼服务进行轨迹管理的开源项目,涵盖了Web开发、GIS集成、API接口设计等多个技术领域,对于希望在Web应用中集成轨迹...

    基于百度地图Web API技术的WEBGIS气象服务研究及系统设计.pdf

    "基于百度地图Web API技术的WEBGIS气象服务研究及系统设计" 本文旨在研究基于百度地图Web API技术的WEBGIS气象服务的设计和实现。传统的专业用户气象服务网站开发周期长,产品展示形式单一等问题,限制了气象服务的...

    spring-webmvc-5.3.7-API文档-中文版.zip

    包含翻译后的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 WebAPI是一个用于集成第三方系统的标准接口,它允许外部应用与K3 Cloud进行数据交互。本文档将重点介绍K3 Cloud凭证导入API,包括如何使用HTTP+JSON格式进行...

    百度地图API基础操作--百度鹰眼

    **百度地图API基础操作——百度鹰眼** 在IT行业中,地图API的应用十分广泛,而百度地图API是其中的佼佼者。这篇博文主要探讨的是如何使用百度地图API中的“百度鹰眼”服务,该服务专注于轨迹管理和展示,适用于物流...

    spring-webmvc-5.3.7-API文档-中英对照版.zip

    包含翻译后的API文档:spring-webmvc-5.3.7-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.springframework:spring-webmvc:5.3.7; 标签:springframework、spring、webmvc、中英对照文档、jar包、...

    金蝶云星空k3cloud-webapi对接封装后的SDK,k3cloud-webapi-1.0-SNAPSHOT.jar

    基于官方k3cloud-webapi-sdk.7.0.jar的基础上的封装,更易于java开发人员直接上手使用

    spring-webmvc-5.2.15.RELEASE-API文档-中文版.zip

    包含翻译后的API文档:spring-webmvc-5.2.15.RELEASE-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.springframework:spring-webmvc:5.2.15.RELEASE; 标签:springframework、spring、webmvc、中文文档、jar...

    K3 Cloud WebAPI接口说明书_V4.0.docx

    K3 Cloud WebAPI 接口说明书 K3 Cloud WebAPI 是 Kingdee 软件公司开发的一款基于云计算的 Web API 接口,旨在提供一套统一、灵活、可扩展的接口解决方案,帮助企业快速集成云端应用程序和第三方系统。下面是 K3 ...

    百度地图webapi获取地理位置

    百度地图webapi获取地理位置

    webApi-使用EF操作Mysql数据库工程demo源码

    webApi-使用EF操作Mysql数据库工程demo源码

    金蝶K3星空云获取报表查询 WEB API(成本计算单报表查询) JAVA版.rar

    1. 基于金蝶K3星空云 Java Sdk 为例的报表查询WEB API接口。 2. 本例提供了基本的参考示例,JAVA小伙伴很容易看懂。 3. 本例提供了核心代码类,不是全套,为金蝶K3web api 开发的小伙伴提供基本思路。 4. 本例包括...

    javax.servlet-api-3.1.0.jar

    在Java Web开发中,`javax.servlet-api-3.1.0.jar`是一个至关重要的组件,它代表了Servlet API的3.1.0版本,是实现服务器端动态网页处理的核心库。Servlet API是Java EE规范的一部分,由Java Community Process (JCP...

    百度地图离线API 2.0(含示例,可完全断网访问)

    由于公司需求,自己修改的离线地图API.该压缩包具有如下功能: 1.支持使用google地图瓦片(不建议使用,效率不高,缩放级别较高时拖动有些卡顿,建议注释该代码块:overlayTileLayer.getTilesUrl,使用google转baidu的jar...

Global site tag (gtag.js) - Google Analytics