0

Google マップを使用する Android アプリケーションがあります。私の最初のアクティビティは、いくつかのクリック可能なアイコンで mapview を開始します。アイコンをクリックすると、別のマップで新しいアクティビティ (インテント) が開始されます。新しいマップから戻るボタンをクリックすると、最初のマップに戻ります。ただし、マップ内でズームまたは移動を開始すると、最初に読み込まれたタイルのみが表示されます。どうすればこれを変更できますか?

電話の向きを変更すると、マップが更新され、(アプリが再起動されるため) 正常に動作するため、方向変更時の再起動を停止するために android:configChanges="orientation" を追加しました。すべてのマーカーを再度リロードしたくないので、それを追加しました (Web サービスを使用し、時間がかかる場合があります)。

元のマップに「戻る」をクリックしたときにタイルをロードしたいだけです。何か案は?

4

1 に答える 1

3

私も最近この問題に遭遇しました!ログを確認してください。おそらく、「IllegalStateException: Connection pool shut down.」という行に沿ってエラーが発生しています。また、私のように、あなたが見つけた唯一の答えは、Google API キーを正しく設定していない人向けのようでした. :-\

最終的にこのリンクに遭遇しました。(通常、これらの投稿を読むには Google アカウントにサインインする必要があります)

アプリケーションごとに 1 つのマップ アクティビティしか許可されないというバグがあるようです。マップの更新と関係があるようです。新しいマップ アクティビティを読み込んだ後に各マップ アクティビティを終了することで、この問題を回避しました。これにより、ユーザーがマップに戻ると、アクティビティ全体がリロードされます。理想的ではありませんが、これまでのところうまくいきました。

もう少し詳しく:

  1. 後で取得するマップに関する情報を保存します。マップセンターとマップズームが最初に思い浮かびます。グローバルな場所に配置するか、意図して渡してください。

  2. 2 番目のアクティビティのインテントを起動した後、最初のアクティビティで finish() を呼び出します。2 つのマップを同じマップとしてユーザーに表示する場合は、新しいアクティビティが開始されたときに既定で発生するスライド遷移を無効にする必要があります。これを行うには、finish() の直後に次の行を呼び出します。

overridePendingTransition(0, 0);

  1. 2 番目のマップ アクティビティを終了する必要がある場合は、必要に応じて手順 1 を繰り返し、手順 2 と同じ方法を使用して最初のマップ アクティビティを再度読み込みます。適切です(キャンセルボタンか何かがあるかもしれません)。

  2. 最初のアクティビティの onCreate で、そのアクティビティが最後に表示されたときに保存されたものを確認し、マップを適切に変更してください。

多分それは冗長だったかもしれませんが、私はこのサイトをよく利用しています。

于 2010-12-09T19:51:36.197 に答える