0

Google Maps API を使用して、指定された経度と緯度に基づいて住所を取得しています。API を複数回呼び出すことができ、経度と緯度がデータベースから読み込まれます。

すべての API 呼び出しを実行して、フォーマットされたアドレスを取得し、それを表に表示したいと考えています。

表のレイアウトは次のとおりです: カウント / 参照 / 経度 / 緯度 / 住所

私のスクリプトは次のとおりです。

<?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の問題が明らかになります。一部の行にはアドレスがありません。更新し続けると、アドレスを持たない行が毎回異なるように見えることに気付くでしょう。その非常に奇妙です。

住所を持たない行の 1 つを取得し、経度と緯度を API 呼び出しに入れると (上記のスクリプトの API 呼び出しへのリンクを参照)、書式設定された住所のデータがあることに気付くでしょう。

私は何を間違っていますか?

すべての行がアドレスを返す必要があります。

4

1 に答える 1

1

エラーを確認します。ジオコーダーには、クォータとレート制限が適用されます。ページが読み込まれるたびに多数の住所をジオコーディングすることはお勧めできません (多数とは 10 を超える数です)。

于 2013-05-30T23:02:53.743 に答える