将json数据解析为表但不提取某些行

时间:2013-05-30 22:51:33

标签: php json google-maps-api-3 html-table

我正在使用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调用链接),您会注意到格式化地址的数据。

我做错了什么?

所有行都应该返回地址。

1 个答案:

答案 0 :(得分:1)

检查错误。地理编码器受配额和速率限制。每次页面加载时对大量地址进行地理编码都不是一个好主意(大数字是一个大于10的数字)。