我使用的是Google地理编码API,特别是依赖于XML输出格式。下面的代码循环遍历数组$arrGeocodeSales
,并为每行检索$lat
和$long
,然后显示在表中。
此代码工作正常,但我想扩展它,以便我可以从返回的$xml
结果中提取更多字段。例如,我想从$ xml结果中提取的一些其他字段是formatted_address
和postal_code
。如何修改以下代码以提取其他字段?
您可以在此处查看$ xml结果的示例:
以下是需要修改的代码。我想我不明白如何使用返回的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; ?>
答案 0 :(得分:1)
您可以使用documented here方法操作SimpleXMLElement
结果。
您需要遍历address_component
元素才能找到您感兴趣的type
元素值的元素。查看使用该API的其他代码的示例,您应该能够快速计算出来它出来了。