gpt4 book ai didi

iOS 开发 - 将城市与 NSTimezone 离线关联

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:31 25 4
gpt4 key购买 nike

希望你一切顺利。

所以我正在开发时区 iOS 应用程序。该应用程序要求我们有一个人口稠密的城市列表,并且当用户选择一个时,它会确定构建 NSTimeZone 对象(然后我们将其用于 NSDate 转换)所需的 Olson Timezone ID。

我已经能够获得城市列表及其相应的纬度和经度,我计划将其输入 Geoname 的时区服务端点,以确定每个城市的上述 Olson 时区 ID。

问题是我需要发出的请求量很大,我想知道是否有更简单的解决方案来解决我的问题。任何建议/想法将不胜感激。

谢谢大家!

最佳答案

对于遇到同样问题的人,以下是我最终解决问题的方法。

我从 Geonames.org 下载了一个制表符分隔的列表,其中包含一个城市列表,其中还包含每个城市的奥尔森时区 ID。您可以从 Geoname 的导出转储链接(见下文)下载几个不同的列表,但我选择了 cities5000.zip 列表,以便获得一个相当全面的城市列表而不至于过于臃肿。

您可以在以下链接中找到有关列表的下载链接和信息: http://download.geonames.org/export/dump/readme.txt

因为列表包含了很多不必要的信息(比如lat和lng坐标),并且因为我需要数据为.plist格式以便于在iOS应用程序中使用,所以我写了一个简单的Python脚本将从列表中提取城市名称和时区,根据城市名称按字母顺序对它们进行排序,然后转换为 .plist 格式。

感兴趣的 friend ,python脚本如下:

import json
import httplib
import os

cities = ()
rows = []
# Open up the tab delim list from Geonames.org
with open("cities15000.txt") as file:
lines = file.readlines()

# Reading each line in the list
for line in lines:
comps = line.split('\t')
city = comps[1].strip()
timezone = comps[17].strip()

# Make sure there are no duplicates
if not city in cities:
cities = cities + (city,)
row = {'city':city,'timezone':timezone}
rows = rows + [row,]

# Sort the rows based on the city name
def cmp(a,b):
if a['city'] > b['city']:
return 1
elif a['city'] == b['city']:
return 0
else:
return -1
rows.sort(cmp)


# Convert the array to json and then to plist
jsonString = json.dumps(rows)

with open("cities.json", "w") as jsonFile:
jsonFile.write(jsonString)
os.system('plutil -convert xml1 cities.json -o cities.plist')

关于iOS 开发 - 将城市与 NSTimezone 离线关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com