使用Google Geocoding API从XML结果中提取所有字段

时间:2012-05-02 18:43:49

标签: xml geolocation geocoding

我使用的是Google地理编码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; ?>

1 个答案:

答案 0 :(得分:1)

您可以使用documented here方法操作SimpleXMLElement结果。

您需要遍历address_component元素才能找到您感兴趣的type元素值的元素。查看使用该API的其他代码的示例,您应该能够快速计算出来它出来了。