[英]How to fetch Latitude and Longitude of 5 Nearby Places from Google Maps API using PHP JSON object?
我正在使用Google Maps API来获取给定位置(纬度,经度)的附近地点。
我做了如下:
<?php
$du = file_get_contents("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&type=restaurant&key=APIKEY");
$djd = json_decode(utf8_encode($du),true);
print_r($djd);
?>
这将在浏览器中返回一个JSON文件。
我想知道如何获取JSON中返回的前5个餐厅的[经度,纬度],以便可以使用它们在地图显示上绘制标记?
我是PHP新手,无法解析JSON对象。 任何帮助将不胜感激
这是返回的JSON(缩写):
{
"html_attributions" : [],
"next_page_token" : "CrQCIQEA...",
"results" : [
{
"geometry" : {
"location" : {
"lat" : -33.87036190000001,
"lng" : 151.1978505
},
"viewport" : {
"northeast" : {
"lat" : -33.8690162197085,
"lng" : 151.1991288802915
},
"southwest" : {
"lat" : -33.8717141802915,
"lng" : 151.1964309197085
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
"id" : "e58f0f9ecaf15ab719d305b93265cafc00b01a3f",
"name" : "The Little Snail Restaurant",
"opening_hours" : {
"open_now" : false
},
"photos" : [
{
"height" : 900,
"html_attributions" : [
"\u003ca href=\"https://maps.google.com/maps/contrib/114727320476039103791/photos\"\u003eThe Little Snail Restaurant\u003c/a\u003e"
],
"photo_reference" : "CmRaAAAA0I3YolUFMPSLTtWTRwwDN8TrsmfORJ36osMasP6PeqJSp4qIxdmn3hs6FNifT6Wf-1rZ_gwr1C7a8U1-3BVXhL9suX3cs1ffJiBJQ5TswKftrlLRAk9F9a6tuHpQ1KhrEhD1QXDGR2Sao1qKG5hqvnsVGhTDTxrJvlfSn5UetP261FuHpHmTTQ",
"width" : 1350
}
],
"place_id" : "ChIJtwapWjeuEmsRcxV5JARHpSk",
"plus_code" : {
"compound_code" : "45HX+V4 Pyrmont, New South Wales, Australia",
"global_code" : "4RRH45HX+V4"
},
"price_level" : 2,
"rating" : 4.4,
"reference" : "ChIJtwapWjeuEmsRcxV5JARHpSk",
"scope" : "GOOGLE",
"types" : [ "restaurant", "food", "point_of_interest", "establishment" ],
"user_ratings_total" : 931,
"vicinity" : "3/50 Murray Street, Pyrmont"
},
{
"geometry" : {
"location" : {
"lat" : -33.8682215,
"lng" : 151.1953756
},
"viewport" : {
"northeast" : {
"lat" : -33.8670561697085,
"lng" : 151.1962794802915
}...
只需在上面看到的层次结构中导航即可。 让我们将整个JSON对象response
称为...
response.results
是一个数组,其中包含所有已找到的匹配项。
let top5 = response.results.slice(0, 5)
对于第一个匹配结果,纬度和经度是:
top5[0].geometry.location.lat
, top5[0].geometry.location.lat
top5[0].geometry.location.lng
PS:很抱歉,此答案使用的是JavaScript语法,而不是PHP,但是我希望这足以使您知道该怎么做!
kshetline用与JavaScript中的JSON对象进行交互的方式回答了您的问题,但是由于您从未提及JavaScript,而是在问题的标记中仅包含PHP,因此我将尝试用PHP回答您。
要在PHP中访问JSON对象的属性,必须使用arrow语法 :
$result = $djd->results;
for($i=0; $i<5; $i++){
// Do what you want with them from here
$lat = $result[$i]->geometry->location->lat;
$lng = $result[$i]->geometry->location->lng;
// Example of how to return them
echo json_encode($lat);
echo json_encode($lng);
}
我不知道返回的JSON是什么样的,因此我在kshetline的答案中基于JSON建立了PHP。 我确定他们的JSON是正确的,所以应该可以。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.