невозможно получить место с карты Google, используя местоположение - PullRequest
1 голос
/ 02 августа 2011

Я пытаюсь получить место (например: населенный пункт, страна, почтовый индекс) с помощью карты Google, используя широта и долгота. Ниже приведен мой код, который получил нулевые данные:

Edit:

public void onLocationChanged(Location location) {

    geocoder = new Geocoder(this, Locale.getDefault());

    if (location != null) {

        try {
            addresses = geocoder.getFromLocation(location.getLatitude()/1E6,
                    location.getLongitude()/1E6, 1);
            if (addresses.size() > 0) {
                resultAddress = addresses.get(0);

                locality = resultAddress.getLocality();
                sublocality = resultAddress.getSubLocality();
                postalcode = resultAddress.getPostalCode();
                country = resultAddress.getCountryName();
                adminarea = resultAddress.getSubAdminArea();

            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

Я пытался назначить широту и долготу вручную, но ничего не получил.

Кто-нибудь может исправить мои ошибки? Спасибо

Ответы [ 2 ]

4 голосов
/ 02 августа 2011

Я думаю, что проблема в параметрах метода. Я предполагаю, что location - это GeoPoint В этом случае вместо

addresses = geocoder.getFromLocation(location.getLatitude(),
                    location.getLongitude(), 1);

попробуйте это:

addresses = geocoder.getFromLocation(location.getLatitude()/1E6,
                    location.getLongitude()/1E6, 1);

потому что координаты в геопункте представлены в микродеградах

Редактировать Я скопировал твой код и попробовал его. Предполагая, что ваш объект "location" является GeoPoint, код, который работает следующим образом:

GeoPoint location = new GeoPoint(lat, lon);
    if (location != null) {
        Geocoder geocoder = new Geocoder(this, Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(location.getLatitudeE6()/1E6,
                    location.getLongitudeE6()/1E6, 1);
            if (addresses.size() > 0) {
                Address resultAddress = addresses.get(0);

                String locality = resultAddress.getLocality();
                String sublocality = resultAddress.getSubLocality();
                String postalcode = resultAddress.getPostalCode();
                String country = resultAddress.getCountryName();
                String adminarea = resultAddress.getSubAdminArea();

            }

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

однако, если вы тестируете его на эмуляторе, убедитесь, что у вас есть интернет-соединение. В противном случае метод getFromLocation не сможет найти адрес и ничего не отобразит. Если у вас нет ошибок в logcat, и проблема только в том, что ничего не отображается, это проблема: нет сети .

0 голосов
/ 02 августа 2011

У вас есть <uses-permission android:name="android.permission.INTERNET" /> в manifest.xml?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...