使用Google Places附近搜索API无法获得精确匹配的Google地点API。

3
我正在使用Google Places API检索有关位置的详细信息。它说我需要在详细查询中使用placeid,而我是通过使用nearbysearch查询来获取该ID的。我没有检索到我要找的精确结果。我相当确定我正在使用错误的API(nearbysearch)从提供的纬度/经度中检索地点ID,以便将其传递到详细查询中。我认为附近搜索返回的是附近的位置,而不是基于纬度/经度的位置的精确匹配。如果您查看我的代码,我正在从第一个结果中获取placeid,因为我想象第一个结果是一个精确匹配。我的详细查询应该返回一个包含我要查找的内容(营业时间)的位置详细信息的JSON字符串。您可以在这里看到奇迹:单击演示中的位置详细信息选项卡

这是我的代码:

<%
require_once("../www/api");

function getLatLon($address)
{
  $curl=curl_init();
  curl_setopt($curl,CURLOPT_URL,'https://maps.googleapis.com/maps/api/geocode/json?address='.rawurlencode($address));
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
  $json=curl_exec($curl);
  curl_close($curl);
  $json=json_decode($json);
  $details=[
     'lat'=>$json->results[0]->geometry->location->lat,
     'lng'=>$json->results[0]->geometry->location->lng
  ];
  echo "[$address] LATITUDE => ".$details['lat']." LONGITUDE => ".$details['lng']."\r\n";
  return $details;
}


function getDetails($address)
{
  $apikey='googlesuppliedapi';
  $locdetails=getLatLon($address);
  $latitude=$locdetails['lat'];
  $longitude=$locdetails['lng'];
  $curl=curl_init();
  curl_setopt($curl,CURLOPT_URL,"https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=$latitude,$longitude&radius=10&key=$apikey");
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
  $json=curl_exec($curl);
  curl_close($curl);
  $json=json_decode($json);
  $placeid=$json->results[0]->place_id;
  $curl=curl_init();
  curl_setopt($curl,CURLOPT_URL,"https://maps.googleapis.com/maps/api/place/details/json?placeid=$placeid&key=$apikey");
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
  $json=curl_exec($curl);
  curl_close($curl);
  $json=json_decode($json);
  //print_r($json);
}


$address='312 South Congress Avenue West Palm Beach, FL 33409';
getDetails($address);

我认为问题出在我使用了附近搜索,它没有根据搜索的纬度和经度提供正确的位置。

这是我的附近搜索查询输出:

stdClass Object
(
    [html_attributions] => Array
        (
        )

    [results] => Array
        (
            [0] => stdClass Object
                (
                    [geometry] => stdClass Object
                        (
                            [location] => stdClass Object
                                (
                                    [lat] => 26.7115298
                                    [lng] => -80.0854131
                                )

                        )

                    [icon] => https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png
                    [id] => 36f62f72f9fafff3c8508c26edafb628b1712587
                    [name] => North Congress Avenue
                    [place_id] => ChIJ0bwzDBfW2IgR8BPq-9HHQz0
                    [reference] => CpQBjAAAADGYl1TmV52LoBfAZYgFSdnpZK6VewyJilUX4b5VA0xFD8iKqCO4IgFPDOHQ6NHIE8OZVDWj4P9UmLNh2_tRsu7nuSnlkKDg5e_PWm2RwkJFI4NAKC42KxtVcqlfSl9mC6y-yIn3H8yBKOSR1MlWXTWIlcsTG2Qs4jh9agd-S0l3bvQjfzTQvGCHqJE4ivRt3BIQ5l8h8UdnDtBGb6mivHNeHhoU_zFehk7_cW6e3vZGgV-Je60d7KI
                    [scope] => GOOGLE
                    [types] => Array
                        (
                            [0] => route
                        )

                    [vicinity] => West Palm Beach
                )

            [1] => stdClass Object
                (
                    [geometry] => stdClass Object
                        (
                            [location] => stdClass Object
                                (
                                    [lat] => 26.7114047
                                    [lng] => -80.0898085
                                )

                            [viewport] => stdClass Object
                                (
                                    [northeast] => stdClass Object
                                        (
                                            [lat] => 26.719424
                                            [lng] => -80.0759671
                                        )

                                    [southwest] => stdClass Object
                                        (
                                            [lat] => 26.7062189
                                            [lng] => -80.1011549
                                        )

                                )

                        )

                    [icon] => https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png
                    [id] => 566862b54929748bdef8a5d05f0fa2f5e770bfc5
                    [name] => Palm Beach Lakes
                    [place_id] => ChIJH6dwlRnW2IgR-g8PWsqzHow
                    [reference] => CpQBiAAAAAPdlbZ6ND-pH9n9sqPFAfdSXM588cOEQyE0kcYDYkjy7xEsMcxTItt46VXs897XbAAcviUEI_PXnLEi6-fqava9X0_9WFxnncB70Tka_o-G4EszeyFmuPfOSmPNUo-DUt3pj-ton7hfs5Io5zmQJQKIcPdeAAyyccglVIIjBJnmcykuf5En1u-mJtAMJIULChIQkMORVanBwCcFjxqWEce21RoUOYRvsFewN230gLgffru21AbSsD8
                    [scope] => GOOGLE
                    [types] => Array
                        (
                            [0] => neighborhood
                            [1] => political
                        )

                    [vicinity] => West Palm Beach
                )

        )

    [status] => OK
)

这是详情查询的输出结果。
stdClass Object
(
    [html_attributions] => Array
        (
        )

    [result] => stdClass Object
        (
            [address_components] => Array
                (
                    [0] => stdClass Object
                        (
                            [long_name] => 314-302
                            [short_name] => 314-302
                            [types] => Array
                                (
                                    [0] => street_number
                                )

                        )

                    [1] => stdClass Object
                        (
                            [long_name] => North Congress Avenue
                            [short_name] => N Congress Ave
                            [types] => Array
                                (
                                    [0] => route
                                )

                        )

                    [2] => stdClass Object
                        (
                            [long_name] => Palm Beach Lakes
                            [short_name] => Palm Beach Lakes
                            [types] => Array
                                (
                                    [0] => neighborhood
                                    [1] => political
                                )

                        )

                    [3] => stdClass Object
                        (
                            [long_name] => West Palm Beach
                            [short_name] => West Palm Beach
                            [types] => Array
                                (
                                    [0] => locality
                                    [1] => political
                                )

                        )

                    [4] => stdClass Object
                        (
                            [long_name] => Palm Beach County
                            [short_name] => Palm Beach County
                            [types] => Array
                                (
                                    [0] => administrative_area_level_2
                                    [1] => political
                                )

                        )

                    [5] => stdClass Object
                        (
                            [long_name] => Florida
                            [short_name] => FL
                            [types] => Array
                                (
                                    [0] => administrative_area_level_1
                                    [1] => political
                                )

                        )

                    [6] => stdClass Object
                        (
                            [long_name] => United States
                            [short_name] => US
                            [types] => Array
                                (
                                    [0] => country
                                    [1] => political
                                )

                        )

                    [7] => stdClass Object
                        (
                            [long_name] => 33409
                            [short_name] => 33409
                            [types] => Array
                                (
                                    [0] => postal_code
                                )

                        )

                )

            [adr_address] => <span class="street-address">314-302 N Congress Ave</span>, <span class="locality">West Palm Beach</span>, <span class="region">FL</span> <span class="postal-code">33409</span>, <span class="country-name">USA</span>
            [formatted_address] => 314-302 N Congress Ave, West Palm Beach, FL 33409, USA
            [geometry] => stdClass Object
                (
                    [location] => stdClass Object
                        (
                            [lat] => 26.7115298
                            [lng] => -80.0854131
                        )

                )

            [icon] => https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png
            [id] => 36f62f72f9fafff3c8508c26edafb628b1712587
            [name] => 314-302 N Congress Ave
            [place_id] => EjYzMTQtMzAyIE4gQ29uZ3Jlc3MgQXZlLCBXZXN0IFBhbG0gQmVhY2gsIEZMIDMzNDA5LCBVU0E
            [reference] => CqQBlAAAAKY3aMkvbZCfKVm1oWPpiRQQ9iXZF1lBBYBLe6YG4HY3ZFSFBgvcPSkoi6RyVWiRq0MyCUyqmRy7pHJrD3W0QGYGPYnCePrqiBiR4oLC9PNwgtX_zAcbdwzqqCzk6vByBPV6RIxXERYMTDW510f7ih2iOaXVsFVIveVLBkvDlcVI_YGQ7IiVsEhem2Z7thOTK0n-tkCXqCrfuvwtJtaqjXISED_x006ruaYh5FPe1dY0ikgaFLUDPCNfYboxcEd3CXDydA1Dg_L3
            [scope] => GOOGLE
            [types] => Array
                (
                    [0] => street_address
                )

            [url] => https://maps.google.com/?q=314-302+N+Congress+Ave,+West+Palm+Beach,+FL+33409,+USA&ftid=0x88d8d6170c33bcd1:0x3d43c7d1fbea13f0
            [vicinity] => West Palm Beach
        )

    [status] => OK
)
root:/srv/www/scl/scripts> 

我不太确定在这里该怎么做。

更新:

我还尝试使用此位置:cheetahs,正如您所看到的,这实际上是一家合法的企业,但我无法获得我需要的营业时间

1个回答

1
是的,你说得对,nearbysearch API 会返回靠近你所搜索的地点的地点列表。
你只需要获取你要搜索的地点的place_id,然后使用Places API以检索详细结果。
Google提供了PlaceID finder,在那里你可以填写地点并获取该特定地点的ID。只需查看示例代码,并在你的应用程序代码中嵌入places库以获取place_id和更多地点详情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接