4

複数の (約 600、それらに関する情報を表示するためにすべてクリック可能) オーバーレイ アイテムを mapview に表示する必要がありました。パフォーマンスの問題については、グループごとに異なる種類の情報が表示されるため、それらを異なる ItemizedOverlay クラスにグループ化するのが賢明だと思いました。(具体的には、空港、VOR、NDB、および航空に関するものです)。

私の問題は、それらをクラスに分けて表示すると、パフォーマンスが非常に優れていることです。マップがスムーズに流れます。しかし、最初のレイヤーの上に2番目のレイヤーを追加すると、最初のレイヤーのアイテムをクリックできなくなります。

多くのことを読み、Log.i メソッドを使用してデバッグすると、すべてのレイヤーがクリックされるのに OnTap(Geopoint point, MapView mapview) メソッドのみが呼び出されることに気付きました。super.onTap(point, mapview) の呼び出しが機能しませんでした。マーカーを識別するには onTap(int index) メソッドが必要です。(私はクラスに両方のメソッドを持っています(多くの例を読んだ後))。

それで、私は何をすべきですか?私の問題を解決する方法はありますか?クリックした座標をすべてのオーバーレイアイテムの座標と比較して近いものを見つけるなど、重いアプローチにはなりたくありません。

前もって感謝します。

4

1 に答える 1

7

onTop (および Android で動作するその他のタッチ イベント) の方法は、onTaps (またはその他のタッチ イベント) の 1 つが true を返すまで、座標にあるすべてのオブジェクトに ping を実行することです。この場合、onTap(Geopoint point, MapView mapview) メソッドは true を返しています。これにより、そのタッチ イベントが消費され、他の onTap イベントに渡されなくなります。onTap イベントが false を返すようにすると、他の onTap イベントが ping されます。これが役立つことを願っています。

于 2012-05-30T00:40:38.443 に答える