0

我昨晚发布了这个问题,但我措辞错误并且没有正确解释。我正在尝试缓存 googlemaps 地理编码结果以用于我制作的消防地图,并且我正在接近 google 的限制,因此需要缓存结果。帮助!

下面的代码有点工作,但是每次代码运行时它都会创建一个新的 sql 记录,而不管地址是否已经在数据库中。似乎只调用一次谷歌然后保存数据,然后从数据库中加载数据正常,看起来其余的工作,但我看不出我哪里出错了..正如我所说,它创建了一条新记录每次代码运行时,我都会得到一个充满相同记录的数据库。我的脑子很痛,但我真的需要让这个工作,这样我才能继续帮助消防车灭火。:)

哦,我正在使用 googlemaps 上的地理编码结果(在 T&C 允许的情况下),这个代码实际上只是为了让它工作。我希望这是有道理的,我希望有人能提供帮助......谢谢:)

<?php

$jobadd = "1000 BURWOOD HWY, BURWOOD";

// connect to the database
include('connect-db.php');

// get results from database and find needle
$result = mysql_query("SELECT * FROM geocache") 
or die(mysql_error());  


while($row = mysql_fetch_array( $result ))
{
$needle =  '' . $row['address'] . '';

if (strpos($jobadd,$needle) !== false)
{
$status = "CACHED";
$latitude =  '' . $row['latitude'] . '';
$longitude =  '' . $row['longitude'] . '';
}

else

{
$status = "GOOGLE";
$address2 = "$jobadd, Victoria, Australia";
define("MAPS_HOST", "maps.google.com"); 
$base_url = "http://" . MAPS_HOST . "/maps/api/geocode/xml"; 
$request_url = $base_url . "?address=" . urlencode($address2) ."&sensor=false"; 
$xml = new SimpleXMLElement(file_get_contents($request_url)); 

$latitude = $xml->result->geometry->location->lat;
$longitude = $xml->result->geometry->location->lng; 

// save the data to the database
mysql_query("INSERT geocache SET address='$jobadd', latitude='$latitude', longitude='$longitude' ")
 or die(mysql_error()); 
}

}

echo $status;
echo '<BR>';
echo $jobadd;
echo '<BR>';
echo 'LAT:';
echo $latitude;
echo '<BR>';
echo 'LON:';
echo $longitude;

?>
4

1 回答 1

0

你试过输出strpos的结果吗?逻辑看起来并没有错。问题在于 if 条件。数据库中的记录是什么样的?

于 2013-04-10T03:22:37.673 回答