プログラミング初心者ですが、ご教授願います。
現在AndroidStudioを使って、
・googlemap上にマーカーを複数設置
・マーカーをタップするとマーカーごとに異なった情報を表示する
というアプリを作っています。
現在、複数のマーカーの識別が出来ない状態でして、自力で調べても分からず質問させていただきました。
情報というのが、画像、ボタン、テキストを表示する、マップとは別のActivityを予定しており、
マーカーにtitleとsnippetを追加してinfowindowを表示することは今回考えておりません。
infowindow内に画像やボタンが設置できればよかったのですが出来ませんでした。
マーカーは、map.addMarker(new MarkerOptions().position(new LatLng(,)));
を複数並べて、設置はできました。
ですが、マーカーごとに異なった情報の表示が出来ません・・・
どのマーカーがタップされたのかが分かれば、画面遷移時にputExtraでそのデータを渡してやれば、
遷移先のActivityでデータを受け取り、if文などで表示内容を変えることができると考えているのですが・・・
下記が現在のMainActivity内のマーカー作成と画面遷移の部分のコードです。
コード内のSubActivityが画面遷移先になります。
// マーカーの追加 private void setMarker() { map.addMarker(new MarkerOptions().position(new LatLng(***,***))); map.addMarker(new MarkerOptions().position(new LatLng(***,***))); map.addMarker(new MarkerOptions().position(new LatLng(***,***))); //この文が20個くらい } // マーカータップ時のイベント @Override public boolean onMarkerClick(Marker marker) { Intent intent = new Intent(getApplication(), SubActivity.class); startActivity(intent); return false; }
改めて、複数のマーカーを識別する方法をよろしくお願いします。
追記:
ご回答ありがとうございます。説明に不足があったので加筆修正。
追記:
ご回答ありがとうございました。お陰様でなんとか出来ました。
ネットで調べても参考になるものがなかったので、
稚拙とは思いますが一応完成したコードを載せておきます。
getId()で取得した各マーカーのIDがわからなかったので
クリックリスナーでIDをトーストで表示させた所、
マーカーの追加順に"m0","m1","m2".........
と識別されていることがわかりました。
そこで、上記のマーカー追加部分はそのままに、
マーカークリックリスナーを下記のように変更しました。(~~部分は省略)
// マーカーの追加 private void setMarker() { map.addMarker(new MarkerOptions().position(new LatLng(***,***))); // id = m0 map.addMarker(new MarkerOptions().position(new LatLng(***,***))); // id = m1 map.addMarker(new MarkerOptions().position(new LatLng(***,***))); // id = m2 //この文が20個くらい } // マーカータップ時のイベント @Override public boolean onMarkerClick(Marker marker) { String id = marker.getId(); if (id.equals("m0")) { Intent intent = new Intent(getApplication(), SubActivity.class); intent.putExtra("DATA_ID", id); startActivity(intent); } else if (id.equals("m1")) { Intent intent = new Intent(getApplication(), SubActivity.class); intent.putExtra("DATA_ID", id); startActivity(intent); } ~~~ return false; }
後はputExtraで送られた"DATA_ID"を、SubActivity内で
Intent intent = getIntent(); String Sub_DATA_ID = intent.getStringExtra("DATA_ID");
で受け取り、if文で分岐させてマーカー別に情報を表示させることが出来ました。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/27 13:29
2016/10/27 14:27
2016/10/27 16:08
2016/10/27 16:16
2016/10/28 17:10
2016/10/28 17:37
2016/10/28 17:51
2016/10/28 18:06
2016/10/28 19:58