[英]how to get distance between points using latitude and longitude using php?
[英]Sql for finding the distance between using latitude and longitude returns wrong distance
我需要得到緯度和經度的位置之間的距離,mysql查詢工作沒有錯誤,但它返回錯誤的距離值
當我輸入與數據庫中相同的緯度和經度時,它給出的距離為“2590.4238273460855”而不是零,我不知道這是錯誤的
mysql查詢如下所示,緯度和經度是我的表列名
$sql = "SELECT id,(3956 * 2 * ASIN(SQRT( POWER(SIN(( $latitude - latitude) * pi()/180 / 2), 2) +COS( $latitude * pi()/180) * COS(latitude * pi()/180) * POWER(SIN(( $longitude - longitude ) * pi()/180 / 2), 2) ))) as distance
from table_name ORDER BY distance limit 100";
有人可以幫我嗎...
您的Haversine公式中存在錯誤。 Haversine配方是:
Haversine_distance = r * 2 * ASIN(SQRT(a))
哪里
a = POW(SIN(latDiff / 2),2)+ COS(lat1)* COS(lat2)* POW(SIN(LonDiff / 2),2)
因此,要更正代碼,請將查詢更改為:
"SELECT id,(3956 * 2 * ASIN(SQRT( POWER(SIN(( $latitude - latitude) / 2), 2) +COS( $latitude) * COS(latitude) * POWER(SIN(( $longitude - longitude ) / 2), 2) ))) as distance from table_name ORDER BY distance limit 100";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.