/**
* calc_map_distance() , 根据地图上的两个点各自的x,y坐标,计算出2点之间的直线距离
* @param array $point_1 第1个点的x,y坐标 array( 101 , 202 )
* @param array $point_2 第2个点的x,y坐标 array( 101 , 202 )
* @param bool $calc_as_string 是否计算为字符串公里距离 , 如果未否返回数字
* @return float | false | string
*/
public static function calc_map_distance( $point_1=array( ) , $point_2=array( ) , $calc_as_string=true ) {
if( empty( $point_1 ) || empty( $point_2 ) ){
return false;
}
// 经纬度不存在,或者经纬度超过最大范围 +-180 , +-90 ,返回false
$p1_x = $point_1[0];
$p1_y = $point_1[1]; $p2_x = $point_2[0];
$p2_y = $point_2[1];
if(
$p1_x < -180 || $p1_x > 180
|| $p2_x < -180 || $p2_x > 180
|| $p1_y < -90 || $p1_y > 90
|| $p2_y < -90 || $p2_y > 90
){
return false;
} // 根据2点各自的坐标,计算2点之间直线距离的公式
$distance = round(6378.138*2*asin(sqrt(pow(sin(( $p1_x *pi()/180-$p2_x*pi()/180)/2),2)+cos( $p1_x *pi()/180)*cos($p2_x*pi()/180)* pow(sin(( $p1_y *pi()/180-$p2_y*pi()/180)/2),2)))*1000); // 是否计算为字符串公里距离
if( !$calc_as_string ){
return $distance;
} // 如果计算为字符串公里距离
if( $distance / 1000 > 1 ){
$k = (string)round( $distance / 1000 , 1 );
$m = (string)$distance % 1000 ;
$distance = "{$k}公里{$m}米";
}
else{
$distance = "{$distance}米";
}
return $distance;
}

结果:"distance": "9799.1公里114米"

根据地图上的两个点各自的x,y坐标,计算出2点之间的直线距离。显示为公里、米的更多相关文章

  1. 地图上道路编号中的G S X Y

    地图上道路中的G S X Y Z C D,分别表示什么道? 国道 省道 县道 乡道 专用道路 村道 D: 还没有搞明白

  2. Java 根据地图定位坐标推荐附近的目标地址(直线距离)

    这两天需要在公众号上面做一个关于根据地图当前定位与目标地址直线距离远近推荐的查询,一开始摸不着头脑,现已解决,mark一下 现有的材料:当前用户手机端的通过微信定位的经纬度坐标.数据表中保存有场地的定 ...

  3. C# 计算地图上某个坐标点的到多边形各边的距离

    在判断了某个坐标点是否在多边形内后,还有另一个需求就是当我这个坐标点在多边形外部时,我需要计算这个坐标点到多边形的距离是否在一个允许的误差范围内 通过两个位置的经纬度坐标计算距离(C#版本) 转自:h ...

  4. 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

    原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...

  5. 通过两个位置的经纬度坐标计算距离(C#版本)

    /// <summary> /// 通过地图上的两个坐标计算距离(C#版本) /// Add by 成长的小猪(Jason.Song) on 2017/11/01 /// http://b ...

  6. ArcGIS api for javascript——加入地图并显示x,y坐标

    这个示例报告了用户在地图上悬停和拖拽鼠标的鼠标指针坐标.通过事件监听器来更新鼠标移到的x和y坐标. 下行代码创建了地图: var map = new esri.Map("map") ...

  7. 高德地图之c#后台获取一个或多个起点到单个终点的直线距离

    首先我们需要一个控制台添加一个新Key(可使用服务选择Web服务,测试的时候IP白名单先不填); 直线距离是通过后台get方式请求API服务地址http://restapi.amap.com/v3/d ...

  8. Angularjs+node+Mysql实现地图上特定点的定位以及附加信息展示

    注:本博文为博主原创,转载请注明出处. 在上一篇博文中主要讲述了如何利用AngularJs+Node+MySql构建项目,并实现地图上的多点标注,今天在这篇文章中,我们将在上一个项目的基础上,实现特定 ...

  9. 如何在iOS地图上高效的显示大量数据

    2016-01-13 / 23:02:13 刚才在微信上看到这篇由cocoachina翻译小组成员翻译的文章,觉得还是挺值得参考的,因此转载至此,原文请移步:http://robots.thought ...

随机推荐

  1. C#定时执行一个操作

    一个客户端向服务器端socket发送报文,但是服务器端限制了发送频率,假如10秒内只能发送1次,这时客户端也要相应的做限制,初步的想法是在配置文件中保存上次最后发送的时间,当前发送时和这个上次最后时间 ...

  2. hdu 4283 You Are the One 区间dp

    You Are the One Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. os.environ()

    ---------2016-5-9 18:56:39-- source:OS.ENVIRON()详解

  4. easyui-panel 滚动条禁用

    div id="p" class="easyui-panel" title="title" style="padding:10px ...

  5. D3.js 做一个简单的图表(条形图)

    柱形图是一种最简单的可视化图标,主要有矩形.文字标签.坐标轴组成. 本文为简单起见,只绘制矩形的部分,用以讲解如何使用 D3 在 SVG 画布中绘图. 一. 画布是什么 前几章的处理对象都是 HTML ...

  6. windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置

    http://www.cnblogs.com/webstorm/p/5744942.html ***************************************** 第一步:下载Nodej ...

  7. Matlab图像处理基本函数(1)

    表13   灰度形态学(或二值图像)处理函数 函数                       说明 conndef               创建连通矩阵 imbothat             ...

  8. eclipse注释模板及格式化模板导入步骤

    1.点击Window->Preference->Java -> Code Style -> Formatter 2.点击右侧Import选择*.xml模板文件导入即可 3.如果 ...

  9. Python内置的字符串处理函数整理

    Python内置的字符串处理函数整理 作者: 字体:[增加 减小] 类型:转载 时间:2013-01-29我要评论 Python内置的字符串处理函数整理,收集常用的Python 内置的各种字符串处理 ...

  10. Laravel 5 使用中的问题记录(持续更新)

    1.更新了blade模板却没有更新缓存 通过使用ftp上传文件到服务器,更新了blade模板,却没有更新缓存,经查,原因是系统时间的影响,通过ftp上传的模板文件修改时间与缓存文件的时间不一致,导致模 ...