PHP根据两点间的经纬度计算距离,php两点经纬度计算
这是一个不错的示例,直接贴代码,首先要知道纬度值、经度值
/** * @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); }
不会算这个东西,不过看代码发现你的代码里有些问题
第一、两点间的直线距离平方:$len算完了后面没有用到,也没有return, 完全就没用了
第二、输入相同的经纬度,结果居然不是0,而且还是个很大的数,所以应该是有问题的
你可以百度一下“php 按经纬度算两点间距离”,有不少现成的代码
我看这个介绍的比较详细,还有代码,你可以看看
blog.csdn.net/...963740
同纬度不同经度 (赤道除外)
h X 111 X COSD=G (h=两地经度差 D=当地的地理纬度 G=实际距离)
跨纬度的需要构造个三角
比如说AB两点不同经纬度(A经B纬)
那就先算出与A点共线的那条纬度B'的距离,在算A到B'的距离,在用勾股定理就可以得出
简单的说可用以下通用公式:
地球上任两点间距离公式:
地球上任两点,其经度分别为A1、A2(E正,W负),纬度分别为B1、B2(N正,S负)。
令A0=(A1-A2)÷2,B0=(BI-B2)÷2
f=√sinB0×sinB0+cosB1×cosB2×sinA0×sinA0
则
1、两点间空间直线距离=2fR
2、两点间最小球面距离=arcsinf÷90°×∏R(角度)
3、两点间最小球面距离=arcsinf×2R(弧度)
说明:E、W、N、S=东西南北;R=地球半径;√=根号;∏=圆周率。
代入公式自己算吧

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック



