gpt4 book ai didi

php - 使用 PHP (curl) 从 JSON (Google Maps API) 中提取数据

转载 作者:IT王子 更新时间:2023-10-28 23:52:12 26 4
gpt4 key购买 nike

我对 JSON 很陌生,我正在尝试使用 curl 从 Google Maps API 获取地理编码城市的纬度和经度。我正在使用的功能是:

function geocode($city){
$cityclean = str_replace (" ", "+", $city);
$details_url = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $cityclean . "&sensor=false";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $details_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$geoloc = json_decode(curl_exec($ch), true);

$step1 = $geoloc['results'];
$step2 = $step1['geometry'];
$coords = $step2['location'];

print $coords['lat'];
print $coords['lng'];

}

所有这些的目标是从以下 JSON 的结果 -> 几何 -> 位置数组中提取 lat 和 lng 值:

{
"status": "OK",
"results": [ {
"types": [ "locality", "political" ],
"formatted_address": "Westminster, London, UK",
"address_components": [ {
"long_name": "London",
"short_name": "London",
"types": [ "locality", "political" ]
}, {
"long_name": "Westminster",
"short_name": "Westminster",
"types": [ "administrative_area_level_3", "political" ]
}, {
"long_name": "Greater London",
"short_name": "Greater London",
"types": [ "administrative_area_level_2", "political" ]
}, {
"long_name": "England",
"short_name": "England",
"types": [ "administrative_area_level_1", "political" ]
}, {
"long_name": "United Kingdom",
"short_name": "GB",
"types": [ "country", "political" ]
} ],
"geometry": {
"location": {
"lat": 51.5001524,
"lng": -0.1262362
},
"location_type": "APPROXIMATE",
"viewport": {
"southwest": {
"lat": 51.3493528,
"lng": -0.3783580
},
"northeast": {
"lat": 51.7040647,
"lng": 0.1502295
}
},
"bounds": {
"southwest": {
"lat": 51.3493528,
"lng": -0.3783580
},
"northeast": {
"lat": 51.7040647,
"lng": 0.1502295
}
}
}
} ]
}

但是,它不打印任何内容。我知道该函数成功地从 Google 检索 JSON 并将其带到我的服务器,因为我为“状态”值做了一个打印语句并返回“确定”。问题似乎出在我尝试深入研究 JSON 时。

对不起,如果这是一个简单的问题,但就像我说的,我是新手,现在让我发疯了。

非常感谢! :)

最佳答案

请注意,似乎 results 包含一个数组 (这里只有一项) 个结果; geometry 是一个结果中的一项。

在这里,您可以看到结果的内容由 [] 分隔 - 这表明它是一个数组。


因此,您必须首先访问第一个结果:$geoloc['results'][0]
您将在其中拥有几何图形:$geoloc['results'][0]['geometry']

这将允许您获得纬度和经度:

var_dump($geoloc['results'][0]['geometry']['location']['lat']);
var_dump($geoloc['results'][0]['geometry']['location']['lng']);


我想,根据您搜索的地址,您有时会在 results 数组中拥有多个项目。

关于php - 使用 PHP (curl) 从 JSON (Google Maps API) 中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com