From 3c918119be7003cab14019ace2ccdd183f95bb0a Mon Sep 17 00:00:00 2001
From: endian11 <Dana_Lee1016@126.com>
Date: 星期二, 09 二月 2021 11:41:51 +0800
Subject: [PATCH] 上传移动地图包形式的fragment 和vtpk行驶的fragment

---
 app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentMMPK.java |  600 ++++++++++++++++++++++++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentVTPK.java |  590 +++++++++++++++++++++++++++++
 2 files changed, 1,190 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentMMPK.java b/app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentMMPK.java
new file mode 100644
index 0000000..6e19331
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentMMPK.java
@@ -0,0 +1,600 @@
+package safeluck.drive.evaluation.fragment;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.anyun.basecommonlib.MyLog;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.geometry.PointCollection;
+import com.esri.arcgisruntime.geometry.Polygon;
+import com.esri.arcgisruntime.geometry.Polyline;
+import com.esri.arcgisruntime.geometry.SpatialReference;
+import com.esri.arcgisruntime.layers.ArcGISMapImageLayer;
+import com.esri.arcgisruntime.layers.ArcGISVectorTiledLayer;
+import com.esri.arcgisruntime.loadable.LoadStatus;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.MobileMapPackage;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleFillSymbol;
+import com.esri.arcgisruntime.symbology.SimpleLineSymbol;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.google.gson.Gson;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import me.yokeyword.fragmentation.SupportFragment;
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.exam_status.ExamStatus;
+import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.ExamPlatformData;
+import safeluck.drive.evaluation.bean.GisCarModel;
+import safeluck.drive.evaluation.bean.RTKInfoBean;
+import safeluck.drive.evaluation.cEventCenter.CEventCenter;
+import safeluck.drive.evaluation.cEventCenter.ICEventListener;
+import safeluck.drive.evaluation.util.CThreadPoolExecutor;
+import safeluck.drive.evaluation.util.FileUtil;
+import safeluck.drive.evaluation.util.Utils;
+
+/**椹炬牎淇℃伅UI
+ * MyApplication2
+ * Created by lzw on 2019/3/20. 11:22:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class ArcGisMapFragmentMMPK extends SupportFragment implements View.OnClickListener {
+
+    private static final String TAG = ArcGisMapFragmentMMPK.class.getSimpleName();
+    private static final int ENTER = 1;//杩涘叆 绉戜簩鏌愪釜椤圭洰鍦板浘
+
+    private LinkedBlockingQueue queue = new LinkedBlockingQueue(100);
+    private ExecutorService consumer = Executors.newSingleThreadExecutor();
+    private ExecutorService producer = Executors.newSingleThreadExecutor();
+    SimpleLineSymbol lineSymbolGls = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLACK, 0.5f);
+
+
+    PointCollection points = new PointCollection(SpatialReference.create(4544));
+    private Gson gson = new Gson();
+    private ICEventListener icEventListener = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+
+
+
+
+                producer.execute(()->{
+                    String json = (String)obj;
+                    Log.i(TAG,String.format("褰撳墠绾跨▼鍙�%d,json=%s",Thread.currentThread().getId(),json));
+                    RTKInfoBean rtkInfoBean = gson.fromJson(json,RTKInfoBean.class);
+                    queue.offer(rtkInfoBean);
+                });
+
+//                MyLog.i(TAG,"澶勭悊瀹�11.鏃堕棿="+Utils.formatTimeYYMMDDHHmmSSSSS(System.currentTimeMillis()));
+
+
+        }
+    };
+    private ICEventListener icEventListener1 = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+            if (msgCode==13){
+                ExamStatus examStatus = (ExamStatus)obj;
+                if (examStatus.getMap_id()>-1){
+                    if (examStatus.getEnter()==ENTER){
+                        MyLog.i(TAG,String.format("杩涘叆[%d] map",examStatus.getMap_id()));
+                        double scale = mMapView.getMapScale();
+                        mMapView.setViewpointScaleAsync(scale * 0.2*0.2);
+                    }else{
+                        MyLog.i(TAG,String.format("閫�鍑篬%d] map",examStatus.getMap_id()));
+                        double scale = mMapView.getMapScale();
+                        mMapView.setViewpointScaleAsync(scale * 5*5);
+                    }
+                }
+            }
+        }
+    };
+
+    public static SupportFragment newInstance(String s){
+        ArcGisMapFragmentMMPK jiaXiaoFragment = new ArcGisMapFragmentMMPK();
+        Bundle bundle = new Bundle();
+        bundle.putString("arcgis_url",s);
+        jiaXiaoFragment.setArguments(bundle);
+        return jiaXiaoFragment;
+    }
+
+
+    private MapView mMapView ;
+    private static final int MSG_CAR = 100;
+    double yaw = 0;
+
+    GraphicsOverlay mGraphicsOverlay;
+    GraphicsOverlay mGraphicsOverlay_body;
+    private double startY = 428882,startX = 3291858;
+    private Handler mHandler = new Handler(){
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what){
+                case MSG_CAR:
+
+                    List<safeluck.drive.evaluation.bean.Point> newCarPoints = (List<safeluck.drive.evaluation.bean.Point>) msg.obj;
+                    Log.i(TAG,"handle message newcarPoints.size="+newCarPoints.size());
+                    drawGlses(newCarPoints,gisCarModel);
+
+                    break;
+            }
+        }
+    };
+
+    PointCollection mPointCollection = new PointCollection(SpatialReference.create(4544));
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+
+
+        View view = inflater.inflate(R.layout.layout_arc_gis,container,false);
+        mMapView = view.findViewById(R.id.mapView);
+        view.findViewById(R.id.btn_change_map).setOnClickListener(this);
+        Log.i(TAG,String.format("褰撳墠绾跨▼鍙�%d,json=%s",Thread.currentThread().getId(),"onCreateView"));
+        url = getArguments().getString("arcgis_url");
+        CThreadPoolExecutor.runInBackground(()->{
+
+            readGisCar();
+
+
+        });
+        consumer.execute(new CalRunnable());
+
+        setupMap();
+
+
+//        addTrailheadsLayer();
+
+
+
+        url = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+_mActivity.getPackageName()+"/lianfang.mmpk";
+        Log.i(TAG,"url ========="+url);
+        final MobileMapPackage mobileMapPackage = new MobileMapPackage(url);
+        mobileMapPackage.loadAsync();
+        mobileMapPackage.addDoneLoadingListener(()->{
+            LoadStatus loadStatus = mobileMapPackage.getLoadStatus();
+            if (loadStatus==LoadStatus.LOADED){
+                List<ArcGISMap> mainArcGisMapL = mobileMapPackage.getMaps();
+                ArcGISMap mainArcGismapMMPK = mainArcGisMapL.get(0);
+                mMapView.setMap(mainArcGismapMMPK);
+            }
+        });
+
+        return view;
+    }
+
+
+
+    RTKInfoBean rtkInfoBean;
+    boolean flag = true;
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()){
+            case R.id.btn_change_map:
+                if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){
+                    RoadDriveMapFragmentab jiaXiaoFragment = findFragment(RoadDriveMapFragmentab.class);
+                    if (jiaXiaoFragment == null) {
+                        jiaXiaoFragment = (RoadDriveMapFragmentab) RoadDriveMapFragmentab.newInstance();
+                    }
+                    startWithPop(jiaXiaoFragment);
+                }else{
+                    MapFragment jiaXiaoFragment = findFragment(MapFragment.class);
+                    if (jiaXiaoFragment == null) {
+                        jiaXiaoFragment = (MapFragment) MapFragment.newInstance();
+                    }
+                    startWithPop(jiaXiaoFragment);
+                }
+
+
+                break;
+        }
+    }
+
+    class CalRunnable implements Runnable{
+
+        @Override
+        public void run() {
+            while (flag){
+
+
+                rtkInfoBean = (RTKInfoBean)queue.poll();
+                if (rtkInfoBean != null){
+                    Log.i(TAG,String.format("鍙栧嚭涓�涓紝queue.size=%d,rtkinfo=%s,绾跨▼鍙�=%d",queue.size(),rtkInfoBean.toString(),Thread.currentThread().getId()));
+                    yaw = rtkInfoBean.getHeading();
+                    startX = rtkInfoBean.getCoord_y();
+                    startY = rtkInfoBean.getCoord_x();
+
+                    if (mMapView != null){
+                        mMapView.setViewpointRotationAsync(rtkInfoBean.getHeading());
+                    }
+                addGraphicLayer(yaw,startX,startY);
+
+
+
+                }
+
+            }
+
+        }
+    }
+
+
+
+
+
+
+
+
+    private void setupMap() {
+        if (mMapView != null) {
+
+
+            mGraphicsOverlay = addGraphicsOverlay(mMapView);
+
+        }
+    }
+String url ;
+    private void addTrailheadsLayer() {
+        if (!TextUtils.isEmpty(url)){
+            Log.i(TAG,"map_url="+url);
+            final ArcGISMapImageLayer mapImageLayer = new ArcGISMapImageLayer(url);
+            // create an empty map instance
+            ArcGISMap map = new ArcGISMap();
+            Log.i(TAG,String.format("map.getMiniScale=%f",map.getMinScale()));
+            map.setMinScale(1000.0);
+            // add map image layer as operational layer
+            map.getOperationalLayers().add(mapImageLayer);
+            mMapView.setMap(map);
+        }else{
+            Toast.makeText(_mActivity, "url涓虹┖", Toast.LENGTH_SHORT).show();
+        }
+
+
+
+    }
+
+
+
+    GisCarModel gisCarModel;
+    boolean once =true;
+    private void addGraphicLayer(double yaw,double x,double y){
+        Log.i(TAG,"addgraphicLayer寮�濮�");
+        long time = System.currentTimeMillis();
+
+
+
+        if (gisCarModel != null){
+
+
+            long  qudianTime = System.currentTimeMillis();
+            List<safeluck.drive.evaluation.bean.Point> carNew =Utils.getCarPoint(0,yaw,new safeluck.drive.evaluation.bean.Point(x,y),gisCarModel);
+            Log.i(TAG,String.format("鍙栧埌鐐硅�楁椂=%d姣,绾跨▼鍙�=%d",System.currentTimeMillis()-qudianTime,Thread.currentThread().getId()));
+            if (carNew == null) return;
+            if (once){
+                Message message = Message.obtain();
+                message.what = MSG_CAR;
+
+                message.obj = carNew;
+                mHandler.sendMessage(message);
+
+            }
+
+
+
+
+
+
+        }
+
+
+        long period= System.currentTimeMillis()-time;
+        Log.i(TAG,"鎵цaddGraphicLayer鏂规硶锛岃�楁椂="+period);
+
+
+
+    }
+
+    private GraphicsOverlay addGraphicsOverlay(MapView mapView){
+        //create the graphics overlay
+        GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
+        mGraphicsOverlay_body = new GraphicsOverlay();
+        //add the overlay to the map view
+        mapView.getGraphicsOverlays().add(mGraphicsOverlay_body);
+        mapView.getGraphicsOverlays().add(graphicsOverlay);
+        return graphicsOverlay;
+    }
+    private void readGisCar() {
+
+        String carFilePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+_mActivity.getPackageName()+"/lianfang_giscar.json";
+        if (TextUtils.isEmpty(carFilePath)){
+            MyLog.i (TAG, "GISCar杞﹁締妯″瀷鏂囦欢涓嶅瓨鍦�");
+            return ;
+        }
+        byte[] fileContentBytes= FileUtil.readFile(carFilePath);
+        if (fileContentBytes !=null&&fileContentBytes.length>0){
+            String buffer= new String(fileContentBytes);
+            gisCarModel = new Gson().fromJson(buffer, GisCarModel.class);
+        }else{
+            return;
+        }
+
+
+    }
+
+
+
+    PointCollection points1 = new PointCollection(SpatialReference.create(4544));
+    PointCollection points2 = new PointCollection(SpatialReference.create(4544));
+    PointCollection points3 = new PointCollection(SpatialReference.create(4544));
+    PointCollection points4 = new PointCollection(SpatialReference.create(4544));
+    SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(232,0,0), 0.5f);
+    SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.argb(255,232,0,0), lineSymbol);
+
+    SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.WHITE, 5);
+    SimpleFillSymbol simpleFillSymbolGls = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.argb(255,0,0,0), lineSymbolGls);
+    private void drawGlses(List<safeluck.drive.evaluation.bean.Point> carNew,  GisCarModel gisCarModel) {
+
+        if(gisCarModel== null){
+            return;
+        }
+        long beginTime = System.currentTimeMillis();
+
+
+/**==============================car body=========================================*/
+
+        List<Integer> bodys =gisCarModel.getBody();
+        points.clear();
+        for (int i = 0; i <bodys.size(); i++) {
+            points.add(carNew.get(bodys.get(i)).getX(),carNew.get(bodys.get(i)).getY());
+        }
+
+        Polygon polygon = new Polygon(points);
+
+        Graphic graphic = new Graphic(polygon,simpleFillSymbol);
+
+
+
+        /**===============================car body end========================================*/
+
+
+/**==============================鐢诲ぉ绾�=========================================*/
+
+
+//        Graphic graphicAnt = new Graphic(new Point(startX,startY), simpleMarkerSymbol);
+
+        /**==============================鐢诲ぉ绾跨粨鏉� END=========================================*/
+
+
+
+        List<Integer> leftCenterGls = gisCarModel.getLeft_center_glass();
+        points1.clear();
+        for (int i = 0; i < leftCenterGls.size(); i++) {
+            int pos = leftCenterGls.get(i);
+            points1.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+        List<Integer> rightCenterGls = gisCarModel.getRight_center_glass();
+        points2.clear();
+        for (int i = 0; i < rightCenterGls.size(); i++) {
+            int pos = rightCenterGls.get(i);
+            points2.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+
+
+                List<Integer> frontCLs = new ArrayList<>();
+        frontCLs.addAll(gisCarModel.getLeft_front_glass());
+        frontCLs.addAll(gisCarModel.getRight_front_glass());
+
+
+        points3.clear();
+        for (int i = 0; i < frontCLs.size(); i++) {
+            int pos = frontCLs.get(i);
+            points3.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+                frontCLs.clear();
+        frontCLs.addAll(gisCarModel.getLeft_rear_glass());
+        frontCLs.addAll(gisCarModel.getRight_rear_glass());
+        points4.clear();
+        for (int i = 0; i < frontCLs.size(); i++) {
+            int pos = frontCLs.get(i);
+            points4.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+        Polygon polygon1 = new Polygon(points1);
+        Polygon polygon2 = new Polygon(points2);
+        Polygon polygon3 = new Polygon(points3);
+        Polygon polygon4 = new Polygon(points4);
+
+
+        //create graphics
+
+        Graphic buoyGraphic1 = new Graphic(polygon1, simpleFillSymbolGls);
+        Graphic buoyGraphic2 = new Graphic(polygon2, simpleFillSymbolGls);
+        Graphic buoyGraphic3 = new Graphic(polygon3, simpleFillSymbolGls);
+        Graphic buoyGraphic4 = new Graphic(polygon4, simpleFillSymbolGls);
+        //add the graphics to the graphics overlay
+        /**==============================娓呴櫎GraphicsOverlay涓婃墍鏈塯raphic=========================================*/
+        long clearTime = System.currentTimeMillis();
+
+
+        mGraphicsOverlay.getGraphics().clear();
+        Log.i(TAG,"clear鏂规硶鏃堕棿+"+(System.currentTimeMillis()-clearTime));
+        /**==============================娓呴櫎GraphicsOverlay涓婃墍鏈塯raphic   END=========================================*/
+
+        mGraphicsOverlay.getGraphics().add(buoyGraphic1);
+        mGraphicsOverlay.getGraphics().add(buoyGraphic2);
+        mGraphicsOverlay.getGraphics().add(buoyGraphic3);
+        mGraphicsOverlay.getGraphics().add(buoyGraphic4);
+        mGraphicsOverlay_body.getGraphics().clear();
+        mGraphicsOverlay_body.getGraphics().add(graphic);
+//        mGraphicsOverlay.getGraphics().add(graphicAnt);
+        Log.i(TAG,"GraphicsOverLay add graphic瀹屾垚"+(System.currentTimeMillis()-beginTime));
+        if (mMapView != null){
+            mMapView.setViewpointCenterAsync(new Point(startX,startY));
+
+        }
+
+
+
+
+    }
+
+    /**
+     * 缁樺埗闈�
+     */
+    private void drawPolygon() {
+//        List<Point> points = new ArrayList<>();
+//        points.add(new Point(21.21,21.32, SpatialReference.create("4544")));
+//        PointCollection pointCollection = new PointCollection(points);
+
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+
+                mGraphicsOverlay.getGraphics().clear();
+                Point point = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                mPointCollection.add(point);
+
+                Polygon polygon = new Polygon(mPointCollection);
+
+                if (mPointCollection.size() == 1) {
+                    SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+                    Graphic pointGraphic = new Graphic(point, simpleMarkerSymbol);
+                    mGraphicsOverlay.getGraphics().add(pointGraphic);
+                }
+
+                SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.GREEN, 3.0f);
+                SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.parseColor("#33e97676"), lineSymbol);
+                Graphic graphic = new Graphic(polygon, simpleFillSymbol);
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+    /**
+     * 缁樺埗鐐�
+     */
+    private void drawPoint() {
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                Point clickPoint = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 20);
+                Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+                //娓呴櫎涓婁竴涓偣
+                mGraphicsOverlay.getGraphics().clear();
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                //浣跨敤娓叉煋鍣�
+                //                Graphic graphic1 = new Graphic(clickPoint);
+                //                SimpleRenderer simpleRenderer = new SimpleRenderer(simpleMarkerSymbol);
+                //                mGraphicsOverlay.setRenderer(simpleRenderer);
+                //                mGraphicsOverlay.getGraphics().clear();
+                //                mGraphicsOverlay.getGraphics().add(graphic1);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+    /**
+     * 缁樺埗绾�
+     */
+    private void drawPolyline() {
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                Point point = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                mPointCollection.add(point);
+
+                Polyline polyline = new Polyline(mPointCollection);
+
+                //鐐�
+                SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+                Graphic pointGraphic = new Graphic(point, simpleMarkerSymbol);
+                mGraphicsOverlay.getGraphics().add(pointGraphic);
+
+                //绾�
+                SimpleLineSymbol simpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.parseColor("#FC8145"), 3);
+                Graphic graphic = new Graphic(polyline, simpleLineSymbol);
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+
+
+    @Override
+    public void onPause() {
+        if (mMapView != null) {
+            mMapView.pause();
+        }
+        super.onPause();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (mMapView != null) {
+            mMapView.resume();
+        }
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        if (mMapView != null) {
+            mMapView.dispose();
+        }
+        Log.i(TAG,"娓呯┖闃熷垪");
+        flag = false;
+        producer.shutdown();
+        consumer .shutdown();
+        queue.clear();
+        CEventCenter.onBindEvent(false,icEventListener, Constant.BIND_RTK_INFO_MAP);
+        CEventCenter.onBindEvent(false,icEventListener1, Constant.BIND_EXAM_STATUS_TOPIC);
+
+
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        CEventCenter.onBindEvent(true,icEventListener,Constant.BIND_RTK_INFO_MAP);
+        CEventCenter.onBindEvent(true,icEventListener1,Constant.BIND_EXAM_STATUS_TOPIC);
+    }
+
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentVTPK.java b/app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentVTPK.java
new file mode 100644
index 0000000..7e7d37c
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/ArcGisMapFragmentVTPK.java
@@ -0,0 +1,590 @@
+package safeluck.drive.evaluation.fragment;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.anyun.basecommonlib.MyLog;
+import com.esri.arcgisruntime.data.TileCache;
+import com.esri.arcgisruntime.geometry.Point;
+import com.esri.arcgisruntime.geometry.PointCollection;
+import com.esri.arcgisruntime.geometry.Polygon;
+import com.esri.arcgisruntime.geometry.Polyline;
+import com.esri.arcgisruntime.geometry.SpatialReference;
+import com.esri.arcgisruntime.layers.ArcGISMapImageLayer;
+import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
+import com.esri.arcgisruntime.layers.ArcGISVectorTiledLayer;
+import com.esri.arcgisruntime.mapping.ArcGISMap;
+import com.esri.arcgisruntime.mapping.Basemap;
+import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
+import com.esri.arcgisruntime.mapping.view.Graphic;
+import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
+import com.esri.arcgisruntime.mapping.view.MapView;
+import com.esri.arcgisruntime.symbology.SimpleFillSymbol;
+import com.esri.arcgisruntime.symbology.SimpleLineSymbol;
+import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
+import com.google.gson.Gson;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import me.yokeyword.fragmentation.SupportFragment;
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.exam_status.ExamStatus;
+import safeluck.drive.evaluation.R;
+import safeluck.drive.evaluation.bean.ExamPlatformData;
+import safeluck.drive.evaluation.bean.GisCarModel;
+import safeluck.drive.evaluation.bean.RTKInfoBean;
+import safeluck.drive.evaluation.cEventCenter.CEventCenter;
+import safeluck.drive.evaluation.cEventCenter.ICEventListener;
+import safeluck.drive.evaluation.util.CThreadPoolExecutor;
+import safeluck.drive.evaluation.util.FileUtil;
+import safeluck.drive.evaluation.util.Utils;
+
+/**椹炬牎淇℃伅UI
+ * MyApplication2
+ * Created by lzw on 2019/3/20. 11:22:39
+ * 閭锛�632393724@qq.com
+ * All Rights Saved! Chongqing AnYun Tech co. LTD
+ */
+public class ArcGisMapFragmentVTPK extends SupportFragment implements View.OnClickListener {
+
+    private static final String TAG = ArcGisMapFragmentVTPK.class.getSimpleName();
+    private static final int ENTER = 1;//杩涘叆 绉戜簩鏌愪釜椤圭洰鍦板浘
+
+    private LinkedBlockingQueue queue = new LinkedBlockingQueue(100);
+    private ExecutorService consumer = Executors.newSingleThreadExecutor();
+    private ExecutorService producer = Executors.newSingleThreadExecutor();
+    SimpleLineSymbol lineSymbolGls = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLACK, 0.5f);
+
+
+    PointCollection points = new PointCollection(SpatialReference.create(4544));
+    private Gson gson = new Gson();
+    private ICEventListener icEventListener = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+
+
+
+
+                producer.execute(()->{
+                    String json = (String)obj;
+                    Log.i(TAG,String.format("褰撳墠绾跨▼鍙�%d,json=%s",Thread.currentThread().getId(),json));
+                    RTKInfoBean rtkInfoBean = gson.fromJson(json,RTKInfoBean.class);
+                    queue.offer(rtkInfoBean);
+                });
+
+//                MyLog.i(TAG,"澶勭悊瀹�11.鏃堕棿="+Utils.formatTimeYYMMDDHHmmSSSSS(System.currentTimeMillis()));
+
+
+        }
+    };
+    private ICEventListener icEventListener1 = new ICEventListener() {
+        @Override
+        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
+            if (msgCode==13){
+                ExamStatus examStatus = (ExamStatus)obj;
+                if (examStatus.getMap_id()>-1){
+                    if (examStatus.getEnter()==ENTER){
+                        MyLog.i(TAG,String.format("杩涘叆[%d] map",examStatus.getMap_id()));
+                        double scale = mMapView.getMapScale();
+                        mMapView.setViewpointScaleAsync(scale * 0.2*0.2);
+                    }else{
+                        MyLog.i(TAG,String.format("閫�鍑篬%d] map",examStatus.getMap_id()));
+                        double scale = mMapView.getMapScale();
+                        mMapView.setViewpointScaleAsync(scale * 5*5);
+                    }
+                }
+            }
+        }
+    };
+
+    public static SupportFragment newInstance(String s){
+        ArcGisMapFragmentVTPK jiaXiaoFragment = new ArcGisMapFragmentVTPK();
+        Bundle bundle = new Bundle();
+        bundle.putString("arcgis_url",s);
+        jiaXiaoFragment.setArguments(bundle);
+        return jiaXiaoFragment;
+    }
+
+
+    private MapView mMapView ;
+    private static final int MSG_CAR = 100;
+    double yaw = 0;
+
+    GraphicsOverlay mGraphicsOverlay;
+    GraphicsOverlay mGraphicsOverlay_body;
+    private double startY = 428882,startX = 3291858;
+    private Handler mHandler = new Handler(){
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what){
+                case MSG_CAR:
+
+                    List<safeluck.drive.evaluation.bean.Point> newCarPoints = (List<safeluck.drive.evaluation.bean.Point>) msg.obj;
+                    Log.i(TAG,"handle message newcarPoints.size="+newCarPoints.size());
+                    drawGlses(newCarPoints,gisCarModel);
+
+                    break;
+            }
+        }
+    };
+
+    PointCollection mPointCollection = new PointCollection(SpatialReference.create(4544));
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+
+
+        View view = inflater.inflate(R.layout.layout_arc_gis,container,false);
+        mMapView = view.findViewById(R.id.mapView);
+        view.findViewById(R.id.btn_change_map).setOnClickListener(this);
+        Log.i(TAG,String.format("褰撳墠绾跨▼鍙�%d,json=%s",Thread.currentThread().getId(),"onCreateView"));
+        url = getArguments().getString("arcgis_url");
+        CThreadPoolExecutor.runInBackground(()->{
+
+            readGisCar();
+
+
+        });
+        consumer.execute(new CalRunnable());
+
+        setupMap();
+
+
+//        addTrailheadsLayer();
+
+
+
+        url = Environment.getExternalStorageDirectory().getAbsolutePath()+"/ArcGISTileVectorMine.vtpk";
+        Log.i(TAG,"url ========="+url);
+        ArcGISVectorTiledLayer arcGISTiledLayer = new ArcGISVectorTiledLayer (url);
+        Basemap basemap = new Basemap(arcGISTiledLayer);
+        ArcGISMap arcGISMap = new ArcGISMap(basemap);
+        mMapView.setMap(arcGISMap);
+
+        return view;
+    }
+
+
+
+    RTKInfoBean rtkInfoBean;
+    boolean flag = true;
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()){
+            case R.id.btn_change_map:
+                if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){
+                    RoadDriveMapFragmentab jiaXiaoFragment = findFragment(RoadDriveMapFragmentab.class);
+                    if (jiaXiaoFragment == null) {
+                        jiaXiaoFragment = (RoadDriveMapFragmentab) RoadDriveMapFragmentab.newInstance();
+                    }
+                    startWithPop(jiaXiaoFragment);
+                }else{
+                    MapFragment jiaXiaoFragment = findFragment(MapFragment.class);
+                    if (jiaXiaoFragment == null) {
+                        jiaXiaoFragment = (MapFragment) MapFragment.newInstance();
+                    }
+                    startWithPop(jiaXiaoFragment);
+                }
+
+
+                break;
+        }
+    }
+
+    class CalRunnable implements Runnable{
+
+        @Override
+        public void run() {
+            while (flag){
+
+
+                rtkInfoBean = (RTKInfoBean)queue.poll();
+                if (rtkInfoBean != null){
+                    Log.i(TAG,String.format("鍙栧嚭涓�涓紝queue.size=%d,rtkinfo=%s,绾跨▼鍙�=%d",queue.size(),rtkInfoBean.toString(),Thread.currentThread().getId()));
+                    yaw = rtkInfoBean.getHeading();
+                    startX = rtkInfoBean.getCoord_y();
+                    startY = rtkInfoBean.getCoord_x();
+
+
+                addGraphicLayer(yaw,startX,startY);
+
+
+
+                }
+
+            }
+
+        }
+    }
+
+
+
+
+
+
+
+
+    private void setupMap() {
+        if (mMapView != null) {
+
+
+            mGraphicsOverlay = addGraphicsOverlay(mMapView);
+
+        }
+    }
+String url ;
+    private void addTrailheadsLayer() {
+        if (!TextUtils.isEmpty(url)){
+            Log.i(TAG,"map_url="+url);
+            final ArcGISMapImageLayer mapImageLayer = new ArcGISMapImageLayer(url);
+            // create an empty map instance
+            ArcGISMap map = new ArcGISMap();
+            Log.i(TAG,String.format("map.getMiniScale=%f",map.getMinScale()));
+            map.setMinScale(1000.0);
+            // add map image layer as operational layer
+            map.getOperationalLayers().add(mapImageLayer);
+            mMapView.setMap(map);
+        }else{
+            Toast.makeText(_mActivity, "url涓虹┖", Toast.LENGTH_SHORT).show();
+        }
+
+
+
+    }
+
+
+
+    GisCarModel gisCarModel;
+    boolean once =true;
+    private void addGraphicLayer(double yaw,double x,double y){
+        Log.i(TAG,"addgraphicLayer寮�濮�");
+        long time = System.currentTimeMillis();
+
+
+
+        if (gisCarModel != null){
+
+
+            long  qudianTime = System.currentTimeMillis();
+            List<safeluck.drive.evaluation.bean.Point> carNew =Utils.getCarPoint(0,yaw,new safeluck.drive.evaluation.bean.Point(x,y),gisCarModel);
+            Log.i(TAG,String.format("鍙栧埌鐐硅�楁椂=%d姣,绾跨▼鍙�=%d",System.currentTimeMillis()-qudianTime,Thread.currentThread().getId()));
+            if (carNew == null) return;
+            if (once){
+                Message message = Message.obtain();
+                message.what = MSG_CAR;
+
+                message.obj = carNew;
+                mHandler.sendMessage(message);
+
+            }
+
+
+
+
+
+
+        }
+
+
+        long period= System.currentTimeMillis()-time;
+        Log.i(TAG,"鎵цaddGraphicLayer鏂规硶锛岃�楁椂="+period);
+
+
+
+    }
+
+    private GraphicsOverlay addGraphicsOverlay(MapView mapView){
+        //create the graphics overlay
+        GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
+        mGraphicsOverlay_body = new GraphicsOverlay();
+        //add the overlay to the map view
+        mapView.getGraphicsOverlays().add(mGraphicsOverlay_body);
+        mapView.getGraphicsOverlays().add(graphicsOverlay);
+        return graphicsOverlay;
+    }
+    private void readGisCar() {
+
+        String carFilePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+_mActivity.getPackageName()+"/giscar.json";
+        if (TextUtils.isEmpty(carFilePath)){
+            MyLog.i (TAG, "GISCar杞﹁締妯″瀷鏂囦欢涓嶅瓨鍦�");
+            return ;
+        }
+        byte[] fileContentBytes= FileUtil.readFile(carFilePath);
+        if (fileContentBytes !=null&&fileContentBytes.length>0){
+            String buffer= new String(fileContentBytes);
+            gisCarModel = new Gson().fromJson(buffer, GisCarModel.class);
+        }else{
+            return;
+        }
+
+
+    }
+
+
+
+    PointCollection points1 = new PointCollection(SpatialReference.create(4544));
+    PointCollection points2 = new PointCollection(SpatialReference.create(4544));
+    PointCollection points3 = new PointCollection(SpatialReference.create(4544));
+    PointCollection points4 = new PointCollection(SpatialReference.create(4544));
+    SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.rgb(232,0,0), 0.5f);
+    SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.argb(255,232,0,0), lineSymbol);
+
+    SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.WHITE, 5);
+    SimpleFillSymbol simpleFillSymbolGls = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.argb(255,0,0,0), lineSymbolGls);
+    private void drawGlses(List<safeluck.drive.evaluation.bean.Point> carNew,  GisCarModel gisCarModel) {
+
+        if(gisCarModel== null){
+            return;
+        }
+        long beginTime = System.currentTimeMillis();
+
+
+/**==============================car body=========================================*/
+
+        List<Integer> bodys =gisCarModel.getBody();
+        points.clear();
+        for (int i = 0; i <bodys.size(); i++) {
+            points.add(carNew.get(bodys.get(i)).getX(),carNew.get(bodys.get(i)).getY());
+        }
+
+        Polygon polygon = new Polygon(points);
+
+        Graphic graphic = new Graphic(polygon,simpleFillSymbol);
+
+
+
+        /**===============================car body end========================================*/
+
+
+/**==============================鐢诲ぉ绾�=========================================*/
+
+
+//        Graphic graphicAnt = new Graphic(new Point(startX,startY), simpleMarkerSymbol);
+
+        /**==============================鐢诲ぉ绾跨粨鏉� END=========================================*/
+
+
+
+        List<Integer> leftCenterGls = gisCarModel.getLeft_center_glass();
+        points1.clear();
+        for (int i = 0; i < leftCenterGls.size(); i++) {
+            int pos = leftCenterGls.get(i);
+            points1.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+        List<Integer> rightCenterGls = gisCarModel.getRight_center_glass();
+        points2.clear();
+        for (int i = 0; i < leftCenterGls.size(); i++) {
+            int pos = rightCenterGls.get(i);
+            points2.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+
+
+                List<Integer> frontCLs = new ArrayList<>();
+        frontCLs.addAll(gisCarModel.getLeft_front_glass());
+        frontCLs.addAll(gisCarModel.getRight_front_glass());
+
+
+        points3.clear();
+        for (int i = 0; i < frontCLs.size(); i++) {
+            int pos = frontCLs.get(i);
+            points3.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+                frontCLs.clear();
+        frontCLs.addAll(gisCarModel.getLeft_rear_glass());
+        frontCLs.addAll(gisCarModel.getRight_rear_glass());
+        points4.clear();
+        for (int i = 0; i < frontCLs.size(); i++) {
+            int pos = frontCLs.get(i);
+            points4.add(carNew.get(pos).getX(), carNew.get(pos).getY());
+
+        }
+        Polygon polygon1 = new Polygon(points1);
+        Polygon polygon2 = new Polygon(points2);
+        Polygon polygon3 = new Polygon(points3);
+        Polygon polygon4 = new Polygon(points4);
+
+
+        //create graphics
+
+        Graphic buoyGraphic1 = new Graphic(polygon1, simpleFillSymbolGls);
+        Graphic buoyGraphic2 = new Graphic(polygon2, simpleFillSymbolGls);
+        Graphic buoyGraphic3 = new Graphic(polygon3, simpleFillSymbolGls);
+        Graphic buoyGraphic4 = new Graphic(polygon4, simpleFillSymbolGls);
+        //add the graphics to the graphics overlay
+        /**==============================娓呴櫎GraphicsOverlay涓婃墍鏈塯raphic=========================================*/
+        long clearTime = System.currentTimeMillis();
+
+
+        mGraphicsOverlay.getGraphics().clear();
+        Log.i(TAG,"clear鏂规硶鏃堕棿+"+(System.currentTimeMillis()-clearTime));
+        /**==============================娓呴櫎GraphicsOverlay涓婃墍鏈塯raphic   END=========================================*/
+
+        mGraphicsOverlay.getGraphics().add(buoyGraphic1);
+        mGraphicsOverlay.getGraphics().add(buoyGraphic2);
+        mGraphicsOverlay.getGraphics().add(buoyGraphic3);
+        mGraphicsOverlay.getGraphics().add(buoyGraphic4);
+        mGraphicsOverlay_body.getGraphics().clear();
+        mGraphicsOverlay_body.getGraphics().add(graphic);
+//        mGraphicsOverlay.getGraphics().add(graphicAnt);
+        Log.i(TAG,"GraphicsOverLay add graphic瀹屾垚"+(System.currentTimeMillis()-beginTime));
+//        if (mMapView != null){
+//            mMapView.setViewpointCenterAsync(new Point(startX,startY));
+//        }
+
+
+
+
+    }
+
+    /**
+     * 缁樺埗闈�
+     */
+    private void drawPolygon() {
+//        List<Point> points = new ArrayList<>();
+//        points.add(new Point(21.21,21.32, SpatialReference.create("4544")));
+//        PointCollection pointCollection = new PointCollection(points);
+
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+
+                mGraphicsOverlay.getGraphics().clear();
+                Point point = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                mPointCollection.add(point);
+
+                Polygon polygon = new Polygon(mPointCollection);
+
+                if (mPointCollection.size() == 1) {
+                    SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+                    Graphic pointGraphic = new Graphic(point, simpleMarkerSymbol);
+                    mGraphicsOverlay.getGraphics().add(pointGraphic);
+                }
+
+                SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.GREEN, 3.0f);
+                SimpleFillSymbol simpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.parseColor("#33e97676"), lineSymbol);
+                Graphic graphic = new Graphic(polygon, simpleFillSymbol);
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+    /**
+     * 缁樺埗鐐�
+     */
+    private void drawPoint() {
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                Point clickPoint = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 20);
+                Graphic graphic = new Graphic(clickPoint, simpleMarkerSymbol);
+                //娓呴櫎涓婁竴涓偣
+                mGraphicsOverlay.getGraphics().clear();
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                //浣跨敤娓叉煋鍣�
+                //                Graphic graphic1 = new Graphic(clickPoint);
+                //                SimpleRenderer simpleRenderer = new SimpleRenderer(simpleMarkerSymbol);
+                //                mGraphicsOverlay.setRenderer(simpleRenderer);
+                //                mGraphicsOverlay.getGraphics().clear();
+                //                mGraphicsOverlay.getGraphics().add(graphic1);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+    /**
+     * 缁樺埗绾�
+     */
+    private void drawPolyline() {
+        mMapView.setOnTouchListener(new DefaultMapViewOnTouchListener(_mActivity, mMapView) {
+            @Override
+            public boolean onSingleTapConfirmed(MotionEvent e) {
+                Point point = mMapView.screenToLocation(new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())));
+                mPointCollection.add(point);
+
+                Polyline polyline = new Polyline(mPointCollection);
+
+                //鐐�
+                SimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.RED, 10);
+                Graphic pointGraphic = new Graphic(point, simpleMarkerSymbol);
+                mGraphicsOverlay.getGraphics().add(pointGraphic);
+
+                //绾�
+                SimpleLineSymbol simpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.parseColor("#FC8145"), 3);
+                Graphic graphic = new Graphic(polyline, simpleLineSymbol);
+                mGraphicsOverlay.getGraphics().add(graphic);
+
+                return super.onSingleTapConfirmed(e);
+            }
+        });
+    }
+
+
+
+    @Override
+    public void onPause() {
+        if (mMapView != null) {
+            mMapView.pause();
+        }
+        super.onPause();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (mMapView != null) {
+            mMapView.resume();
+        }
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        if (mMapView != null) {
+            mMapView.dispose();
+        }
+        Log.i(TAG,"娓呯┖闃熷垪");
+        flag = false;
+        producer.shutdown();
+        consumer .shutdown();
+        queue.clear();
+        CEventCenter.onBindEvent(false,icEventListener, Constant.BIND_RTK_INFO_MAP);
+        CEventCenter.onBindEvent(false,icEventListener1, Constant.BIND_EXAM_STATUS_TOPIC);
+
+
+    }
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        CEventCenter.onBindEvent(true,icEventListener,Constant.BIND_RTK_INFO_MAP);
+        CEventCenter.onBindEvent(true,icEventListener1,Constant.BIND_EXAM_STATUS_TOPIC);
+    }
+
+}

--
Gitblit v1.8.0