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

时间:2011-02-17 12:18:50

标签: android gps location reverse-geocoding

我不需要显示地图。但是,我需要使用gps / 3g网络来定位我当前的位置ADDRESS(不长和纬度)然后将其添加到自动短信响应中以通知一个人我当前无法回复,&包括我当前位置的字符串地址。 我有短信的工作,只需要弄清楚访问gps和拉地址的方法。我见过lat / long的示例代码。也许我需要将lat / long转换为google maps API中的地址?我不确定如何去做。 任何建议/代码片段/类似的教程欢迎! 谢谢。 :)

3 个答案:

答案 0 :(得分:25)

这有两个步骤:

  1. 获取当前位置 - 纬度&经度,使用GPS,网络,最后知道的位置等.Android location documentation包含示例代码。

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

  3. 注意:

    • getFromLocation()方法返回一组匹配项。在某些情况下,您可以向用户显示一组(比如5)并让他们选择最好的一组,或者您可以使用第一个,假设它是最好的。
    • 请记住,这两个电话都需要时间。 GPS /网络可能需要一段时间才能提供位置。同样,调用getFromLocation()可能需要一些时间,因为它通过网络传输到Google Maps API。因此,对各种场景使用广泛的错误处理并将这些调用移动到单独的线程上以便不锁定应用程序用户界面(查看AsyncTask)至关重要
    • Geocoder类后端仅出现在Google认可的设备上。因此,任何没有GMail / Market / Maps的设备上的查找基本上都会失败。

答案 1 :(得分:14)

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

您需要创建Geocoder对象并调用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();
}

答案 2 :(得分:0)

如您所知获取位置地址,您可以使用Google GeoCoder

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

API网址 -

  

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

您可以在网址上连接等号旁边的纬度和经度值。

示例 -

lat = 6.123456

lng = 79.123456

String url =

  

&#34; https://maps.googleapis.com/maps/api/geocode/json?latlng=lat+&#34;&#34 + LNG&#34 ;;

这将返回一个漂亮的 jsonObject ,你可以玩它,只是试试这个。目前我使用这个API为我的位置服务,它比正常的谷歌更快geoCoder API。要捕获json响应,您可以使用排球或任何其他。快乐编码。