繁体   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