zoukankan      html  css  js  c++  java
  • 标注坐标点的图层ItemizedOverlay的使用

    1、使用图层ItemizedOverlay标注某个坐标点

    // 实现标注item
                /* 生成ItemizedOverlay图层用来标注结果点
                 * arg0为mark的Drawable
                 * arg1为MapView
                 * */
                ItemizedOverlay<OverlayItem> itemOverlay = new ItemizedOverlay<OverlayItem>(
                        null, mMapView);
                /*
                 * OverlayItem表示单个overlay数据,如自定义标注,建筑等。是ItemizedOverlay的基本组件,
                 * arg0为GeoPoint,确定item的位置
                 * arg1为该item的文字片段
                 * arg2为该item的标题文本
                 */
                OverlayItem item = new OverlayItem(geoPoint, "item的文字片段", "item的标题文本");
                // 得到需要标在地图上的资源
                Drawable marker = getResources().getDrawable(R.drawable.icon_marka);
                // 为maker定义位置和边界(左上右下)
                marker.setBounds(0, 0, marker.getIntrinsicWidth(),
                        marker.getIntrinsicHeight());
                // 给item设置marker
                item.setMarker(marker);
                // 在图层上添加item
                itemOverlay.addItem(item);
                // 清除地图其他图层
                mMapView.getOverlays().clear();
                // 添加一个标注ItemizedOverlay图层
                mMapView.getOverlays().add(itemOverlay);
                // 设置地图默认的缩放级别
                mMapView.getController().setZoom(9);
                // 执行刷新使生效
                mMapView.refresh();

    2、使用自定义图层处理点击事件

    package com.eroad.component;
    
    import android.graphics.drawable.Drawable;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    
    import com.baidu.mapapi.map.ItemizedOverlay;
    import com.baidu.mapapi.map.MapView;
    import com.baidu.mapapi.map.OverlayItem;
    import com.baidu.platform.comapi.basestruct.GeoPoint;
    
    /**
     * @author JL
     * 
     *         要处理overlay点击事件时需要继承ItemizedOverlay 不处理点击事件时可直接生成ItemizedOverlay.
     */
    public class MyOverLay extends ItemizedOverlay<OverlayItem> {
    
        // 处理tap点击的句柄
        private Handler handler_item;
    
        public MyOverLay(Drawable mark, MapView mapView,Handler handler) {
            super(mark, mapView);
            // TODO Auto-generated constructor stub
            this.handler_item=handler;
        }
    
        // 在此处理item点击事件,并且一定会触发MapView的点击事件
        //arg0表示多个item中的序号
        @Override
        protected boolean onTap(int index) {
            // TODO Auto-generated method stub
            Log.e("item onTap: " ,""+ index);
            Message message=Message.obtain();
            message.obj=getItem(index);
            handler_item.sendMessage(message);
            return true;
        }
    
        // 在此处理MapView的点击事件,不一定会触发item点击事件
        @Override
        public boolean onTap(GeoPoint pt, MapView mapView) {
            // TODO Auto-generated method stub
            super.onTap(pt, mapView);
            Log.e("MapView onTap: " ,""+  pt.toString());
            return false;
        }
    
        public interface CallBack {
            
            public void excuteTap();
    
        }
    }

    使用自定义图层

        MyOverLay myOverLay = new MyOverLay(null, mMapView, new Handler() {
    
                    @Override
                    public void handleMessage(Message msg) {
                        // TODO Auto-generated method stub
                        super.handleMessage(msg);
                        OverlayItem item = (OverlayItem) msg.obj;
                        Toast.makeText(getApplicationContext(),
                                "坐标点:" + item.getPoint().toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                });

    Done!

  • 相关阅读:
    JDBC五数据源和数据池(web基础学习笔记十一)
    JDBC四(web基础学习笔记十)
    JDBC三(web基础学习笔记九)
    JDBC二查询(web基础学习笔记八)
    JDBC一(web基础学习笔记七)
    HTML二(基本标签)
    Java从零开始学八(循环结构)
    如何合理地估算线程池大小?(转载)
    Java 8 Documentation Download
    Redis集群
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3617935.html
Copyright © 2011-2022 走看看