0

我正在使用 Google Geocoding API,特别是依赖于 XML 输出格式。下面的代码循环遍历数组$arrGeocodeSales,并为每一行检索$latand $long,然后将其显示在表中。

这段代码运行良好,但我想扩展它,以便从$xml返回的结果中提取更多字段。例如,我想从 $xml 结果中提取的一些附加字段是formatted_addressand postal_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 回答