百度地图距离计算,计算结果和调用百度的api一样



var DEF_PI =Math.PI;//
3.14159265359

var DEF_2PI =2
*Math.PI;// 6.28318530712

var DEF_PI180 =Math.PI/
180.0;// 0.01745329252

var DEF_R =6370996.81;// radius of earth

// 利用弧夹角方式计算地图上两点之间的距离,和百度地图计算结果不一致

function GetShortDistance(lon1, lat1,
lon2, lat2){

var ew1, ns1, ew2, ns2;

var dx, dy, dew;

var distance;

// 角度转换为弧度

ew1 = lon1 * DEF_PI180;

ns1 = lat1 * DEF_PI180;

ew2 = lon2 * DEF_PI180;

ns2 = lat2 * DEF_PI180;

// 经度差

dew = ew1 - ew2;

// 若跨东经和西经180 度,进行调整

if (dew> DEF_PI)

dew = DEF_2PI - dew;

else if(dew
<-DEF_PI)

dew = DEF_2PI + dew;

dx = DEF_R *Math.cos(ns1)*
dew;// 东西方向长度(在纬度圈上的投影长度)

dy = DEF_R *(ns1
- ns2);// 南北方向长度(在经度圈上的投影长度)

// 勾股定理求斜边长

distance = Math.sqrt(dx* dx
+ dy* dy);

return distance;

}

// 利用弧夹角方式计算地图上两点之间的距离,与百度方式一致

function GetLongDistance(lon1, lat1,
lon2, lat2){

var ew1, ns1, ew2, ns2;

var distance;

// 角度转换为弧度

ew1 = lon1 * DEF_PI180;

ns1 = lat1 * DEF_PI180;

ew2 = lon2 * DEF_PI180;

ns2 = lat2 * DEF_PI180;

// 求大圆劣弧与球心所夹的角(弧度)

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);

return distance;

}

时间: 2024-10-07 05:50:59

百度地图距离计算,计算结果和调用百度的api一样的相关文章

EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象

最近做项目想要在百度地图上叠加显示echart的散点图,然后根据地图的缩放等级和区域范围要显示不同的散点图,这中间折腾了好久.功能要求包括: (1)底图使用百度地图: (2)可以在地图上叠加显示echart的散点图: (3)鼠标移动到散点图上面之后,可以浮动显示相关信息: (4)能够获取当前显示区域地图的经纬度范围: (5)能够响应地图的拖拽和缩放事件: 这里有两种选择: 1. 使用echart2的百度地图扩展,1, 3, 4, 5 都可以满足,就是2满足不了,他的一个series的所有图标样式

获取百度地图POI数据一(详解百度返回的POI数据)

POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数据,要获取其上的POI数据可以根据百度地图提供的API,但是这种方式有限制,能获取的数据极少.本文将详细介绍通过模拟HTTP请求的方式获取其上的POI数据. 当我们在百度地图的搜索框中通过输入关键字进行搜索时,这其实就是发送一个HTTP请求到百度的服务器,然后服务器返回数据. 打开网页的调试面板可以

[百度地图] 用于类似 DWZ UI 框架的 百度地图 功能封装类 [MultiZMap.js] 实例源码

MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐标是否在一个圆圈内,生活服务查询,从经纬度获取地址信息,地图工具包括测距,获取面积,以积打印地图,地图全屏,实时路况,坐标是否在polygon区域内,打车方案,经过中间途经点,添加地图控件: 界面查看 : http://www.cnblogs.com/ed

百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。

1.POI爬取方法说明 1.1AK申请 登录百度账号,在百度地图开发者平台的API控制台申请一个服务端的ak,主要用到的是Place API.检校方式可设置成IP白名单,IP直接设置成了0.0.0.0/0比较方便. Place API 提供的接口用于返回查询某个区域的某类POI数据,且提供单个POI的详情查询服务,用户可以使用C#.C++.Java,Python等开发语言发送请求,接收json.xml的数据.关于Place API的具体使用可以参考:Place API Web服务API 1.2爬

C#实现百度地图附近搜索&amp;调用JavaScript函数

前一篇文章"C#调用百度地图API入门&解决BMap未定义问题"讲述了如何通过C#调用百度API显示地图,并且如何解决BMap未定义的问题.这篇文章主要更加详细的介绍百度地图的一些功能,包括附近搜索.城市搜索.路线规划.添加覆盖物等等. 希望文章对你有所帮助!如果文章中有不足之处,还请海涵~ 百度官方文档:http://developer.baidu.com/map/jsmobile.htm 官方DEMO例:http://developer.baidu.com/map/jsde

delphi 调用百度地图WEBSERVICE转换GPS坐标

百度地图的API说明 使用方法 第一步,申请密钥(ak),作为访问服务的依据: 第二步,按照请求参数说明拼写发送http请求的url,注意需使用第一步申请的ak: 第三步,接收返回的数据(json或者xml格式). 注:本接口支持回调. 服务地址 http://api.map.baidu.com/geoconv/v1/? 组成说明: 域名:http://api.map.baidu.com 服务名:geoconv 服务版本号:v1 服务参数说明 参数 含义 取值范围 是否必须 默认取值 coord

Android中调用百度地图

一.调用百度地图 --第一种方法 1.下载百度地图SDK SDK可以拆分下载,需要使用那一部分功能就下载相应包含的SDK,如下图 核心的的jar 和so包,放在工程中的libs目录下 2.申请key 注册百度账号申请key,格式如下:sha1值+";"+包名. 包名指的是AndroidManifest.xml 中定义的名称 ,并非工程包名 3.将百度地图加入工程 (1)在application中添加开发密钥 <application   <meta-data android

delphi 调用百度地图WEBSERVICE转换GPS坐标 转

http://www.cnblogs.com/happyhills/p/3789864.html 百度地图的API说明 使用方法 第一步,申请密钥(ak),作为访问服务的依据: 第二步,按照请求参数说明拼写发送http请求的url,注意需使用第一步申请的ak: 第三步,接收返回的数据(json或者xml格式). 注:本接口支持回调. 服务地址 http://api.map.baidu.com/geoconv/v1/? 组成说明: 域名:http://api.map.baidu.com 服务名:g

Winform调用百度地图接口

using System; using System.IO; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace BaiDuMap { public partial class Form1 : Form { public Form