Radius搜索PHP、MYSQL和谷歌地图

Radius搜索PHP、MYSQL和谷歌地图,php,mysql,ajax,google-maps,Php,Mysql,Ajax,Google Maps,我正在用一个位置的纬度和经度搜索一个数据库。我想检索某个半径内的所有位置 然后,我将返回的结果编码为JSON并使用ajax检索数据,但是我得到一个未定义的错误,这意味着没有从数据库返回数据 有人能看出我哪里出了问题吗 这是我的问题 $sql="SELECT *, ACOS( SIN( RADIANS( `lat` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `lat` ) ) * COS( RADIANS( $fLat )) * COS( RADI

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

然后,我将返回的结果编码为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); 
$sql=“SELECT*,ACOS(SIN(弧度(`lat`))*SIN(弧度($fLat))+COS(弧度(`lat`))
*COS(弧度($fLat))*COS(弧度(`lng`)-弧度($fLon))*6380作为距离`
从`标记`
式中ACOS(SIN(弧度(`lat`)*SIN(弧度($fLat))+COS(弧度(`lat`))
*COS(弧度($fLat))*COS(弧度(`lng`)-弧度($fLon))*6380<10
按“距离”排序;
$result=mysql\u查询($sql);
而($r=mysql\u fetch\u assoc($result))$rows[]=$r;
echo json_编码($rows);

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

这里有一个查询,可以根据距离在半径范围内查找点,希望对您有用

使用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);  `
$sql=“SELECT*,ACOS(SIN(弧度('lat'))*SIN(弧度('lat'))+COS(弧度('lat'))*COS(弧度('lat'))*COS(弧度('lng'))-RADIANS('fLon'))*6380作为与“标记”的距离
其中距离<10
按距离排序”;
$result=mysql\u查询($sql);
$rows=mysql_fetch_assoc($result));
echo json_编码($rows)`

Suggestion:尝试不带WHERE子句(或更简单的WHERE子句)的查询,看看是否可以先得到一些结果。分而治之以孤立问题的根源。查看距离,结果可能会提供信息。感谢您的回复。只是删除了where子句,但仍然一无所获,还有其他想法吗?
SELECT*FROM markers
maybe?信息:我刚刚手动将lat/long值替换为-32.9和87.01,并在一个包含纬度和经度字段的数据库中找到了一些结果。这个查询在SQL中似乎是合理的。您是否回显了SQL查询以查看传入的变量是否有错误?只需在查询中输入一些有意义的值,仍然没有任何结果。我不想听起来像个白痴,但我该如何“呼应sql”谢谢,我已经看过那个教程了。并复制了所有代码(更改相关位),这将返回一个空的xml文档。如果省略
距离<25
部分,或者将其增加很多,比如数千,我认为它应该返回几个标记。如果不是,可能是数据库中的类型不匹配吗?数学可能处理不正确。