我昨晚发布了这个问题,但我措辞错误并且没有正确解释。我正在尝试缓存 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;
?>