ES 经纬度距离 php,php 根据两点的经纬度计算距离
最近用到了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 根据两点的经纬度计算距离相关推荐
- php 根据经纬度获取附近50km的信息,并计算距离
// 查询附近50km的信息 $longitude = '113.2425'; $latitude= '23.16993'; $point = $this->returnSquarePoint( ...
- php根据经纬度计算距离大小,PHP 根据经纬度计算距离的简单示例
这篇文章主要为大家详细介绍了PHP 根据经纬度计算距离的简单示例,具有一定的参考价值,可以用来参考一下. 这是一个非常有用的距离计算函数,利用纬度和经度计算从 A 地点到 B 地点的距离.该函数可以返 ...
- java 身边距离怎么查询_附近的人位置距离计算方法
附近的人的位置用经纬度表示,然后通过两点的经纬度计算距离.根据网上的推荐,最终采用geohash. geohash的实现java版: 1 importjava.util.BitSet;2 import ...
- K邻近算法概述、欧式距离、Scikit-learn使用 、kNN邻近算法距离度量、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离、余弦距离、汉明距离、杰卡德距离、马氏距离
一.K-邻近算法概述 K邻近算(K Nearest Neighbor算法,KNN算法):如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...
- R语言distRhumb函数计算距离实战(两个地理点之间的Rhumb距离)
R语言distRhumb函数计算距离实战(两个地理点之间的Rhumb距离) 目录 R语言distRhumb函数计算距离实战(两个地理点之间的Rhumb距离) #导入geosphere包
- 根据两点间的经纬度计算距离
/** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($l ...
- 如果知道两点的经纬度 如何算两点之间的距离
同纬度不同经度 (赤道除外) h X 111 X COSD=G (h=两地经度差 D=当地的地理纬度 G=实际距离) 跨纬度的需要构造个三角 比如说AB两点不同经纬度(A经B纬) 那就先算出与A点共线 ...
- [转载]根据两点的经纬度求方位角和距离,等
转:http://blog.sina.com.cn/s/blog_658a93570101hynw.html 原文地址:根据两点的经纬度求方位角和距离,等作者:多乎哉不多也多亦不多乎实乃少也 最近自己 ...
- Java计算两点间经纬度距离(两种方式)
反余弦计算方式: private static final double EARTH_RADIUS = 6371000; // 平均半径,单位:m:不是赤道半径.赤道为6378左右 public st ...
- 通过经纬度计算两点间的直线距离
/*** @description 通过经纬度计算两点间的直线距离* @param lat1* @param lng1* @param lat2* @param lng2* @returns {num ...
最新文章
- php 归并排序,详解PHP归并排序的实现
- python将非0数视为false_python 面试题
- 跟我一起学.NetCore之自定义配置源-热更新-对象绑定
- python浅拷贝_Python中的浅拷贝和深拷贝
- cocos2dx实现象棋之运动
- 2020-11-08
- PowerPC E500 MMU详解
- 一段可以无限follow他人的代码
- 程序员面试金典——7.5平分的直线
- 软件工程师关注的播客
- 借Google Guava学习发现和开发通用功能模块
- SQL 错误代码汇总
- Quartus ii仿真界面闪退
- 《明朝那些事儿》读书笔记
- BurpSuite安装与浏览器导入证书
- 利用PHP语言开发手机app后台服务器的框架是什么?或者说开发流程是怎么样的?
- 唯美烟花特效登录页面,我感觉自己又行了
- html 文字输出语音,网页上通过JS实现文本的语音朗读
- Python爬虫学习笔记 (2) [初级] 初识 requests + bs4 + re
- java去掉date分时秒_java Date获取年月日时分秒的实现方法
热门文章
- 双臂Matlab仿真建模:正运动学
- 语音信号预加重与去加重(Matlab+Keil)
- 计算机一级仿宋gb2312,Word怎么设置仿宋体显示为仿宋GB2312字体?
- 使用PHP+MYSQL搭建的一款直播电商源码和大家分享一下
- matlab画图时候图例混乱解决方法
- java max 函数_Java Math max()用法及代码示例
- 计算机网络知识点汇总
- 计算机网络知识点总结(第一章 概述)
- 解决NintendoSwitch安装SXPro后开机长期蓝屏问题
- 中国移动 招聘 php,中国移动开启社招,这真的是机会?移动员工:携网转号累死你...