MyLocationOverlay исчезнет проблема при следующей загрузке деятельности?

Друзья,

я заметил одну вещь, когда мое местоположение такое же, маркер MyLocationOverlay не отображается на экране.

Я проверил это, когда я изменяю значения местоположения эмулятора, он появляется на экране, я перехожу на следующую страницу, затем снова захожу на ту же страницу, и она не отображается. Да, когда я изменяю значения местоположения, он появляется снова. Я хочу показать это всегда, если местоположение изменилось, или нет, кто-нибудь ведет меня, как?

вот мой код

onCreate()
{

 myLocOverlay = new MyLocationOverlay(this, mapView);
         myLocOverlay.enableMyLocation();
         mapView.getOverlays().add(myLocOverlay);
         mapView.postInvalidate();
zoomToMyLocation();
}


@Override
    protected void onPause() {
        super.onPause();
        if (myLocOverlay != null)
            myLocOverlay.disableMyLocation();
    }

    @Override
    public void onResume() {


        if (myLocOverlay != null)
            myLocOverlay.enableMyLocation();

        super.onResume();
    }

  private void zoomToMyLocation() {
                GeoPoint myLocationGeoPoint = myLocationOverlay.getMyLocation();
                if(myLocationGeoPoint != null) {
                        mapView.getController().animateTo(myLocationGeoPoint);
                        mapView.getController().setZoom(10);
                }
                else {
                        Toast.makeText(this, "Cannot determine location", Toast.LENGTH_SHORT).show();
                }
        }

2 ответа

Решение

На самом деле причина была.

в первый раз, когда я загружаю запись, она получает местоположение GPS на месте. иногда, когда я прихожу к этому занятию, gps тратит время на определение местоположения, и мой код пропускается, и ничего не появляется.

так что проблема в том, что если местоположение не получено вовремя, тогда я должен ждать его и отображать, как мы его получаем.

поэтому я реализовал RunOnFirstFix(), чтобы избавиться от этой проблемы. и еще одна важная вещь - использовать Mapview.postInvalidate(), чтобы отобразить его в просмотре карты.

поэтому, если мы выполним этот шаг, у нас не возникнет проблема исчезновения MyLocationOverlay.

code sample onCreate()
{

// new line
myLocOverlay.runOnFirstFix(showCurrentLocationIfObtainedLate );

}


Runnable showCurrentLocationIfObtainedLate = new Runnable() {

            @Override
            public void run() {



                if(myLocOverlay.getMyLocation() != null)
                {
                mapView.getController().animateTo(myLocOverlay.getMyLocation());
                    mapView.postInvalidate();
                }



            }
        };

Если вы вызываете метод finish() при вызове намерения (означает другую страницу), то вы уничтожаете все значения на своей странице и переходите к новой странице.

пример упражнение A занятие B

переход от занятия А к занятию Б

Намерение намерение = новое намерение ();

intent.setclass (...);

startActivity (намерение);

возвращаясь к занятию А

просто вызовите finish() в действии B

Другие вопросы по тегам