Получить адрес текущего местоположения для приложения Android - PullRequest
17 голосов
/ 17 февраля 2011

Мне не нужно отображать карту. Тем не менее, мне нужно использовать сеть gps / 3g, чтобы определить местонахождение моих текущих позиций. АДРЕС (не длинный и лат), который затем будет добавлен к автоматическому ответу смс, чтобы сообщить человеку, что я в настоящее время не могу ответить, и включить адрес строки мое текущее местоположение. У меня работает смс, просто нужно выяснить способ доступа к gps и получения адреса. Я видел пример кода для lat / long. Возможно, мне нужно конвертировать lat / long в адрес в API карт Google? Я не уверен, как это сделать. Любые советы / фрагменты кода / похожие уроки приветствуются! Благодарю. :)

Ответы [ 3 ]

25 голосов
/ 17 февраля 2011

Для этого есть два шага:

  1. Получить текущее местоположение - широту и долготу, используя GPS, сеть, последнее известное местоположение и т. Д. Документация Android включает пример кода.

  2. Используйте класс Android Geocoder , чтобы запросить поиск, чтобы преобразовать широту / долготу в адрес (из которого можно легко извлечь город, страну, улицу и т. Д.). В частности, вам нужно использовать метод getFromLocation ()

Примечание:

  • Метод getFromLocation () возвращает набор совпадений. В некоторых сценариях вы можете показать пользователю набор (скажем, 5) и позволить ему выбрать лучший, или вы можете просто использовать первый, предполагая, что он лучший.
  • Помните, что оба этих вызова могут занять время. GPS / сеть может занять некоторое время, чтобы определить местоположение. Аналогично, вызов getFromLocation () может занять некоторое время, поскольку он передается по сети в API Карт Google. Поэтому очень важно, чтобы вы использовали расширенную обработку ошибок для различных сценариев И чтобы оба этих вызова были перемещены в отдельный поток, чтобы не блокировать пользовательский интерфейс приложения (см. AsyncTask)
  • Бэкэнд класса Geocoder присутствует только на одобренных Google устройствах. Таким образом, поиск в основном завершится неудачей на любом устройстве, на котором нет GMail / Market / Maps.
14 голосов
/ 17 февраля 2011

Ответ здесь: http://developer.android.com/reference/android/location/Geocoder.html

Вам нужно создать объект геокодера и вызвать 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();
}
0 голосов
/ 21 августа 2017

Как вы знаете, для получения адреса местоположения вы можете использовать google GeoCoder

, кроме того, чтобы получить адреса местоположения, указав широту и долготу, вы можете использовать этот API. Это надежно и быстреечем Google Geocoder. Здесь я прилагаю ссылку и небольшой пример ...

URL-адрес API -

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

вы можете объединить широту изначение долготы рядом со знаком равенства в URL.

пример -

широта = 6.123456

lng = 79.123456

Строка url =

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

это будет возвращать хороший jsonObject и вы можете играть с ним, просто попробуйте это. В настоящее время я использую этоAPI для моих служб определения местоположения и его более быстрый, чем обычный API Google GeoCoder. Чтобы поймать ответ json, вы можете использовать volley или что угодно. Счастливое кодирование.

...