2011-10-21 21 views
0

私はmylocationoverlayをセットアップしようとしています。残念ながら、それはかなり不思議に思っています。 MapActivityを終了してアプリケーションに戻るまで表示されない点を除いて、正常に動作します。最初は地図が表示され、青い円が表示されています。しかし、ある点に解決する代わりに、円はちょうど消えます。mylocationoverlayが最初に見つかった場所が見つからない

マイコードは次のようになります。

onResume() { 
    myLocation = new MyLocationOverlay(getActivity(), mp); 
myLocation.enableMyLocation(); 
myLocation.runOnFirstFix(new Runnable(){ 
     public void run() { 
      map.getOverlays().clear(); 
     map.getOverlays().add(myLocation); 
     map.postInvalidate(); 
     } 
    } 
} 


onPause() { 
    myLocation.disableMyLocation(); 
    layout.removeView(map); 
    map = null; 

}

誰もがここで起きているかもしれないもの上の任意の考えを持っていますか?これはほぼすべての例がオンラインのように見えるので、私はこれを2.3.4を実行しているmotorolla atrixでテストしています。

+0

強制的に再描画する必要があるとき

map.invalidate();を呼び出すことを忘れないでください。 –

答えて

0

Edit :は私はあなたのコードを紹介してみましょう:

onResume() { 
// First time: draw a circle somewhere here. There is no GPS fix yet, so no dot. 
// Second time: The dot from the previous fix exists, so you get a circle and dot. 
myLocation = new MyLocationOverlay(getActivity(), mp); 
myLocation.enableMyLocation(); 
myLocation.runOnFirstFix(new Runnable(){ 
     public void run() { 
     // First time: removes the circle and draws a dot. 
     // Second time: removes the circle and dot, and draw a new dot. 
     map.getOverlays().clear(); 
     map.getOverlays().add(myLocation); 
     map.postInvalidate(); 
     } 
    } 
} 

map.getOverlays().clear();は円

の代わりに、あなたがしたくないことをオーバーレイ(複数可)を削除する代わりにremove()を使用して削除しますそれらすべてをクリアします。あなたがマップビュー上()移入する必要があり、あなたのオーバーレイを追加した後

+0

代わりにremoveを使用しましたが、まだ表示されません。私はまた、地図上にいくつのオーバーレイがあるかを示すためにログの記録を入れました。何も表示されていませんでしたが、それは1と言いました。私は、このマットは、描画メソッドが呼び出されていないことを意味すると思いますか? – akhalsa

+0

青い円が最初に表示されたときに、中心にドットが含まれていないことを追加する必要があります。その後、青色の円が消えて、オーバーレイなしで私を残します。 2回目のアクティビティを開くと、最初は青い円が表示されますが、中央にはオーバーレイドットが含まれています。その後、円が消えるとドットはまだそこに残っています。私はなぜそれが最初に動作しないのかについて完全に迷っています! – akhalsa