2011-08-09 204 views
0

似乎无法让这个解析器工作谷歌地图,我认为它是因为没有XML扩展?它适用于我制作的xml文件,但是当我使用google xml时,它似乎并不想抓住它。解析谷歌地图API

<?php 
$address = 'edgemont dr wyoming, MI'; 
$address = rawurlencode ($address); 

$url = 'http://maps.google.com/maps/api/geocode/xml?address=' . $address . '&sensor=false'; 
$link = '<a href="' . $url . '">' . $url . '</a>'; 
echo $link; 

$xml = simplexml_load_file($url); 

// get Latitude from XML 
$lat=$xml->GeocodeResponse->result->geometry->location->lat; 
echo $lat; 

?> 
+0

你怎么回来的? – Eddy

+0

$ url返回http://maps.google.com/maps/api/geocode/xml?address=amsterdam&sensor=false。然而,$ lat完全没有返回。我正在通过XAMPP进行本地开发。怀疑这是问题吗? – Lukasz

+0

对不起不是问什么是在$ url,但什么是在$ XML – Eddy

回答

0

你可以改变这一点:

// get Latitude from XML 
$lat=$xml->GeocodeResponse->result->geometry->location->lat; 
echo $lat; 

这个

// get Latitude from XML 
$lat=$xml->result->geometry->location->lat; 
echo $lat; 
-1

通常情况下,谷歌API的需要API密钥。我没有看到你在哪里添加你的请求。当我手动构建您的API调用并将其过滤到我的浏览器时,我得到这个:http://maps.google.com/maps/api/geocode/xml?address=edgemont%20dr%20wyoming%2C%20MI和谷歌返回一个“请求被拒绝”。

可以go here获得谷歌地图API密钥。也就是说,那里有很多很多其他的地理编码器。有些需要某种类型的注册和/或付款,有些则不需要。

here是 “自由的GeoCoder服务” 谷歌的

+0

谷歌不再需要api v3中的api注册码。它在查询字符串中确实需要一个传感器= false(或true),这就是为什么您的示例拒绝了请求。尝试http://maps.google.com/maps/api/geocode/xml?address=amsterdam&sensor=false,它工作正常 – Eddy

+0

呵呵?传感器=假是在那里。您的浏览器可能会切断代码,滚动到右侧。至少在我的例子中,Muad'Dib在他的例子中忘了它。 – Lukasz

+0

http://maps.google.com/maps/api/geocode/xml?address=edgemont%20dr%20wyoming%2C%20MI&sensor=false是$ url返回的内容。 – Lukasz