获取Android应用程序的当前位置地址

我不需要显示地图。 但是,我需要使用GPS / 3Gnetworking来定位我目前的位置ADDRESS(不长和纬度),这将被添加到一个自动SMS响应通知一个人,我目前不能答复,包括string地址我目前的位置。 我有短信的东西工作,只需要找出一个访问GPS和拉地址的方法。 我看过经纬度的示例代码。 也许我需要将lat / long转换为google maps API中的地址? 我不确定如何去做。 任何build议/代码片段/类似的教程欢迎! 谢谢。 🙂

Solutions Collecting From Web of "获取Android应用程序的当前位置地址"

有两个步骤:

  1. 获取当前的位置 – 经度和纬度,使用GPS,networking,最新的已知位置等。Android 位置文档包含示例代码。

  2. 使用Android 地理编码器类来请求查找将经纬度转换为地址(您可以轻松地从中提取城市,国家,街道等)。 具体来说,您需要使用getFromLocation()方法

注意:

  • getFromLocation()方法返回一组匹配项。 在某些情况下,您可以向用户显示一组(例如5),让他们select最好的一个,或者只要使用第一个,假设它是最好的。
  • 请记住,这两个电话都需要时间。 GPS /networking可能需要一段时间才能提供位置。 同样,调用getFromLocation()可能需要一些时间,因为它会通过networking传递到Google Maps API。 因此,对各种场景使用广泛的error handling至关重要,并且这两个调用都被移到一个单独的线程中,因此您不会locking应用程序用户界面(查看AsyncTask)
  • Geocoder类的后端只存在于Google批准的设备上。 因此,在任何没有GMail / Market / Maps的设备上,查找基本上都会失败。

答案在这里: http : //developer.android.com/reference/android/location/Geocoder.html

您需要创buildGeocoder对象并调用getFromLocation(double latitude, double longitude, int maxResults)

 Geocoder gCoder = new Geocoder(myContext); ArrayList<Address> addresses = gCoder.getFromLocation(123456789, 123456789, 1); if (addresses != null && addresses.size() > 0) { Toast.makeText(myContext, "country: " + addresses.get(0).getCountryName(), Toast.LENGTH_LONG).show(); } 

正如你知道的获取位置地址,你可以使用谷歌地理编码器

除此之外,通过提供经纬度来获取位置地址,您可以使用这个API。这是可靠的,比谷歌Geocoder更快。在此我附上链接和小例子…

APIurl –

https://maps.googleapis.com/maps/api/geocode/json?latlng=

您可以在url处将等号旁边的纬度和经度值连接起来。

例如 –

lat = 6.123456

lng = 79.123456

stringurl =

https://maps.googleapis.com/maps/api/geocode/json?latlng=lat+”,“+ lng”;

这将返回一个不错的jsonObject ,你可以玩它,只是试试这个。目前即时通讯使用这个API我的位置服务和它比正常谷歌geoCoder API更快。要赶上json响应,你可以使用凌空或任何东西。快乐的编码。