【问题标题】:Not getting zipcode from Latitude and Longitude没有从纬度和经度获取邮政编码
【发布时间】:2012-12-04 14:18:50
【问题描述】:

我正在尝试找出 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

    }

}

但这段代码似乎总是为邮政编码返回一个空值。任何帮助都会很棒。

提前致谢!!

【问题讨论】:

    标签: android android-location


    【解决方案1】:

    由于您的 MyLocationListener 在此时并行运行,因此您的 zipCode 为空,因此您获得 0 值。

    修复

    您可以等待MyLocationListener 完成并将interface 方法传递给此listener,并在此函数完成时调用该方法。

    【讨论】:

      【解决方案2】:

      你在干什么?

      lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,1000, listener);
      

      上面一行是异步调用,当你得到定位时会调用监听器。 您不能在此行之后检查邮政编码。 在侦听器中,当您获得 zipcode 的值时,实现一些接口/回调,它将在您的活动中或您想要的任何地方为您提供 zipcode 的值。

      【讨论】:

      • 你能建议我在我的代码中需要做的调整吗??
      • findZipCodeFunction 写在哪里? Listner 在哪里定义?在同一个活动中?
      • 是的,他们都在同一个活动中......我需要这个人获取邮政编码,然后我在我的应用程序中根据邮政编码执行搜索......
      • 好吧,在这种情况下它并不难.. 只需从 findZipCode 中删除 if else 语句.. 然后说,当您获得邮政编码时,您调用函数:func()... 所以调用这个 func() 就在你从 getPostalCode() 获取邮政编码的侦听器中;
      猜你喜欢
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多