我正在使用
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 个这样的结果。我在文档中没有看到任何国家/地区代码或类似字段,而只是看到地址。
我也愿意使用谷歌地图服务,不仅限于地理编码,所以欢迎任何建议。谢谢
您可能正在向地理编码 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 地图上可以看到世界的哪个部分。