精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
2009-10-26 00:00:00 来源:WEB开发网如果机场数据集不稳定,并且太大不便本地存储,或者不能单独下载,那么我会更倾向于远程地请求它。您在 “Grails 服务和 Google 地图” 中用过的 geonames.org geocoding 服务提供 JSON 输出和 XML。在 Web 浏览器中输入 http://ws.geonames.org/search?name_equals=den&fcode=airp&style=full&type=json。应该可以看到清单 13 所示的 JSON 结果:
清单 13. 从 GeoNames 返回的 JSON 结果
{"totalResultsCount":1,
"geonames":[
{"alternateNames":[
{"name":"DEN","lang":"iata"},
{"name":"KDEN","lang":"icao"}],
"adminCode2":"031",
"countryName":"United States",
"adminCode1":"CO",
"fclName":"spot, building, farm",
"elevation":1655,
"countryCode":"US",
"lng":-104.6674674,
"adminName2":"Denver County",
"adminName3":"",
"fcodeName":"airport",
"adminName4":"",
"timezone":{
"dstOffset":-6,
"gmtOffset":-7,
"timeZoneId":"America/Denver"},
"fcl":"S",
"name":"Denver International Airport",
"fcode":"AIRP",
"geonameId":5419401,
"lat":39.8583188,
"population":0,
"adminName1":"Colorado"}]
}
可以看到,GeoNames 服务比您在 “Grails 与遗留数据库” 中导入的 USGS 提供更多关于机场的信息。如果出现新的用户需求,例如需要知道机场的时区或海拔高度,GeoNames 还可以提供另一种令人感兴趣的结果。它还包括像 London Heathrow(LHR)和 Frankfort(FRA)这样的国际机场。您可以将 AirportMapping.iata() 转换为使用 GeoNames,这是一个课外练习。
更多精彩
赞助商链接