1

SupportMapFragment を使用して Google Maps API V2 for Android を使用しようとしていますが、opengl とカメラを使用するサーフェス ビューの上にマップを追加すると問題が発生します。

問題は、サーフェスビューの上にフラグメントを動的に追加することです。得られるのはズームコントロールだけですが、透明なマップだけです。

すでに opengl を使用しているアプリケーションと互換性がないものはありますか?

マップをロードする前に、opengl コンテキストを破棄する必要がありますか?

間違った API キー、パーミッションなど、他の問題でしょうか?

他のopenglサーフェスで動作させるためにできることはありますか?

更新: 独立したアクティビティ (ProgramaticDemoActivity.java) でマップを表示することができたので、API KEY の問題ではありません (ただし、新しい API コンソール プロジェクトを作成する必要がありました)。

次に、サーフェス ビューをもう一度試してみました。マップは表示されますが、常に表示されるわけではありません。通常、mMapFragment.getMap() を呼び出すと null が返されます。フラグメントを(プログラムで)レイアウトに追加した後でも、 onCreateView が十分に速く呼び出されない可能性があります。何か案が?

4

3 に答える 3

1

Map API V2 以降、GL サーフェスを使用しています。古い API は、単純な 2D キャンバスを使用してマップを描画するため、z オーダーを尊重する場合があります。

現在のところ、Android は重複する EGL サーフェスを特定の順序で処理することはできません。メモリの長方形のフレームに直接アクセスするために何らかの意味で残りを突き抜ける特別な種類のビューであるため、これらはレイアウトで言及されている z オーダーを尊重しません。

同じデバイスでも異なる実行では、どちらが上に来るかは多かれ少なかれコイントスです。

Dianne の返信を参照してください: https://groups.google.com/forum/?fromgroups=#!topic/android-developers/COffLpanlz0

ただし、GL サーフェスの setZOrderMediaOverlay ()と setZOrderOnTop() を調べてください。運がいいかもしれません。

回避策:

  • あなたのアプリが有名になるまでにそのプラグが抜かれるかもしれないMap API V1を試すことができます
  • 代わりに、厳しい無料クォータを持つ静的マップ ビットマップに Web API を使用できます (追加料金を支払う必要があります)。

または、お気軽に問題にスターを付けて (例: #6613)、お待ちください。

于 2013-01-03T07:46:15.453 に答える
0

MapFragmentを追加した直後にgetMap()を取得することはできません...準備ができるまで待つ必要があります。MyCustomisedMapFragmentを作成し、onResumeメソッドで何かを実行して、他のコードにgetMap()の準備ができていることを通知することをお勧めします。

于 2012-12-22T02:55:46.027 に答える
0

「透明な地図」とはどういう意味ですか? マップ タイルが「透明」に見えますか、それとも何も表示されませんか (ズーム コントロールのみでタイルはありません)。

OpenGL レイヤーなしで SupportMapFragment を使用しようとしましたか? API キーの問題を破棄するだけです。

Google マップ アクティビティを使用したのと同じ問題があり、テストとテストを繰り返して解決しましたが、問題は Maps API キーに関連していると思います。

于 2012-12-20T10:34:54.287 に答える