0

私は今日、単純な Google マップと次のコードで追加されたいくつかのマーカーを含む非常に基本的な Android アプリケーションを開始しました。

Marker marker = map.addMarker(new MarkerOptions()
    .position(new LatLng(lat, lon)
    .title("Name")
    .snippet("Address")
); // end marker.

このことから気がついたのは、マップ上のマーカーをクリックすると、情報ウィンドウが自動的に開くことです。私の質問は、情報ウィンドウを開いたときに実行するコードをどこに置くかということです。理想的には、情報ウィンドウ内のボタンまたは何かをクリックして「詳細情報」と言うと、完全な情報を提供する新しい画面が表示されるようにする必要があります。

以前のアプリケーションや他のアプリケーションでは、関連するオブジェクトにリスナーを追加するだけで、それがクリックされると、対応する onClick() メソッドが呼び出されましたが、ここでは自動情報ウィンドウの性質上、そうではありません!

誰でも助けることができますか?

4

2 に答える 2

1

理想的には、情報ウィンドウ内のボタンまたは何かをクリックして「詳細情報」と言うと、完全な情報を提供する新しい画面が表示されるようにする必要があります。

それは不可能です。ただし、情報ウィンドウ全体 ( setOnInfoWindowClickListener()) のタップに応答することはできます。

于 2013-07-03T13:43:17.477 に答える
0

OnMarkerClickListener を使用して、マーカーのクリック イベントをリッスンできます。このリスナーをマップに設定するには、GoogleMap.setOnMarkerClickListener(OnMarkerClickListener) を呼び出します。ユーザーがマーカーをクリックすると、 onMarkerClick(Marker) が呼び出され、マーカーが引数として渡されます。このメソッドは、イベントを消費したかどうか (つまり、デフォルトの動作を抑制したいかどうか) を示すブール値を返します。false が返された場合、カスタムの動作に加えてデフォルトの動作が発生します。マーカー クリック イベントのデフォルトの動作は、その情報ウィンドウ (利用可能な場合) を表示し、マーカーがマップの中央に配置されるようにカメラを移動することです。

OnInfoWindowClickListener を使用して、情報ウィンドウのクリック イベントをリッスンできます。このリスナーをマップに設定するには、GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener) を呼び出します。ユーザーが情報ウィンドウをクリックすると、onInfoWindowClick(Marker) が呼び出され、情報ウィンドウがデフォルトの強調表示色 (Ice Cream Sandwich 以降を実行しているデバイスではホロ ブルー、以前のバージョンの Android ではオレンジ) で強調表示されます。

情報ウィンドウに関する前のセクションで説明したように、情報ウィンドウはライブ ビューではなく、ビューはマップ上に画像としてレンダリングされます。その結果、ビューに設定したリスナーは無視され、ビューのさまざまな部分でのクリック イベントを区別できなくなります。ボタン、チェックボックス、テキスト入力などのインタラクティブなコンポーネントをカスタム情報ウィンドウ内に配置しないことをお勧めします。

ここのドキュメントから直接取得:-

https://developers.google.com/maps/documentation/android/marker#marker_click_events

于 2013-07-03T13:21:54.523 に答える