2

取得する必要があるのは、住所、国、そして座標の配列から始まる地域かもしれません。

私はこの機能を使用しています:

$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
$curlData = curl_exec($curl);
curl_close($curl);

$data = json_decode($curlData);

$address = $data->results[0]->address_components[1]->long_name.', '.$data->results[0]->address_components[0]->long_name;
$country = $data->results[0]->address_components[5]->long_name;
$nation = $data->results[0]->address_components[6]->long_name;

このスクリプト自体は機能しており、結果が返されますが、値が毎回同じ場所にないことに気付きました (利用可能な結果によると思います)。間違った値を取得しました。どうすればそれを修正できますか?

1 つの場所に対する私の出力の 2 つの例を次に示します。

http://urbanfiles.linkmesrl.com/files/uploads/test_address_1.php

http://urbanfiles.linkmesrl.com/files/uploads/test_address_2.php

結果の適切な値を取得するための提案はありますか?

4

1 に答える 1

2

住所コンポーネントをループして、配列の「types」フィールドからタイプを決定できます。

<?php
foreach($data->results[0]->address_components as $address_component){
    if(in_array('country', $address_component->types)){
        $country = $address_component->long_name;
        continue;
    } elseif(in_array('route', $address_component->types)) {
        $address = $address_component->long_name;
        continue;
    }
    // etc...
}
于 2013-06-12T10:18:10.830 に答える