`

模拟百度地图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();
	}
}

 

分享到:
评论

相关推荐

    K3Cloud-WebAPI-Client.jar

    java使用 K3Cloud-WebAPI-Client.jar 调用K3 Cloud标准API

    金碟云二次开发-新手入门指南: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接口说明书_V2.0

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

    YM课设-C#-WebApi-Vue-员工管理系统-前端文件

    YM课设-C#-WebApi-Vue-员工管理系统-前端文件

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

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

    C# WebApi实战项目Demo,便于快速学习WEBAPI

    C# WebApi实战项目Demo,便于快速学习WEBAPI, WebAPI: 提供给不同客户端(跨平台客户端)调用网页的应用程序编程接口。 Web API,一般指基于HTTP协议的编程接口,接口一般定义为HTTP或HTTPS:请求方法、请求路径、...

    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格式进行...

    js+百度地图api测量面积

    百度地图API(Baidu Maps API)是百度提供的一套基于JavaScript语言的Web服务接口,它允许开发者在网页上嵌入地图,并进行各种地图相关的操作,如定位、绘制、标注等。在API中,我们可以获取到地图的坐标系统、地图...

    百度地图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开发人员直接上手使用

    小程序源码 地图相关 百度地图API-定位周边搜索POI源码.rar

    百度地图API是百度提供的一套Web服务接口,允许开发者在自己的应用、网站或小程序中嵌入地图、定位、路线规划等地图相关功能。它提供了丰富的地图展现、地理编码、反地理编码、轨迹服务、实时路况、全景图等服务。 ...

    K3 Cloud WebAPI 及DEMO(Java版本)

    【K3 Cloud WebAPI】是金蝶公司为其云端企业资源规划系统K/3Cloud提供的一种基于Web服务的应用程序接口,允许开发者使用编程语言与K/3Cloud系统进行交互,实现数据的读取、写入以及业务流程的自动化。在本案例中,...

    百度地图webapi获取地理位置

    百度地图webapi获取地理位置

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

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

    百度地图api_百度地图API_百度地图_

    百度地图API是开发者用来集成百度地图服务的一个强大工具,它允许程序员在自己的应用程序、网站或系统中嵌入地图功能,实现各种定制化的地理信息处理。通过使用百度地图API,开发者可以轻松地实现地图展示、定位、...

    Aspnet-webapi-errorsample.zip

    Aspnet-webapi-errorsample.zip,asp net core,它演示了首次运行web api时wierd的问题webapi errorsample,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5、css和javascript...

Global site tag (gtag.js) - Google Analytics