ユーザーの現在地に基づいて最も近い場所を表示する Android GPS アプリケーションを構築しています。私は MapFragment を使用しており、AsyncTask 内で次のようにマップにマーカーを配置しています。
protected void onPostExecute(Void result) {
super.onPostExecute(result);
for(int i = 0; i < list.size(); i++)
{
HashMap<String,String> location = new HashMap<String,String>();
location = list.get(i);
String type = location.get("type");
int marker = getTypeDrawable(type);
LatLng position = new LatLng(Float.parseFloat(location.get("lat")), Float.parseFloat(location.get("long")));
map.addMarker(new MarkerOptions()
.position(position)
.title(location.get("name"))
.snippet(location.get("distance") + location.get("type"))
.icon(BitmapDescriptorFactory.fromResource(marker)));
System.out.println(list.get(i));
}
Toast.makeText(MainActivity.this, "Finished retrieving nearby locations",
Toast.LENGTH_SHORT).show();
}
これは、最も近い場所のすべての情報を含むグローバル変数リストです。ArrayList<HashMap<String, String>> list;
私の計画は、ジオキャッシング アプリケーション 'C:Geo' のように、マーカーをクリックするとポップアップ ダイアログを表示することです。私の問題は、ダイアログ内にそのマーカーの情報を表示する方法がわからないことです。ご覧のとおり、メソッドを使用していますが、map.addMarker()
その場所をそのマーカーに関連付ける方法がありません。
次のようなポップアップ ダイアログを作成したいと思います。
@Override
public boolean onMarkerClick(Marker marker) {
//Get location associated with marker.
//Fill popup dialog with information associated
//with location and then invoke the dialog.
}