如何获取给定地址的国家/地区代码
How to get a country region code for a given address
我让用户填写一份表格,说明他们居住的城市。为了简化我使用 Mapbox 地理编码 API 的过程:用户开始填写他所在城市的名称,API 提示结果。
用户 select 是一个结果,我将数据存储在我的数据库中,格式如下:
{
"city": "Paris",
"region": "TX, //Texas
"country": "US"
}
我有按地区划分的国家 svg 地图。
<svg>
<g>
<path id="US-AK" title="Alaska" d="..." />
<path id="US-TX" title="Texas" d="..." />
...
</g>
</svg>
现在我可以从数据库中 select 居住在德克萨斯州的所有用户,并在 svg 地图上显示信息(居住在该地区的用户数量)。
问题是 API 并不总是在响应中给我区域信息。
例如 Paris, France
我已经测试了 6 different API 但他们给我的有关区域的数据并不一致。有时 APIs 不包含任何有关区域的信息。有时候信息是错误的。
我只看到一个解决方案:存储有关区域的所有数据(不同语言的代码和名称)并让用户自己 select 他们的国家区域。
但也许您看到了另一个更简单的解决方案?
我们找到了不同的解决方案。我们在 MongoDB 中以 geoJSON
格式存储区域的形状。对于 API 返回的每个地址,我们都有 GPS 坐标。所以我们总能找到一个地区的代码。
// Insert regions to DB
db.getCollection('region').insert({
"code": "FR-IDF",
"polygons": {
"type":"MultiPolygon",
"coordinates": <multi polygon shape>
}
});
// Find regions by gps coordinates
db.getCollection('region').find({
"polygons": {
$geoIntersects: {
$geometry:{
"type":"Point",
"coordinates" : [ 7.0174, 43.5528 ]
}
}
}
});
我从这里获取区域详细信息:https://gadm.org/download_country_v3.html → format KMZ (level1). We can simplify regions paths with QGIS(菜单:矢量 → 几何工具 → 简化...)。然后将它们导出到 geoJSON 文件。
我让用户填写一份表格,说明他们居住的城市。为了简化我使用 Mapbox 地理编码 API 的过程:用户开始填写他所在城市的名称,API 提示结果。
用户 select 是一个结果,我将数据存储在我的数据库中,格式如下:
{
"city": "Paris",
"region": "TX, //Texas
"country": "US"
}
我有按地区划分的国家 svg 地图。
<svg>
<g>
<path id="US-AK" title="Alaska" d="..." />
<path id="US-TX" title="Texas" d="..." />
...
</g>
</svg>
现在我可以从数据库中 select 居住在德克萨斯州的所有用户,并在 svg 地图上显示信息(居住在该地区的用户数量)。
问题是 API 并不总是在响应中给我区域信息。
例如 Paris, France
我已经测试了 6 different API 但他们给我的有关区域的数据并不一致。有时 APIs 不包含任何有关区域的信息。有时候信息是错误的。
我只看到一个解决方案:存储有关区域的所有数据(不同语言的代码和名称)并让用户自己 select 他们的国家区域。 但也许您看到了另一个更简单的解决方案?
我们找到了不同的解决方案。我们在 MongoDB 中以 geoJSON
格式存储区域的形状。对于 API 返回的每个地址,我们都有 GPS 坐标。所以我们总能找到一个地区的代码。
// Insert regions to DB
db.getCollection('region').insert({
"code": "FR-IDF",
"polygons": {
"type":"MultiPolygon",
"coordinates": <multi polygon shape>
}
});
// Find regions by gps coordinates
db.getCollection('region').find({
"polygons": {
$geoIntersects: {
$geometry:{
"type":"Point",
"coordinates" : [ 7.0174, 43.5528 ]
}
}
}
});
我从这里获取区域详细信息:https://gadm.org/download_country_v3.html → format KMZ (level1). We can simplify regions paths with QGIS(菜单:矢量 → 几何工具 → 简化...)。然后将它们导出到 geoJSON 文件。