最近用到了geohash(参考《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($calculate);

}

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

ES 经纬度距离 php,php 根据两点的经纬度计算距离相关推荐

  1. php 根据经纬度获取附近50km的信息,并计算距离

    // 查询附近50km的信息 $longitude = '113.2425'; $latitude= '23.16993'; $point = $this->returnSquarePoint( ...

  2. php根据经纬度计算距离大小,PHP 根据经纬度计算距离的简单示例

    这篇文章主要为大家详细介绍了PHP 根据经纬度计算距离的简单示例,具有一定的参考价值,可以用来参考一下. 这是一个非常有用的距离计算函数,利用纬度和经度计算从 A 地点到 B 地点的距离.该函数可以返 ...

  3. java 身边距离怎么查询_附近的人位置距离计算方法

    附近的人的位置用经纬度表示,然后通过两点的经纬度计算距离.根据网上的推荐,最终采用geohash. geohash的实现java版: 1 importjava.util.BitSet;2 import ...

  4. K邻近算法概述、欧式距离、Scikit-learn使用 、kNN邻近算法距离度量、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离、余弦距离、汉明距离、杰卡德距离、马氏距离

    一.K-邻近算法概述 K邻近算(K Nearest Neighbor算法,KNN算法):如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...

  5. R语言distRhumb函数计算距离实战(两个地理点之间的Rhumb距离)

    R语言distRhumb函数计算距离实战(两个地理点之间的Rhumb距离) 目录 R语言distRhumb函数计算距离实战(两个地理点之间的Rhumb距离) #导入geosphere包

  6. 根据两点间的经纬度计算距离

    /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($l ...

  7. 如果知道两点的经纬度 如何算两点之间的距离

    同纬度不同经度 (赤道除外) h X 111 X COSD=G (h=两地经度差 D=当地的地理纬度 G=实际距离) 跨纬度的需要构造个三角 比如说AB两点不同经纬度(A经B纬) 那就先算出与A点共线 ...

  8. [转载]根据两点的经纬度求方位角和距离,等

    转:http://blog.sina.com.cn/s/blog_658a93570101hynw.html 原文地址:根据两点的经纬度求方位角和距离,等作者:多乎哉不多也多亦不多乎实乃少也 最近自己 ...

  9. Java计算两点间经纬度距离(两种方式)

    反余弦计算方式: private static final double EARTH_RADIUS = 6371000; // 平均半径,单位:m:不是赤道半径.赤道为6378左右 public st ...

  10. 通过经纬度计算两点间的直线距离

    /*** @description 通过经纬度计算两点间的直线距离* @param lat1* @param lng1* @param lat2* @param lng2* @returns {num ...

最新文章

  1. php 归并排序,详解PHP归并排序的实现
  2. python将非0数视为false_python 面试题
  3. 跟我一起学.NetCore之自定义配置源-热更新-对象绑定
  4. python浅拷贝_Python中的浅拷贝和深拷贝
  5. cocos2dx实现象棋之运动
  6. 2020-11-08
  7. PowerPC E500 MMU详解
  8. 一段可以无限follow他人的代码
  9. 程序员面试金典——7.5平分的直线
  10. 软件工程师关注的播客
  11. 借Google Guava学习发现和开发通用功能模块
  12. SQL 错误代码汇总
  13. Quartus ii仿真界面闪退
  14. 《明朝那些事儿》读书笔记
  15. BurpSuite安装与浏览器导入证书
  16. 利用PHP语言开发手机app后台服务器的框架是什么?或者说开发流程是怎么样的?
  17. 唯美烟花特效登录页面,我感觉自己又行了
  18. html 文字输出语音,网页上通过JS实现文本的语音朗读
  19. Python爬虫学习笔记 (2) [初级] 初识 requests + bs4 + re
  20. java去掉date分时秒_java Date获取年月日时分秒的实现方法

热门文章

  1. 双臂Matlab仿真建模:正运动学
  2. 语音信号预加重与去加重(Matlab+Keil)
  3. 计算机一级仿宋gb2312,Word怎么设置仿宋体显示为仿宋GB2312字体?
  4. 使用PHP+MYSQL搭建的一款直播电商源码和大家分享一下
  5. matlab画图时候图例混乱解决方法
  6. java max 函数_Java Math max()用法及代码示例
  7. 计算机网络知识点汇总
  8. 计算机网络知识点总结(第一章 概述)
  9. 解决NintendoSwitch安装SXPro后开机长期蓝屏问题
  10. 中国移动 招聘 php,中国移动开启社招,这真的是机会?移动员工:携网转号累死你...