如何通过ISO2国家代码调用Google地理编码API获取国家信息?
解决方案
一、修正Geocoding API调用参数问题
你当前的错误是components参数格式不正确,正确写法需指定country:[ISO2代码],而非仅写country。同时无需通过address参数传递国家代码,直接用components精准过滤即可。
修正后的调用代码:
$locale = 'en'; $countryCode = 'JP'; $response = $this->httpClient->get( 'https://maps.googleapis.com/maps/api/geocode/json', [ RequestOptions::HTTP_ERRORS => false, RequestOptions::QUERY => [ 'key' => 'apikey', 'components' => "country:$countryCode", // 关键修正:指定国家代码 'language' => (string)$locale, ] ] );
关键说明:
components参数用于精准过滤结果范围,格式为类型:值,country:JP会直接定位到日本的国家信息,确保返回单一country类型结果。- 移除
address参数,避免干扰API解析逻辑,让请求更精准。
调用后返回的结果中,types字段会包含country,可从formatted_address或address_components中提取国家名称等所需信息。
二、可选方案:Place Details API(获取结构化国家信息)
若需要更结构化的国家属性数据,可采用两步法:
- 用Place Autocomplete API,传入
input=JP+types=(country)获取目标国家的place_id; - 将
place_id传入Place Details API,获取包含官方名称、行政区划等更详细的国家信息。
不过针对你的核心需求,修正Geocoding API的components参数已足够直接高效。
内容的提问来源于stack exchange,提问作者Kristi Jorgji
相关产品推荐
相关产品推荐

