代码之家  ›  专栏  ›  技术社区  ›  Whats Going On

Android在服务中使用地理编码器获取位置地址

  •  0
  • Whats Going On  · 技术社区  · 6 年前

    我跟着 this 获取位置坐标和地址

    所以这里每10秒更新一次位置坐标纬度和经度

    我正试图找到他们的地址

    这里是我使用的地址 Const

    public class Const {
    
    public static String getCompleteAddressString(Context m_context, double LATITUDE, double LONGITUDE) {
        String strAdd = "";
        Geocoder geocoder = new Geocoder(m_context, Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);
            if (addresses != null) {
                Address returnedAddress = addresses.get(0);
                StringBuilder strReturnedAddress = new StringBuilder("");
    
                for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) {
                    strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
                }
                strAdd = strReturnedAddress.toString();
                Log.v("My Current location add", "" + strAdd.toString());
            }
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(m_context, "Sorry, Your location cannot be retrieved !" + e.getMessage(), Toast.LENGTH_SHORT).show();
    
        }
        return strAdd;
    }
    }
    

    现在在 Main Activity 获取我使用的地址

    private void updateUI() {
    mLatitudeTextView.setText(String.format("%s: %f", mLatitudeLabel,
            mCurrentLocation.getLatitude()));
    mLongitudeTextView.setText(String.format("%s: %f", mLongitudeLabel,
            mCurrentLocation.getLongitude()));
    mLastUpdateTimeTextView.setText(String.format("%s: %s", mLastUpdateTimeLabel,
            mLastUpdateTime));
    
    //For Address
    
    mLocAddTextView.setText(String.format("%s: %s", mLocAddressLabel,
    Const.getCompleteAddressString(this, mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude())));
     }
    

    但在这里它的显示没有人能告诉我这有什么错

    1 回复  |  直到 6 年前
        1
  •  1
  •   Don't Be negative    6 年前

    你的代码很完美

    在你的 Const class

    strReturnedAddress .append(returnedAddress.getAddressLine(0)).append("\n");
    

    如果您想使用邮政编码、地区和国家。。等使用

    List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);
    if (addresses != null) {
        Address returnedAddress = addresses.get(0);
        StringBuilder strReturnedAddress = new StringBuilder("");
        for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) {
                      strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n");
        }
            strReturnedAddress .append(returnedAddress.getAddressLine(0)).append("\n");
            strReturnedAddress .append(returnedAddress.getLocality()).append("\n");
            strReturnedAddress .append(returnedAddress.getPostalCode()).append("\n");
            strReturnedAddress .append(returnedAddress.getCountryName());
        strAdd  = strReturnedAddress.toString();
        Log.v("My Current location add", "" + streturnedAddressd.toString());
    }
    

    要获取地理编码器地址,请执行以下操作 Android GeoCode Location