博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 根据两点的经纬度计算距离
阅读量:6237 次
发布时间:2019-06-22

本文共 1084 字,大约阅读时间需要 3 分钟。

  hot3.png

最近用到了geohash(参考)来实现附近搜索的功能,在文中提供了一个php的geohash类直接能对经纬地址编码成字符串,  而其中包含一个getDistance方法获取两点间的距离,但在sphinx中使用过滤附近地标的方法SetGeoAnchor发现返回的距离值有误,遂google出以下方法,经测试可用。。

/***  @desc 根据两点间的经纬度计算距离*  @param float $lat 纬度值*  @param float $lng 经度值*/ function getDistance($lat1, $lng1, $lat2, $lng2) {     $earthRadius = 6367000; //approximate radius of earth in meters     /*       Convert these degrees to radians       to work with the formula     */     $lat1 = ($lat1 * pi() ) / 180;     $lng1 = ($lng1 * pi() ) / 180;     $lat2 = ($lat2 * pi() ) / 180;     $lng2 = ($lng2 * pi() ) / 180;     /*       Using the       Haversine formula       http://en.wikipedia.org/wiki/Haversine_formula       calculate the distance     */     $calcLongitude = $lng2 - $lng1;     $calcLatitude = $lat2 - $lat1;     $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);  $stepTwo = 2 * asin(min(1, sqrt($stepOne)));     $calculatedDistance = $earthRadius * $stepTwo;     return round($calculatedDistance); }

附一个在线计算两点距离的地址:

转载于:https://my.oschina.net/ekc/blog/84106

你可能感兴趣的文章
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
[MicroPython]TurniBit开发板DIY自动窗帘模拟系统
查看>>
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>