使用 Groovy 构建社交网络混搭(Mashup)应用程序
2009-12-24 00:00:00 来源:WEB开发网因此,我可以编写一项服务,它获取 Twitter 提供的位置字符串并返回坐标。这项服务有一点复杂,因为 Twitter 帐户的位置是可选的。也就是说,用户不一定会提供它,并且 Twitter 不会尝试验证它。因此,即使帐户确实提供了一个 String 值,它也可能是无效的,或者 Google 可能会为它返回多个坐标集。此外,一些用户使用特殊的应用程序(如手机上的 Twitter 客户端),这些应用程序使用实际的坐标频繁更新用户的位置。因此,GoogleMapsService 在返回坐标之前要做一些清理工作,如清单 12 所示:
清单 12. 使用 Google 的地理编码服务package org.disco.geotweet.service
public class GoogleMapsService {
private static String KEY = "YOUR_KEY"
def getLocationCoordinates(location) {
if (location.contains("iPhone:")) {
//iPhone: 39.035248,-77.138687
def iloc = location.replace("iPhone: ", "")
def scoords = iloc.split(",")
return [latitude: scoords[0], longitude: scoords[1]]
} else {
def encdLoc = URLEncoder.encode(location)
def response =
"http://maps.google.com/maps/geo?" +
"q=${encdLoc}&output=xml&key=${KEY}".toURL().getText()
def root = new XmlSlurper().parseText(response)
if (root.Response.Placemark.size() == 1) {
def coords = root.Response.Placemark.Point.coordinates.text()
def scoords = coords.split(",")
if (scoords.size() > 1) {
return [latitude: scoords[1], longitude: scoords[0]]
} else {
return [:]
}
} else {
return [:]
}
}
}
}
更多精彩
赞助商链接