如何从谷歌地图为Android应用程序更新文本字段中的当前位置的地址

时间:2012-10-22 12:38:09

标签: android google-maps

您好我正致力于创建应用程序,该应用程序获取当前位置的地址,并在Google地图更改位置时更新它们。

它目前工作正常,但不会更新。 我在文本视图上显示地址,Google地图上的当前位置标记随着当前位置的变化而变化,但地址未反映更改。 它只显示第一个位置的地址,不会更新......

有谁能告诉我我做错了什么? 非常感谢提前。

以下是我的代码;

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    map = (MapView) findViewById(R.id.map);
    map.setBuiltInZoomControls(true);
    map.setClickable(true);

    map.getController().setZoom(17);

    tv = (TextView) findViewById(R.id.address_label);

    overlay = new MyLocationOverlay(getApplicationContext(), map);
    overlay.onProviderEnabled(LocationManager.GPS_PROVIDER);
    overlay.enableMyLocation();


    overlay.runOnFirstFix(new Runnable() {
        public void run() {

            GeoPoint g = overlay.getMyLocation();
            map.getController().animateTo(g);
            map.getController().setCenter(g);

            Geocoder geoCoder = new Geocoder(getBaseContext(), Locale
                    .getDefault());
            boolean chk1 = isNetworkAvailable();
            if (chk1 == true) {

                try {
                    List<Address> addresses = geoCoder.getFromLocation(
                            g.getLatitudeE6() / 1E6,
                            g.getLongitudeE6() / 1E6, 1);
                    add="";
                    if (addresses.size() > 0) {
                        for (int i = 0; i < addresses.get(0)
                                .getMaxAddressLineIndex(); i++)
                            add += addresses.get(0).getAddressLine(i) + ", ";
                    }


                } catch (Exception e) {
                    e.printStackTrace();
                }
                ui_handler.post(new Runnable() {
                    public void run() {
                        tv.setText(add);
                    }
                });
            } else {
                ui_handler.post(new Runnable() {
                    public void run() {
                        tv.setText("Connection not found.");

                    }
                });
            }

        }
    });

    map.getOverlays().add(overlay);
    map.invalidate();

}

0 个答案:

没有答案