0

私は Google Geocoding API を使用していますが、特に XML 出力形式に依存しています。以下のコードは配列$arrGeocodeSalesをループし、行ごとに と を取得して$lat$longテーブルに表示します。

$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; ?>

4

1 に答える 1

1

ここに記載されSimpleXMLElementている方法を使用して、結果を操作できます。

address_component関心のある要素値を持つ要素を見つけるには、要素を反復処理する必要がありtypeます。その API を使用している他のコードの例を探すと、すぐに理解できるはずです。

于 2012-05-02T18:58:35.007 に答える