精通Grails: Grails服务和Google地图 - 编程入门网
tent.text
def geonames = new XmlSlurper().parseText(xml)
result.name = geonames.geoname.name as String
result.lat = geonames.geoname.lat as String
result.lng = geonames.geoname.lng as String
result.state = geonames.geoname.adminCode1 as String
result.country = geonames.geoname.countryCode as String
}
else{
log.error("GeocoderService.geocodeAirport FAILED")
log.error(url)
log.error(connection.responseCode)
log.error(connection.responseMessage)
}
return result
}
}
geocodeAirport 方法的第一部分构建 URL 并进行连接。查询字符串元素先集中在一个 ArrayList 里 ,然后和一个 & 符号连接起来。方法的最后部分使用 Groovy XmlSlurper 解析 XML 结果并将结果 存储在 hashmap 里。 精通Grails: Grails服务和Google地图(3)时间:2011-07-29 IBM Scott DavisGroovy 服务不可以直接从 URL 访问。如果您想在 Web 浏览器中测试这个新的服务方法,请将一个简 单的闭包添加到 AirportController,如清单 4 所示: 清单 4. 在控制器中向服务提供一个 URL
如果您定义一个与服务同名的成员变量,Spring 会自动地将服务注入控制器(要想让这种方法奏效, 您必须把服务名的第一个字母由大写改为小写,使它遵循 Java 风格的变量命名约定)。 要测试服务,请在 Web 浏览器中输入 URL http://localhost:9090/trip/airport/geocode?iata=den 。您将看到如清单 5 所示的结果: 清单 5. 地理编码器请求的结果
AirportController 中的 geocode 闭包只是用于对服务进行检查。因此,可以把它删除,或者保留下 来供以后的 Ajax 调用使用。下一步是重新构造 Airport 基础设施,以利用这个新的地理编码服务。 加入服务 首先,把新的 lat 和 lng 字段添加到 grails-app/domain/Airport.groovy,如清单 6 所示: 清单 6. 把 lat 和 lng 字段添加到 Airport POGO
精通Grails: Grails服务和Google地图(4)时间:2011-07-29 IBM Scott Davis在命令提示处输入 grails generate-views Airport 来创建 GSP 文件。借助 AirportController.groovy 的 def scaffold = Airport 行,从运行时开始就一直在动态搭建 GSP 文件 。要想对这个视图进行更改,我必须先处理代码。 创建新的 Airport 时,我将把用户可编辑字段限制为 iata 和 city。要想让地理编码查询能够工作 ,必须具备 iata 字段。我没有更改 city,因为我喜欢由自己来提供这个信息。DEN 真的就在丹佛 (Denver),但 ORD(Chicago O''Hare)却在伊里诺斯州的罗斯蒙特(Rosemont) |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |