我正在使用 Mapquest 来尝试获取所请求地址的纬度和经度值。
这是我对他们的API的调用:
$json = file_get_contents('http://www.mapquestapi.com/geocoding/v1/address?key=******&callback=renderOptions&outFormat=json&inFormat=json&json={location:{street:"Lancaster,PA"},options:{thumbMaps:false}}');
$output = json_decode($json, true);
$lat = $output['results'][0]['locations'][0]['latLng']['lat'];
$lng = $output['results'][0]['locations'][0]['latLng']['lng'];
echo $lat.",".$lng;
正如您所看到的,我正在尝试将LAT
和LNG
回显到屏幕,但它是空的。当我print_r($json)
时,我得到以下内容:
renderOptions({ “结果”:[{ “位置”:[{ “的latLng”:{ “LNG”: - 76.30127, “LAT”:40.03804}, “adminArea4”:“兰开斯特 县”, “adminArea5Type”: “城” ...............
所以我知道响应没问题且LAT
和LNG
可用,但是如果我print_r($output)
我什么都没得到,如果我var_dump($output)
我得到NULL,并且显然我没有得到我的LAT LNG数据。
我对JSON和数组不太满意。有人能看出我做错了吗?
答案 0 :(得分:2)
您需要从网址中删除&callback=renderOptions
。现在,服务器返回JSON P (具有指定的回调函数)。这不是有效的JSON,因此json_decode
返回NULL
(如手册中所述)