我正在使用 google maps api 根据给定的经度和纬度获取地址。可以对 api 进行多次调用,经度和纬度是从数据库中加载的。
我想通过所有的 api 调用并获取格式化的地址并将其显示在表格中。
表格布局如下:count / ref / longitude / latitude / address
我的脚本如下:
<?php
$databasehost = "localhost";
$databasename = "...";
$databasetable = "import1";
$databasetable2 = "data1";
$databaseusername ="...";
$databasepassword = "...";
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$query = mysql_query("SELECT * from $databasetable;");
$data = array();
$index = 0;
while($row = mysql_fetch_assoc($query))
{
$data[$index] = $row;
$index++;
}
$count = 1;
?>
<table>
<?php
foreach ($data as $key) {
$url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='.$key['latitude'].','.$key['longitude'].'&sensor=true';
$json = file_get_contents($url);
$dataReceived = json_decode($json, TRUE);
if(!empty($dataReceived['results'][0]['formatted_address']))
{
$formattedAddress = $dataReceived['results'][0]['formatted_address'];
}else{
$formattedAddress = '';
}
?>
<tr>
<td><?=$count?></td>
<td><?=$key['id']?></td>
<td><?=$key['latitude']?></td>
<td><?=$key['longitude']?></td>
<td><?=$formattedAddress?></td>
</tr>
<?php
$count++;
}
?>
</table>
<?php
@mysql_close($con);
?>
现在,如果您访问此链接:http ://www.ryansmurphy.com/crawler/get-data.php ,问题就变得清晰了。有些行,没有地址。如果您不断刷新,您会注意到每次似乎都不同的行没有地址。它非常奇怪。
如果您选择其中没有地址的行并将经度和纬度放入 api 调用中(请参阅上面脚本中 api 调用的链接),您会注意到格式化地址的数据。
我究竟做错了什么?
所有行都应返回地址。