ホームのリストがあります。各ホームは、緯度、経度、名前、説明が記載されたオブジェクトです。ここで、AndroidMapViewですべての家をジオポイントとして表示したいと思います。
サイトで何かを検索しましたが、マップオーバーレイが必要であることがわかりました。
だから私はSearchHomeアクティビティ(つまり、マップと検索ボックスを使用したアクティビティ)でこれを実行しました
MapLocationOverlay mapLocationOverlay = new MapLocationOverlay(SearchHome.this, elementi, SearchHome.this.getResources().getDrawable(R.drawable.home_icon));
overlays = mapView.getOverlays();
overlays.add(mapLocationOverlay);
私のMapOverlayクラスは次のとおりです。
public class MapLocationOverlay extends ItemizedOverlay<OverlayItem> {
private List<Home> homeList;
private Context context;
public MapLocationOverlay(Context context, List<Home> homeList, Drawable marker) {
super(boundCenterBottom(marker));
this.context = context;
this.homeList = homeList;
if (homeList == null) {
homeList = new ArrayList<Home>();
}
populate();
}
@Override
protected OverlayItem createItem(int i) {
Home c=homeList.get(i);
GeoPoint point =
new GeoPoint((int) ((Double.valueOf(c.getLatitude()) * 1e6)), (int) ((Double.valueOf(c.getLongitude()) * 1e6)));
return new OverlayItem(point, c.getNameHouse(), null);
}
@Override
public boolean onTap(final int index) {
Home h = homelist.get(index);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("HomeLocation")
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Intent i = new Intent(context, HouseDetails.class);
i.putExtra(HomeMapApp.index, index);
context.startActivity(i);
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
return true; // we'll handle the event here (true) not pass to another overlay (false)
}
@Override
public int size() {
return homeList.size();
}
}
しかし、GeoPointを使用してマップ内の関連するHouseアイテムを適切に処理するようにリスナーonTapを設定する方法がわかりません。
たとえば、ニューヨークのジオポイントMyHouseをクリックすると、それぞれのHouse javaオブジェクトのすべてのデータを取得し、HouseDetailクラスに送信して情報を表示する必要があります。