0

嗨,我正在努力创建应用程序,该应用程序获取当前位置的地址并随着谷歌地图的位置变化而更新它们。

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

谁能告诉我我做错了什么?首先十分感谢。

下面是我的代码;

    @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();

}
4

0 回答 0