2012-05-02 16 views
0

私はGoogleのジオコーディングAPIを使用しています。具体的にはXML出力フォーマットに依存しています。以下のコードは配列$arrGeocodeSalesをループし、各行に対して$lat$longを取得し、テーブルに表示します。GoogleジオコーディングAPIを使用してXML結果からすべてのフィールドを抽出します

このコードは正常に動作していますが、返される結果の$xmlより多くのフィールドを抽出できるように拡張したいと考えています。たとえば、$ xmlの結果から抽出したい追加フィールドの一部は、formatted_addresspostal_codeです。追加フィールドを抽出するために、以下のコードを変更するにはどうすればよいですか?

現在の$ xmlの結果の例を見ることができます:

http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

をここで変更する必要があるコードがあります。私は戻ってきたSimpleXMLElementで作業する方法を理解していないと思います。助けてくれてありがとう。

<table border="1" style="margin-bottom:0px;"> 
<tr> 
    <th>ID</th> 
    <th>Roll</th> 
    <th>Address</th> 
    <th>Lat</th> 
    <th>Long</th> 
    <th>MapSaleNumber</th> 
    </tr> 

<?php foreach ($arrGeocodeSales as $key => $value): 
    $address = $value['Address']."+".$value['Municipality']."+Ontario+Canada"; 
    $googleAddress = "https://maps.google.com/maps/geo?q=".urlencode($address)."&output=xml"; 
    // Retrieve the URL contents 
    $googlePage = file_get_contents($googleAddress); 
    // Parse the returned XML file 
    $xml = new SimpleXMLElement($googlePage); 
    // Parse the coordinate string 
    list($lng, $lat, $alt) = explode(",", $xml->Response->Placemark->Point->coordinates); 
?> 
<tr> 
    <td ><?php echo str_pad($row++, 2, '0', STR_PAD_LEFT); ?></td> 
    <td ><?php echo $value['SingleRoll']; ?></td> 
    <td ><?php echo $address; ?> </td> 
    <td ><?php echo $lat ?></td> 
    <td ><?php echo $lng ?></td> 
    <td ><?php echo $value['MapSaleNumber']; ?></td> 
    </tr> 
<?php endforeach; ?> 

答えて

1

あなたは方法documented hereを使用してSimpleXMLElement結果を操作することができます。

type要素値を持つ要素を探すには、address_component要素を繰り返し処理する必要があります。そのAPIを使用している他のコードの例を探してください。

関連する問題