我正在搜索具有位置纬度和经度的数据库。我想检索特定半径内的所有位置。
然后,我将返回的结果编码为 JSON 并使用 ajax 检索数据,但是我收到一个未定义的错误,这意味着没有从数据库返回数据。
任何人都可以看到我哪里出了问题吗?
这是我的查询
$sql="SELECT *, ACOS( SIN( RADIANS( `lat` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `lat` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `lng` ) - RADIANS( $fLon )) ) * 6380 AS `distance`
FROM `markers`
WHERE ACOS( SIN( RADIANS( `lat` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `lat` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `lng` ) - RADIANS( $fLon )) ) * 6380 < 10
ORDER BY `distance`";
$result = mysql_query($sql);
while($r = mysql_fetch_assoc($result)) $rows[] = $r;
echo json_encode($rows);
我对trig或SQL没有太大帮助,我刚刚看到了足够多的Google地图问题来指出本教程:
https://developers.google.com/maps/articles/phpsqlsearch#findnearsql
有一个查询可以尝试在半径内按距离查找点,希望它对您有用。
使用 3959(以英里为单位)或 6371(以公里为单位)
试试这个:
$sql="SELECT * , ACOS( SIN( RADIANS( 'lat' ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( 'lat' ) ) * COS( RADIANS( $fLat )) * COS( RADIANS( 'lng' ) - RADIANS( $fLon )) ) * 6380 AS distance FROM 'markers'
WHERE distance < 10
ORDER BY distance";
$result = mysql_query($sql);
$rows = mysql_fetch_assoc($result));
echo json_encode($rows); `