簡體   English   中英

如何使用PHP JSON對象從Google Maps API獲取5個附近地點的經度和緯度?

[英]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是一個數組,其中包含所有已找到的匹配項。

您想要將前5個項目保留在此數組中,因此可以執行以下操作:

let top5 = response.results.slice(0, 5)

對於第一個匹配結果,緯度和經度是:

top5[0].geometry.location.lattop5[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM