背景(可跳过)
我目前正在进行一个项目,允许我们的网络应用程序显示我们平台中存储的地址所在国家的腐败感知指数(CPI)分数。
这听起来很容易,但这些CPI分数每年都会更新,我们希望这个分数是存储在我们平台中的所有国家的最新分数。当然,我们不想通过每年扫描平台中存储的所有地址并进行必要的更改来做到这一点,这是对错误敏感的(国家/地区可以用不同的语言存储在平台中,因此可能会跳过一些,并显示不同语言国家/地区的旧分数)。并不是所有国家都有CPI评分。
我提出的一个解决方案是将CPI分数从地址表中分离出来,并具有一个可以从原始地址表中引用的ID。这样,您只需要为每个国家更新一次CPI分数,而不是为所有翻译变体更新一次。但另一个问题仍然是如何在国家和CPI之间建立联系。因为如果我将地址存储为"Deutschland"国家,如果没有翻译模块,它将无法检测到这是德语中"Germany"的翻译。由于我们使用的是谷歌地图API,我认为如果我们可以使用谷歌API中的某种国家ID(如本文中的地方ID),并将此ID与国家名称存储在一起,并使用此ID作为CPI和原始地址表之间的参考,那将是非常好的。
核心问题
谷歌是否有唯一的国家标识符,只能通过API访问(类似于地方ID)?
Google Maps Geocoding API中任何功能的唯一标识符都是位置ID。每个国家也有一个位置ID。
你怎么能找到它?请考虑Geocoding API有一个允许设置国家/地区过滤器的组件过滤。
国家/地区过滤器接受两个字母的ISO 3166-1国家/地区代码。
https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
所以,如果你需要一个德国的地方ID,只需执行以下请求:
https://maps.googleapis.com/maps/api/geocode/json?components=country%3ADE&密钥=YOUR_API_key
这将返回场所ID ChIJa76xwh5ymkcRW-WRjmtd6HU。
使用Geocoder工具可以获得相同的结果:
https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D%26options%3Dtrue%26in_country%3DDE