从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON
Posted
技术标签:
【中文标题】从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON【英文标题】:Building a JSON from a database query of country, state, city and each cities latitude/longitude 【发布时间】:2020-05-16 22:04:00 【问题描述】:我有一张表格,上面有国家、州、城市、城市的纬度/经度。我正在尝试构建一个 json 字符串,如下所示。
"country": "usa",
"states": [
"name": "Alabama",
"state_code": "AL",
"cities": [
"name": "Abbeville",
"latitude": "31.57184000",
"longitude": "-85.25049000"
,
"name": "Adamsville",
"latitude": "33.60094000",
"longitude": "-86.95611000"
]
,
"name": "Alaska",
"state_code": "AK",
"cities": [
"name": "Akutan",
"latitude": "54.13350000",
"longitude": "-165.77686000"
,
"name": "Aleutians East Borough",
"latitude": "54.85000000",
"longitude": "-163.41667000"
]
]
数据库查询结果在一个数组中:jsonData。我有那个国家的代码。不知道如何添加一个不存在的州和一个城市,如果它不存在,城市的纬度和经度(我有的部分???)
let jsonData1 = [];
for (let item of jsonData)
if(countryExists(jsonData1, item['COUNTRY']))
??
else
jsonData1.push( country: item['COUNTRY']);
function countryExists (JSON, country)
var hasMatch = false;
for (var index = 0; index < JSON.length; ++index)
var item = JSON[index];
if(item.country === country)
hasMatch = true;
break;
return hasMatch;
【问题讨论】:
【参考方案1】:假设您想坚持使用您选择的架构,您可以在添加没有州的国家/地区时,将州名的值设置为默认值,例如none
,您也可以对 latitude
和 longitude
执行相同的操作。
但是,我建议您重新考虑数据架构。
【讨论】:
我希望它采用在另一个应用程序中使用循环更易于阅读的格式。这就是我选择该架构的原因。你建议什么架构? @RaviM 问题在于您的架构是cities
在 states
内,而世界上大多数国家/地区都没有州......
谢谢。正如你所建议的,如果有没有国家的国家,我可以添加一个名为 none 的国家。我仍然需要帮助来弄清楚如何在添加之前检查一个国家/地区内是否存在一个州,以及在添加之前如何检查一个国家/州内是否存在一个城市。我尝试了一些组合,但似乎无法使其发挥作用。以上是关于从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON的主要内容,如果未能解决你的问题,请参考以下文章
在谷歌地图 api v3 中将地区、城市、州、国家/地区转换为纬度和经度?