首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

ItemizedOverlay的在地图view下弹出气泡

2012-09-14 
ItemizedOverlay的在mapview上弹出气泡ItemizedOverlay的在mapview上弹出气泡 首先定义一个overlay extend

ItemizedOverlay的在mapview上弹出气泡
ItemizedOverlay的在mapview上弹出气泡
首先定义一个overlay extends ItemizedOverlay,例如:

class RestaurantOverlay extends ItemizedOverlay<OverlayItem> {
        private List<OverlayItem> items = new ArrayList<OverlayItem>();
        private Drawable marker = null;

        public RestaurantOverlay(Drawable defaultMarker) {
            super(defaultMarker);
            this.marker = defaultMarker;
        }
//添加OverlayItem对象
        public void addOverlay(OverlayItem overlay) {
            items.add(overlay);
            populate();
        }

        protected boolean isRouteDisplayed() {
            return false;
        }

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

        @Override
        public int size() {
            return items.size();
        }

        @Override
        public void draw(Canvas canvas, MapView mapView, boolean shadow) {
            super.draw(canvas, mapView, shadow);
            boundCenterBottom(marker);
        }
    }

其次,获取要加载overlay的mapview句柄,调用mapview.getOverlays()方法,返回一个List<OverLay>对象。

然后,定义自己的overlay,如:RestaurantOverlay me = new RestaurantOverlay(Drawable对象);通过List<Overlay>对象的add(),把自己的Overlay添加上去。但还要为me添加OverlayItem对象,既可以显示图标在地图上。

最后,就是怎么点击标记图标,显示详细信息的泡泡呢?可以通过ItemizedOverlay内部类OnFocusChangeListener的onFocusChanged方法实现。如:

private final ItemizedOverlay.OnFocusChangeListener onFocusChangeListener = new ItemizedOverlay.OnFocusChangeListener() {

        public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus) {
            if (popView != null) {
                popView.setVisibility(View.GONE);
            }

            if (newFocus != null) {

                MapView.LayoutParams geoLP = (MapView.LayoutParams) popView
                        .getLayoutParams();
                geoLP.point = newFocus.getPoint();// 这行用于popView的定位
                TextView title = (TextView) popView
                        .findViewById(R.id.map_bubbleTitle);
                title.setText(newFocus.getTitle());

                TextView desc = (TextView) popView
                        .findViewById(R.id.map_bubbleText);
                if (newFocus.getSnippet() == null
                        || newFocus.getSnippet().length() == 0) {
                    desc.setVisibility(View.GONE);
                } else {
                    desc.setVisibility(View.VISIBLE);
                    desc.setText("距离当前位置:"+newFocus.getSnippet()+"公里");
                }
                citymap.updateViewLayout(popView, geoLP);
                popView.setVisibility(View.VISIBLE);
            }

        }
    };



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiongyingzhuantu/archive/2010/11/15/6011000.aspx 1 楼 yu_long 2011-05-13   楼主有源码吗,发给我一份,万分感谢!我的QQ:295047822
email:javayulong@126.com

热点排行