Получить широту и долготу на основе города, почтового индекса или названия улицы - PullRequest
3 голосов
/ 21 января 2011

В моем текущем приложении для Android я хотел бы получить геоординаты на основе введенного названия города, названия улицы или почтового индекса.Как мне это сделать?

С наилучшими пожеланиями, Рони

Ответы [ 4 ]

6 голосов
/ 21 января 2011

Проверьте метод Geocoder.getFromLocationName(cityName, maxResults).

Используйте его так:

List<Address> addressList = geoCoder.getFromLocationName(cityName, 1);
Address address = addressList.get(0);
if(address.hasLatitude() && address.hasLongitude()){
    double selectedLat = address.getLatitude();
    double selectedLng = address.getLongitude();
}
5 голосов
/ 21 января 2011

Привет, попробуйте следующий код, чтобы получить точку геокодирования с данного адреса.

List<Address> foundGeocode = null;
/* find the addresses  by using getFromLocationName() method with the given address*/
foundGeocode = new Geocoder(this).getFromLocationName("address here", 1);
 foundGeocode.get(0).getLatitude(); //getting latitude
 foundGeocode.get(0).getLongitude();//getting longitude
1 голос
/ 21 января 2011

Привет,

Есть очень хороший сайт под названием World Gazetteer, который содержит необходимые данные в аккуратном загружаемом файле (по названию города)

http://www.world -gazetteer.com / home.htm

На главной странице нажмите на ссылку, которая говорит:

другая статистика ..... различные статистические данные: таблицы,карты и загружаемые данные

и со страницы, которая появляется, нажмите на ссылку, которая говорит:

popdata (1,4 МБ)

Распакуйте файл, и вы получите его!

База данных - это бесплатная основная база данных городов мира, которая включает данные о широте, долготе и населении ... и т. Д.

Получено из: http://answers.google.com/answers/threadview?id=432778

0 голосов
/ 01 июня 2013

Попробуйте это.

Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault());
try {
    List<Address> addresses = geoCoder.getFromLocation(latitude , longitude, 1);

    String strCompleteAddress= "";
    //if (addresses.size() > 0)
    //{
        for (int i=0; i<addresses.get(0).getMaxAddressLineIndex();i++)
            strCompleteAddress+= addresses.get(0).getAddressLine(i) + "\n";
    // }
    Log.i("MyLocTAG => ", strCompleteAddress);
    Toast.makeText(getBaseContext(), strCompleteAddress, Toast.LENGTH_LONG).show();
}
catch (IOException e) {
    Log.i("MyLocTAG => ", "this is the exception part");
    e.printStackTrace();
}
...