0

友達、

私の場所が同じであるときに、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();
                }
        }
4

2 に答える 2

0

インテント(他のページを意味する)を呼び出しているときにfinish()メソッドを呼び出すと、ページ内のすべての値が破棄され、新しいページに移動します。

例アクティビティAアクティビティB

アクティビティAからアクティビティBへの移動

インテントインテント=newIntent();

intent.setclass(...);

startActivity(intent);

アクティビティAに戻る

アクティビティBでfinish()を呼び出すだけです

于 2011-05-23T09:41:45.690 に答える
0

実はその理由は。

初めてレコードをロードすると、その場でGPS位置が取得されます。このアクティビティに来ると、gpsが場所を取得するのに時間がかかり、コードが渡されて何も表示されないことがあります。

したがって、問題は、場所が時間内に取得されない場合、それを待って、取得したときに表示する必要があることです。

そこで、この問題を取り除くためにRunOnFirstFix()を実装しました。もう1つの最も重要なことは、Mapview.postInvalidate()を使用してmapviewに表示することです。

したがって、この手順に従うと、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();
                }



            }
        };
于 2011-05-23T10:25:15.087 に答える