如何使用Google地理编码API中的countryCodeIso2获取国家/地区地点?

问题描述 投票:0回答:1

我正在使用

https://developers.google.com/maps/documentation/geocoding/requests-geocoding

https://maps.googleapis.com/maps/api/geocode/json

我的用例是这样的: 我有 iso 2(2 个字符)格式的国家/地区代码,想要从地理编码 api 获取国家/地区位置。

例如,我有

JP
。如何调用此 api 并仅获取类型为
country
的单个响应。

我现在正在努力:

 $locale = 'en';
 $response = $this->httpClient->get(
            'https://maps.googleapis.com/maps/api/geocode/json',
            [
                RequestOptions::HTTP_ERRORS => false,
                RequestOptions::QUERY => [
                    'key' => 'apikey',
                    'address' => urlencode('JP'),
                    'components' => 'country',
                    'language' => (string)$locale,
                ]
            ]
        );

并且没有得到预期的结果,因为国家/地区代码不是地址..

{
   "results" : [],
   "status" : "ZERO_RESULTS"
}

我得到 0 个这样的结果。我在文档中没有看到任何国家/地区代码或类似字段,而只是看到地址。

我也愿意使用谷歌地图服务,不仅限于地理编码,所以欢迎任何建议。谢谢

google-geocoding-api
1个回答
0
投票

您可能正在向地理编码 API 发送格式错误的请求,例如

https://maps.googleapis.com/maps/api/geocode/json?components=country&address=JP

确实返回了

ZERO_RESULTS
。正确的要求是

https://maps.googleapis.com/maps/api/geocode/json?components=country:JP

也许这会起作用:

                RequestOptions::QUERY => [
                    'key' => 'apikey',
                    'components' => 'country:JP',
                    'language' => (string)$locale,
                ]

请注意,如果

address
参数格式正确,则不需要
components
参数。

如果您想知道为什么

ZERO_RESULTS
会被返回
address=JP
,简短的回答是,在全球范围内,
JP
本身就太模糊了。

为了获得更具体的想法,我建议您尝试访问maps.googlemaps.com并在搜索框中输入

JP
,然后,这是重要的一点,只需按Enter键即可(并且点击/点击任何建议)。就我而言,结果是“J.p. Motorcycles”或“J & P Fine Art”等企业列表,具体取决于按 Enter 键时 Google 地图上可以看到世界的哪个部分。

© www.soinside.com 2019 - 2024. All rights reserved.