php附近的地方脚本帮助

Posted

技术标签:

【中文标题】php附近的地方脚本帮助【英文标题】:Php nearby places script help 【发布时间】:2010-12-11 23:28:22 【问题描述】:

我正在阅读 http://code.google.com/apis/maps/articles/phpsqlsearch.html 以获取 SQL/数学。我写了一个小 php 脚本,但没有得到任何结果。

    <?php
$db_host = "localhost";
$db_username = "root"; 
$db_pass = "";
$db_name = "places";

mysql_connect("$db_host","$db_username","$db_pass") or die ("could not connect to mysql");
mysql_select_db("$db_name") or die ("no database");

$lat = "37";
$lon = "-122";
$radius = "25";
$sql = mysql_query("SELECT id, name, ( 3959 * acos( cos( radians('$lat') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('$lon') ) + sin( radians('$lat') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '$radius' ORDER BY distance LIMIT 0 , 20") or die("error");

$nearby_check = mysql_num_rows($sql); 
if ($nearby_check > 0)

    while($row = mysql_fetch_array($sql))
    
        $name = $row["name"];
        echo $name . '<br />';
    

else

    echo 'No Places found nearby';  

?>

数据库结构和数据与谷歌代码文章中的相同。

那是我的 PHP 脚本。它出什么问题了?我认为这可能是一个 SQL 问题。不太确定。这篇文章是 2008 年 1 月发布的,所以可能有什么变化?

【问题讨论】:

它只是找不到附近的地方。不知道怎么了。我用更多信息更新了帖子。 嗯,不知道。你试过扩大半径吗?将其设置为 2000 只是为了看看是否有任何问题出现? 刚刚将其更改为 27,它显示了位置,但一切都是两倍...不知道为什么。 然后设置为 30 个列表更多但一切都是两倍...我该如何解决这个问题? 不知道。数据库中是否有重复记录? 【参考方案1】:

http://www.geonames.org/export/

使用 geonames.org 获得您想要的。这是在附近的地方找到的。

此服务器从未停机。与http://webservicex.net不同,我已经检查了很长时间。

您可以在 javascript 和 PHP 中使用它。

http://booking.com 正在使用这样的服务来显示酒店附近的酒店、机场等。

我一直在为我的一个项目使用这项服务。

geonames 提供了一个数据库转储,我希望他们会定期更新。

您可以在他们的网站上找到更多信息。

http://www.geonames.org/export/web-services.html

http://forum.geonames.org/gforum/posts/list/499.page

【讨论】:

【参考方案2】:
<?php
require_once('config.php'); 

$lat = "4.2709781";
$lng = "-120.2881378";
$radius = "10";

$req = $bdd ->prepare("SELECT id, name, lat, lng, ( 6371 * acos( cos( radians('$lat') ) * cos( radians( lat) ) * cos( radians( lng) - radians('$lng') ) + sin( radians('$lat') ) * sin( radians( lat) ) ) ) AS distance FROM markertable HAVING distance < '$radius' ORDER BY distance LIMIT 0 , 40");

$req->execute();

$datas = array();
$i=0;

while($tmpData = $req->fetch()) 
    $datas[$i]['id'] = utf8_encode($tmpData['id']);
    $datas[$i]['name'] = utf8_encode($tmpData['name']);
    $datas[$i]['lat'] = utf8_encode($tmpData['lat']);
    $datas[$i]['lng'] = utf8_encode($tmpData['lng']);
    $datas[$i]['distance'] = utf8_encode($tmpData['distance']);
    $i++;


$jsonOutPut = json_encode(array('markers'=>$datas));
echo $jsonOutPut;
$bdd = null;    

?>

【讨论】:

以上是关于php附近的地方脚本帮助的主要内容,如果未能解决你的问题,请参考以下文章

PHP 脚本/目录的权限是啥?

无痛脚本查询中的“['for'] 附近的令牌序列无效”错误

Bash 脚本:意外标记附近的语法错误?

用于确定我在城市时附近城市是不是评估为假的地理定位脚本

在 Bluehost 共享主机计划中,如何从 PHP 脚本创建数据库? [关闭]

Bash 脚本中意外标记“if”附近的语法错误