Java 如何使用Geocoder获取当前位置的邮政编码

Java 如何使用Geocoder获取当前位置的邮政编码,java,android,Java,Android,我正在尝试获取用户当前位置的邮政编码。我在MyActivity中有一个teditText,它应该根据我从该活动中获取的邮政编码填充 public class LocationActivity extends MyActivity { double LATITUDE; double LONGITUDE; Geocoder geocoder = new Geocoder(this, Locale.ENGLISH); { try {

我正在尝试获取用户当前位置的邮政编码。我在MyActivity中有一个teditText,它应该根据我从该活动中获取的邮政编码填充

public class LocationActivity extends MyActivity {
    double LATITUDE;
    double LONGITUDE;

    Geocoder geocoder = new Geocoder(this, Locale.ENGLISH); 
    {
        try {
            List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);

            if(addresses != null) {
                Address returnedZip = addresses.get(0);
                StringBuilder currentZip = new StringBuilder("Address:\n");
                for(int i=0; i<returnedZip.getMaxAddressLineIndex(); i++) {
                    strcurrentZip.append(returnedZip.getPostalCode());
                }
                m_zip.setText(strcurrentZip.toString());
            }
            else {
                m_zip.setText("No zip returned!");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            m_zip.setText("zip not found!");
        }
    }
}
我没有收到任何响应,应用程序日志猫没有显示任何错误,但我要填充的editText字段仍然为空。

此处

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//GeocodeResponse/result/address_component[type=\"postal_code\"]/long_name/text()";
InputSource inputSource = new InputSource("https://maps.googleapis.com/maps/api/geocode/xml?latlng="+VARIABLECONTAININGLATITUDE+","+VARIABLECONTAININGLONGITUDE+"&sensor=true");
String zipcode = (String) xpath.evaluate(expression, inputSource, XPathConstants.STRING);
其中VARIABLECONTAININGLATITUDE和VariableContainingLength是来自GPS或您选择的任何位置提供商的纬度和经度

此外,您还需要在清单中具有internet权限和在清单中具有位置权限

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//GeocodeResponse/result/address_component[type=\"postal_code\"]/long_name/text()";
InputSource inputSource = new InputSource("https://maps.googleapis.com/maps/api/geocode/xml?latlng="+VARIABLECONTAININGLATITUDE+","+VARIABLECONTAININGLONGITUDE+"&sensor=true");
String zipcode = (String) xpath.evaluate(expression, inputSource, XPathConstants.STRING);
其中VARIABLECONTAININGLATITUDE和VariableContainingLength是来自GPS或您选择的任何位置提供商的纬度和经度


此外,您还需要清单中的互联网权限和清单中的位置权限

请写下获取邮政编码的代码

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(currentlat, currentlng, 1); 

现在,地址列表包含最近的已知区域。Address对象具有getPostalCode函数。抓取第一个物体并找到它的邮政编码。

请写下获取邮政编码的代码

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(currentlat, currentlng, 1); 

现在,地址列表包含最近的已知区域。Address对象具有getPostalCode函数。抓取第一个对象并找到它的邮政编码。

你忘了提到你的问题是什么以及你经历了什么。我打赌地址是空的,你的GPS或网络提供商最近获得了一个位置吗?我想知道的一件事是,在你实例化Geocoder之后,你有一个{你在尝试/捕获后立即结束它,真的有必要这样确定它的范围吗?还是你犯了一个错误;就在新的地理编码器之后,所以它是实例化的一部分?你忘了提到你的问题是什么和你经历了什么。我打赌地址是空的,你的GPS或网络提供商最近获得了一个位置吗?一件事我想知道的是,在你实例化Geocoder之后,你有一个{并且在你的try/catch之后就结束了它,真的有必要这样定义它吗?或者你是不是犯了一个错误;就在新的Geocoder之后,所以它是实例化的一部分?