天气应用程序的位置的位置名称

时间:2014-01-11 21:21:10

标签: java android geolocation google-geocoder

我想建立一个天气应用程序,我有一些问题。 我的大问题是地名!你知道,我希望那个用户用两种方式找到他的位置。用GPS和搜索。但我的问题是地名。怎么能从世界各地找到一个数据库?!

我将它们存储在服务器的数据库中是个好主意吗?或者有一些提供此功能的服务?如果我必须创建自己的数据库,我如何创建这样的数据库。是否有一个包含城市名称和纬度/经度等信息的数据库?如果新位置创建了我如何将其添加到系统?用手?

第二个问题是,在抓住城市名称之后我怎么能找到纬度/经度的位置?似乎谷歌有一个Geocoder服务,但我不知道它是如何工作的。请帮我。我只想选择一个城市名称并找到相关的坐标......

3 个答案:

答案 0 :(得分:0)

您可以使用Google Maps Geocoding API。查询坐标将返回一个JSON响应,其中包含您可以解析的多个详细级别中的当前位置。

E.g。对于位置lat:40.714224 long:-73.961452,查询URL如下所示:

  

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false

结果现在包含城市和国家,以及更多。

您可以在此处找到有关API的更多信息:https://developers.google.com/maps/documentation/geocoding/

答案 1 :(得分:0)

您也可以尝试http://openweathermap.org/

我没有广泛使用它,但我尝试了足够的,我知道它的工作原理。它允许您按位置名称或地理坐标进行查询,城市名称包含在响应中以及大量其他数据中。

http://api.openweathermap.org/data/2.5/weather?lat=xx&lon=xx返回一个城市名称为&的天气对象。相关数据。 API密钥甚至是可选的,因此您可以非常快速地尝试。

答案 2 :(得分:0)

Google Maps API为您提供地理编码,可让您将“Santiago,Chile”或“New York”等字符串转换为适当的纬度/经度坐标。因此,在您的代码中,您应该对这样的URL执行HTTP GET请求:

http://maps.googleapis.com/maps/api/geocode/json?address=Santiago,+Chile&sensor=true

它返回一个JSON对象,其中包含格式正确的地址以及您正在查找的地方的纬度和经度信息。

the Google Maps API Geocoder documentation中对此进行了详细解释,所以你应该看一下。我不是Android开发专家,但应该有一些库可以让您轻松访问Maps API提供的内容。

Maps API还为您提供地方搜索解决方案,甚至输入自动完成功能,但我看到的所有示例都是基于JavaScript / HTML的,所以我不能完全确定是否有替代方案在普通的Java / Android中,您正在尝试做什么。不过,你应该看一下basic place searchingplace search autocompletion,这样你就可以大致了解它是如何工作的。

an entire section in the Google Developers website dedicated to the Maps API on Android,所以请务必仔细查看,以及您可能会发现更多有用的信息 - 遗憾的是我没有使用任何Android的经验,因此我无法向您指出任何方向。

祝你好运!