6

我正在使用位置的纬度和经度搜索数据库。我想检索某个半径内的所有位置。

然后我将返回的结果编码为 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); 
4

2 回答 2

6

我对 trig 或 SQL 没有太多帮助,我刚刚看到了足够多的 Google 地图问题,可以将您指向本教程:

https://developers.google.com/maps/articles/phpsqlsearch#findnearsql

有一个查询可以尝试在半径内按距离查找点,希望它对您有用。

使用 3959(英里)或 6371(公里)

于 2012-05-17T20:45:34.173 回答
1

试试这个:

$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);  `
于 2017-07-20T11:52:51.790 回答