zoukankan      html  css  js  c++  java
  • 泡泡图层PopupOverlay的使用

    1、

    private PopupOverlay   pop  = null;
    /**
              * pop弹窗事件监控接口
              */
             PopupClickListener popListener = new PopupClickListener(){
                @Override
                public void onClickedPopup(int index) {
                    //index - 当前点击的区域索引。
                    if ( index == 0){
                        //更新item位置
                          pop.hidePop();
                          GeoPoint p = new GeoPoint(mCurItem.getPoint().getLatitudeE6()+5000,
                                  mCurItem.getPoint().getLongitudeE6()+5000);
                          mCurItem.setGeoPoint(p);
                          mOverlay.updateItem(mCurItem);
                          mMapView.refresh();
                    }
                    else if(index == 2){
                        //更新图标
                        mCurItem.setMarker(getResources().getDrawable(R.drawable.nav_turn_via_1));
                        mOverlay.updateItem(mCurItem);
                        mMapView.refresh();
                    }
                }
             };
             //PopupOverlay构造器
             pop = new PopupOverlay(mMapView,popListener);

    2、显示

    pop.showPopup(View view, GeoPoint point, int yOffset); //view:自定义 View //point:弹窗的位置(锚点在窗口的中下方向。水平方向:Center;垂直方向:Bottom) //yOffset:弹窗在y轴上的偏移量,取值范围yOffset>=0。单位:像素 

     xml

    <?xml version="1.0" encoding="utf-8"?>
    
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
            
        <TextView
            android:id="@+id/popleft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/popup_side"
             android:gravity="center"
            android:textStyle="bold"
             android:textColor="#3814ed"
            android:text="交通顺畅"
            android:textSize="12sp" />
    
       
         <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:id="@+id/popinfo"
            >
            
        <TextView
            android:id="@+id/textcache"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/popup_middle"
            android:gravity="center"
            android:textStyle="bold"
            android:textColor="@android:color/black"
            android:textSize="12sp" />
        
         <TextView
            android:id="@+id/popdown"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/popup_down"
            android:textColor="@android:color/black"
            android:textSize="12sp" />
        
        
        </LinearLayout>
    
         
        <TextView
            android:id="@+id/popright"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/popup_side"
            android:textColor="#3814ed"
            android:gravity="center"
            android:textStyle="bold"
            android:text="指点路况"
            android:textSize="12sp" />
    
    </LinearLayout>

    构造view

        private View viewCache;
    
    
    
            /**
             * 向地图添加自定义View.
             */
            viewCache = getLayoutInflater()
                    .inflate(R.layout.custom_text_view, null);
            popupInfo = (View) viewCache.findViewById(R.id.popinfo);
            popupLeft = (View) viewCache.findViewById(R.id.popleft);
            popupRight = (View) viewCache.findViewById(R.id.popright);
            popupText = (TextView) viewCache.findViewById(R.id.textcache);
    
                    popupText.setText("南湖大道");
                    Bitmap[] bitMaps = { BMapUtil.getBitmapFromView(popupLeft),
                            BMapUtil.getBitmapFromView(popupInfo),
                            BMapUtil.getBitmapFromView(popupRight) };
                    pop.showPopup(bitMaps, geoPoint, 32);

    3、

            //收起pop弹窗
            if (pop != null){
                pop.hidePop();
            }

    4、从view生成bitmap

    public class BMapUtil {
            
        /**
         * 从view 得到图片
         * @param view
         * @return
         */
        public static Bitmap getBitmapFromView(View view) {
            view.destroyDrawingCache();
            view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
                    View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
            view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
            view.setDrawingCacheEnabled(true);
            Bitmap bitmap = view.getDrawingCache(true);
            return bitmap;
        }
    }

    Done!

  • 相关阅读:
    国内首篇介绍JanOS物联网操作系统的文章
    安卓MonkeyRunner源码分析之与Android设备通讯方式
    MonkeyRunner源码分析之-谁动了我的截图?
    学习Swift写iOS?那写安卓和WinPhone呢?请看一石三鸟终极解决方案
    UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
    jdbc基础 (二) 通过properties配置文件连接数据库
    对于Servlet、Servlet容器以及一个Servlet容器-Tomcat
    5种分布式共享session的方法
    企业项目构建学习(一)maven
    SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3621264.html
Copyright © 2011-2022 走看看