2

ホームのリストがあります。各ホームは、緯度、経度、名前、説明が記載されたオブジェクトです。ここで、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クラスに送信して情報を表示する必要があります。

4

1 に答える 1

2

私は同じタイプの質問に答えました私の答えを見てくださいおそらくそれはあなたの質問に答えるでしょう

osmdroidを使用したオーバーレイアイテムのタップでのカスタム情報バブル

于 2012-05-21T11:06:12.663 に答える