我需要获得纬度和经度位置之间的距离, mysql查询工作没有错误,但它返回错误的距离值
当我输入与数据库中相同的纬度和经度时,它将距离设为“2590.4238273460855”而不是零,我不知道这是错误的
mysql查询如下所示 这里的纬度和经度是我的表列名称
display: flex; justify-content: flex-start; align-items: flex-start; flex-flow: row wrap;
任何人都可以帮助我..
答案 0 :(得分:2)
您的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";