无法从使用位置的谷歌地图获取地点

时间:2011-08-02 15:25:02

标签: android google-maps geolocation

我尝试使用google地图(例如:地点,国家/地区,邮政编码) 纬度和经度。以下是获取空数据的代码:

修改

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 个答案:

答案 0 :(得分:4)

我认为问题出在方法的参数上。我猜位置 GeoPoint 在这种情况下,而不是

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

试试这个:

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

因为地理位置中的坐标以微度表示

修改 我复制了你的代码并试了一下。假设您的“位置”对象是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中没有任何错误,问题只是没有显示任何内容,那就是问题:没有网络

答案 1 :(得分:0)

您在manifest.xml中有<uses-permission android:name="android.permission.INTERNET" />吗?