我正在接受一个用户输入,该输入应该是一个地理位置。我想验证用户输入的内容是否描述了一个位置——例如,邮政编码、机场编码、街道地址、城市名称等。
显而易见的答案是使用Google Geocode API来请求用户的输入,看看我是否得到了任何结果。)然而,地理编码ToS禁止这样做:
地理编码API只能与谷歌地图结合使用;禁止在地图上不显示地理编码结果。
有人知道其他选择吗?
雅虎还有一个地理定位API,它有一个不太严格的TOS。通过查询一个位置,如果您收到一个非null
的结果集,那么您就知道它是一个有效的位置。
# A query for New York...
http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%20geo.places%20where%20text='New+York'&format=json
# Results in a response
{"query":{"count":10,"created":"2013-01-11T18:40:32Z","lang":"en-US","results":{"place":[... places ... ] }}}
而
# A query for junk
http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%20geo.places%20where%20text='kqpo234xk'&format=json
# Results in null
{"query":{"count":0,"created":"2013-01-11T18:39:21Z","lang":"en-US","results":null}}