0

マップ オーバーレイを定義しました。問題なくマーカーを表示できます。タップしたときに何かを起こそうとしていますが、イベントが発生しないようです。明らかな何かが欠けていると確信しています...

public class MapBlobCollection extends ItemizedOverlay<OverlayItem> {

        @SuppressWarnings("serial")
        public class ItemTappedEvent extends EventObject
        {
            public ItemTappedEvent(int itemIndex) {
                super(itemIndex);
            }
        }

        private ArrayList<OverlayItem> myOverlays ;

        public MapBlobCollection(Drawable defaultMarker) {
            super(boundCenterBottom(defaultMarker));
            myOverlays = new ArrayList<OverlayItem>();
            populate();
        }

        public void addOverlay(OverlayItem overlay){
            myOverlays.add(overlay);
            populate();
        }

        @Override
        protected OverlayItem createItem(int i) {
            return myOverlays.get(i);
        }

        // Removes overlay item i
        public void removeItem(int i){
            myOverlays.remove(i);
            populate();
        }

        // Returns present number of items in list
        @Override
        public int size() {
            return myOverlays.size();
        }


        public void addOverlayItem(OverlayItem overlayItem) {
            myOverlays.add(overlayItem);
            populate();
        }


        public void addOverlayItem(int lat, int lon, String title) {
            try {
                GeoPoint point = new GeoPoint(lat, lon);
                OverlayItem overlayItem = new OverlayItem(point, title, null);
                addOverlayItem(overlayItem);    
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }

        @Override
        protected boolean onTap(int index) {
            super.onTap(index);
            Log.d("TESTING","Triggering tap event on " + Integer.toString(index));
            EventManager.triggerEvent(this, new ItemTappedEvent(index));
            return true;
        }
}

基本的に、デバッグ ログ エントリは書き込まれず、イベントは発生しません。

さらに、私のマップビュー自体はパンしません (私から追加のコードがなければ、それは必要ですか?) setBuitInZoomControls(true) を設定しているにもかかわらず、これらも表示されません...おそらくマップビュー自体に問題がありますか?

マップビューは、レイアウトで次のように定義されています。

<com.google.android.maps.MapView
android:id="@+id/indexMapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:apiKey="@string/mapskey_release"/>

そして、私は描画イベントなどをオーバーライドしていません...

4

2 に答える 2

1

追加する必要があると思います

android:clickable="true"

あなたのマップビューに

于 2012-09-19T09:06:07.377 に答える
0

スーパー関数を最後に移動してみてください。

   @Override
     protected boolean onTap(int index) {
         Log.d("TESTING","Triggering tap event on " + Integer.toString(index));
         EventManager.triggerEvent(this, new ItemTappedEvent(index));
         return super.onTap(index);
     } 
于 2012-09-19T09:19:23.630 に答える