首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ItemizedOverlay OnTap()未触发

ItemizedOverlay OnTap()未触发
EN

Stack Overflow用户
提问于 2012-09-19 16:57:30
回答 2查看 525关注 0票数 0

我已经定义了一个地图覆盖,并且我可以毫无问题地显示标记。我现在正在尝试当我点击一个按钮时发生一些事情,但事件似乎永远不会触发。我肯定我漏掉了一些明显的东西。

代码语言:javascript
复制
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;
        }
}

基本上,调试日志条目不会被写入,事件也不会触发。

此外,我的mapview本身不会平移(应该这样吗,而不需要我编写任何额外的代码?)尽管设置了setBuitInZoomControls(true),但它们也不会出现...那么,也许mapview本身就有问题呢?

地图视图在布局中定义为:

代码语言:javascript
复制
<com.google.android.maps.MapView
android:id="@+id/indexMapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:apiKey="@string/mapskey_release"/>

我不会重写任何抽签事件或其他事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-19 17:06:07

我相信你需要加上

代码语言:javascript
复制
android:clickable="true"

到您的地图视图

票数 1
EN

Stack Overflow用户

发布于 2012-09-19 17:19:24

尝试将超级函数移到末尾:

代码语言:javascript
复制
   @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);
     } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12491426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档