我试图找出Android应用程序中的纬度和经度。我使用的代码如下: -
protected int findZipCode() {
LocationManager lm = (LocationManager) getApplicationContext()
.getSystemService(Context.LOCATION_SERVICE);
LocationListener listener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,
1000, listener);
if (zipCode == null) {
return 0;
} else {
return Integer.parseInt(zipCode);
}
}
private class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location != null) {
Geocoder geo = new Geocoder(getApplicationContext());
List<Address> addr = null;
try {
addr = geo.getFromLocation(location.getLatitude(),
location.getLatitude(), 5);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
zipCode = addr.get(0).getPostalCode();
}
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
但是这段代码似乎总是为zipcode返回一个空值。任何帮助都会很棒。
提前致谢!!
答案 0 :(得分:0)
当您的MyLocationListener
并行运行时,您的zipCode为null,因此您获得0值。
<强>修正强>
您可以等待MyLocationListener
完成并将interface
方法传递给此listener
,在此功能完成后,您可以调用该方法。
答案 1 :(得分:0)
你在做什么?
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,1000, listener);
以上行是异步调用,当你获得定位时会调用监听器。 您不能在此行之后检查邮政编码。 在listner中,当你获得zipcode的值时,实现一些接口/回调,它将为你提供活动中或任何你想要的zipcode的价值。