From 6060b1e0c4a3cd4396eabc25634aaff45959e360 Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期六, 25 七月 2020 20:18:19 +0800 Subject: [PATCH] 加入对远程服务的监听 --- app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java | 94 ++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 84 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java index 454809f..942bbb6 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/JiaXiaoFragment.java @@ -1,21 +1,25 @@ package safeluck.drive.evaluation.fragment; +import android.content.Context; import android.graphics.Color; import android.os.Bundle; 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.esri.arcgisruntime.ArcGISRuntimeEnvironment; import com.esri.arcgisruntime.arcgisservices.ArcGISMapServiceInfo; +import com.esri.arcgisruntime.concurrent.ListenableFuture; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.geometry.PointCollection; @@ -55,14 +59,23 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import me.yokeyword.fragmentation.SupportFragment; +import safeluck.drive.evaluation.Constant; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.app; +import safeluck.drive.evaluation.arcgis.MapSingleTapListener; +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; @@ -74,10 +87,37 @@ * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class JiaXiaoFragment extends SupportFragment { + + private static final String TAG = JiaXiaoFragment.class.getSimpleName(); + + + + private Gson gson = new Gson(); + private ICEventListener icEventListener = new ICEventListener() { + @Override + public void onCEvent(String topic, int msgCode, int resultCode, Object obj) { + + synchronized (JiaXiaoFragment.class){ + String json = (String)obj; + Log.i(TAG,String.format("褰撳墠绾跨▼鍙�%d,json=%s",Thread.currentThread().getId(),json)); + RTKInfoBean rtkInfoBean = gson.fromJson(json,RTKInfoBean.class); + Log.i(TAG,String.format("CThreadPoolExecutor,褰撳墠绾跨▼鍙�%d,Coord_x=%f,Coord_y=%f", + Thread.currentThread().getId(),rtkInfoBean.getCoord_x(),rtkInfoBean + .getCoord_y())); + yaw = rtkInfoBean.getHeading(); + startX = rtkInfoBean.getCoord_y(); + startY = rtkInfoBean.getCoord_x(); + addGraphicLayer(yaw,startX,startY); + } + + + } + }; + public static SupportFragment newInstance(){ return new JiaXiaoFragment(); } - private static final String TAG = JiaXiaoFragment.class.getSimpleName(); + private MapView mMapView ; private static final int MSG_CAR = 100; @@ -108,13 +148,14 @@ View view = inflater.inflate(R.layout.layout_arc_gis,container,false); mMapView = view.findViewById(R.id.mapView); + Log.i(TAG,String.format("褰撳墠绾跨▼鍙�%d,json=%s",Thread.currentThread().getId(),"onCreateView")); setupMap(); addTrailheadsLayer(); -// addImageLayer(); + addGraphicLayer(0,startX,startY); - mHandler.sendEmptyMessageDelayed(MSG_CAR,1000); +// mHandler.sendEmptyMessageDelayed(MSG_CAR,1000); -// drawPolygon(); + return view; } private SublayerList mSublayersList; @@ -130,9 +171,11 @@ } private void addTrailheadsLayer() { - +//涓�瀹氫笉鑳藉皯浜嗘渶鍚庣殑 / String url = "http://192.168.0.47:6080/arcgis/rest/services/%E5%9C%9F%E4%B8%BB%E8%80%83%E5%9C%BA/MapServer/"; +// String url = "http://192.168.0.47:6080/arcgis/rest/services/test/MapServer/"; +// String url = "http://192.168.0.47:6080/arcgis/rest/services/Testmap_3/MapServer/"; ArcGISMapImageLayer arcGISMapImageLayer = new ArcGISMapImageLayer(url); arcGISMapImageLayer.loadAsync(); arcGISMapImageLayer.addLoadStatusChangedListener(loadStatusChangedEvent -> { @@ -141,6 +184,7 @@ Log.i(TAG,"ServiceFeatureTables size = "+tables.size()); for (int i = tables.size()-1; i >= 0; i--) { +// for (int i =0; i < tables.size(); i++) { ServiceFeatureTable serviceFeatureTable = new ServiceFeatureTable(url+String.valueOf(i)); FeatureLayer featureLayer = new FeatureLayer(serviceFeatureTable); @@ -150,8 +194,23 @@ } }); - + final ListenableFuture<Boolean> viewPointSetFuture = mMapView.setViewpointRotationAsync(90); + viewPointSetFuture.addDoneListener(() -> { + try{ + boolean completed = viewPointSetFuture.get(); + if (completed){ + Log.i(TAG,"Rotation completed successfully"); + } + }catch (InterruptedException e){ + Log.i(TAG,"Rotation Interrupted"); + }catch (ExecutionException e){ + + } + }); + + + mMapView.setOnTouchListener(new MapSingleTapListener(getContext(),mMapView)); } @@ -161,13 +220,18 @@ 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); PointCollection points = new PointCollection(SpatialReference.create(4544)); + String carFilePath = ExamPlatformData.getInstance().getCarModelPath(); + if (TextUtils.isEmpty(carFilePath)){ + Toast.makeText(_mActivity, "杞﹁締妯″瀷鏂囦欢涓嶅瓨鍦�", Toast.LENGTH_SHORT).show(); + return; + } CThreadPoolExecutor.runInBackground(new Runnable() { @Override public void run() { - StringBuffer buffer= FileUtil.readAssetTxtFile(app.getAppContext(),"giscar.json"); - Log.i(TAG,"giscar="+buffer.toString()); - GisCarModel gisCarModel= new Gson().fromJson(buffer.toString(),GisCarModel.class); -// List<safeluck.drive.evaluation.bean.Point> carNew=Utils.getCarPoint(0,45,new safeluck.drive.evaluation.bean.Point(-8633.77199999988,14471.793700000271)); + byte[] fileContentBytes=FileUtil.readFile(carFilePath); + String buffer= new String(fileContentBytes); +// Log.i(TAG,"giscar="+buffer); + GisCarModel gisCarModel= new Gson().fromJson(buffer,GisCarModel.class); List<safeluck.drive.evaluation.bean.Point> carNew=Utils.getCarPoint(0,yaw,new safeluck.drive.evaluation.bean.Point(x,y)); List<Integer> bodys =gisCarModel.getBody(); for (int i = 0; i <bodys.size(); i++) { @@ -189,6 +253,9 @@ drawPoint(new Point(x,y)); + if (mMapView != null){ + mMapView.setViewpointCenterAsync(new Point(x,y)); + } } }); @@ -415,6 +482,13 @@ if (mMapView != null) { mMapView.dispose(); } + CEventCenter.onBindEvent(false,icEventListener, Constant.BIND_RTK_INFO_MAP); super.onDetach(); } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + CEventCenter.onBindEvent(true,icEventListener,Constant.BIND_RTK_INFO_MAP); + } } -- Gitblit v1.8.0