Android:当我通过不同的位置时,Geocoder总是返回我当前的地址

时间:2015-03-12 05:48:28

标签: android google-maps google-geocoder

我正在尝试从Google地图中获取用户所选位置的地址。获取地址我正在使用GeoCoder。

        geoCoder.getFromLocation(location)

即使位置发生变化,也始终返回我当前的位置地址。

注意:我在onLocationChange()

上调用此方法

更新

但是对于相同的位置,当我从GoogleMaps.OnLongClickListener发送位置时,它可以正常工作。它不仅适用于LocationListener.onLocationChanged。

2 个答案:

答案 0 :(得分:0)

使用以下方法获取地理位置的地址 -

public static String reverseGeoCoder(Context mContext,double lat,double longi){
    try{
        Geocoder geoCoder = new Geocoder(mContext);
        List<Address> matches = geoCoder.getFromLocation(lat, longi, 1);
        Address bestMatch = (matches.isEmpty() ? null : matches.get(0));
        String address = bestMatch.getAddressLine(0)+" "+bestMatch.getAddressLine(1);
        return address;
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return "";
}

答案 1 :(得分:0)

尝试以下代码。问题可能在于您如何使用LocationListener。

LocationManger lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 100, new LocationListener() {
    @Override
        public void onLocationChanged(Location location) {
            StringBuilder result = new StringBuilder();
    try {
        Geocoder geocoder = new Geocoder(this, Locale.getDefault());
        List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
        if (addresses.size() > 0) {
            Address address = addresses.get(0);
            result.append(address.getLocality()).append("\n");
            result.append(address.getCountryName());
        }
     }catch (IOException e) {
        Log.e("tag", e.getMessage());
    }

    }
    }