[英]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.