アプリケーションを新しい Google Maps API v2 に移植しようとしていますが、マーカーの操作に問題があります。
私の状況: バスとバス停を示す地図があります。古いライブラリでは、バス停用の独自の ItemizedOverlay とバス用の別の ItemizedOverlay がありました。それぞれに異なる OnTapListener がありました (実際には、外部ライブラリを使用してバルーンを表示します)。そのため、ユーザーがバス マーカーをタップしても何も起こりませんが、バス停マーカーをタップすると、その情報を含むアクティビティが開かれます。また、ItemizedOverlay では、各マーカーをモデルのバス停オブジェクトにマッピングしました。
現在、新しい API には 2 つの主な問題があります。
- GoogleMap オブジェクトの setOnInfoWindowClickListener() または setOnMarkerClickListener() メソッドでリスナーを設定します。つまり、マップ全体に対して 1 つのリスナーしか設定できないため、バス停やバスのタップを区別することはできません。
- 両方のマーカーの onClick メソッドは、Marker オブジェクトのみを受け取ります。ここからは、バス停の番号など、アクティビティを開くための情報をあまり取得できません (そして、タイトル文字列を解析するよりも良い方法があることを願っています! O_O)
これら 2 つの問題は、Marker の異なるサブクラスを使用して解決できると思いますが、コンストラクターがなく、マップに追加するときにその参照を取得するため、カスタム実装を使用できるかどうかはわかりません。
API は新しいため、同様の問題に関する Web 上の情報はあまりありません。私はこれを解決する方法を見つけようとしてきましたが、何も得られませんでした。誰もこれに対する可能な解決策を知っていますか?
ありがとう。
編集: 2 種類のマーカーを使用した現在のアプリケーションのマップのスクリーンショット: