diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 811875b..7cf0217 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -2,6 +2,8 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.text.TextUtils; import android.util.Log; @@ -42,6 +44,7 @@ import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -68,9 +71,8 @@ private CaseHandleListPresenterImpl caseHandleListPresenter; private CaseVerifyPresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; - private ListenableList overlayGraphics; + private ListenableList graphics; private ListenableList graphicsOverlays; - private GraphicsOverlay mGraphicsOverlay; @Override public int initLayoutView() { @@ -92,7 +94,7 @@ @Override public void initData() { mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(36000);//数字越大,放大比例越小,缩放比例[36000,250] + mapView.setViewpointScaleAsync(64000); ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 @@ -120,8 +122,6 @@ caseHandleListPresenter.onReadyRetrofitRequest(null, null, 1000, 1); //Marker相关Layer - mGraphicsOverlay = new GraphicsOverlay(); - overlayGraphics = mGraphicsOverlay.getGraphics(); graphicsOverlays = mapView.getGraphicsOverlays(); } @@ -132,10 +132,26 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); + return true; + } + + @Override + public void onLongPress(MotionEvent e) { + super.onLongPress(e); +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "onLongPress: " + clickPoint); + } + + @Override + public void onShowPress(MotionEvent e) { + super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); Point clickPoint = mapView.screenToLocation(screenPoint); - - return true; + Log.d(TAG, "onShowPress: " + clickPoint); } }); } @@ -194,19 +210,22 @@ @Override public void obtainCaseHandleList(CaseHandleBean resultBean) { // Log.d(TAG, "obtainCaseHandleList: " + new Gson().toJson(resultBean)); + clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { Log.d(TAG, "案卷经纬度异常"); - break; + continue; } Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_HANDLE); + pointList.add(point); } + addPictureMarker(pointList, Constant.CASE_HANDLE); } else { ToastHelper.showToast("当前没有[处理中]的案卷", ToastHelper.ERROR); } @@ -214,84 +233,96 @@ } /** - * 待核查 - */ - @Override - public void obtainCheckListResult(CaseCheckBean resultBean) { -// Log.d(TAG, "obtainCheckListResult: " + new Gson().toJson(resultBean)); - if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); - if (rowsBeans.size() >= 1) { - for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { - String lng = bean.getLng(); - String lat = bean.getLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "案卷经纬度异常"); - break; - } - Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_CHECK); - } - } else { - ToastHelper.showToast("当前没有[待核查]的案卷", ToastHelper.ERROR); - } - } - } - - /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); + clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { Log.d(TAG, "案卷经纬度异常"); - break; + continue; } Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_VERIFY); + pointList.add(point); } + addPictureMarker(pointList, Constant.CASE_VERIFY); } else { ToastHelper.showToast("当前没有[待核实]的案卷", ToastHelper.ERROR); } } } - private void addPictureMarker(Point point, int caseStatus) { - if (overlayGraphics != null && graphicsOverlays != null) { - overlayGraphics.clear(); - graphicsOverlays.clear(); + /** + * 待核查 + */ + @Override + public void obtainCheckListResult(CaseCheckBean resultBean) { +// Log.d(TAG, "obtainCheckListResult: " + new Gson().toJson(resultBean)); + clearPictureMarker(); + if (resultBean.isSuccess()) { + List rowsBeans = resultBean.getData().getRows(); + if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); + for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { + String lng = bean.getLng(); + String lat = bean.getLat(); + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "案卷经纬度异常"); + continue; + } + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); + pointList.add(point); + } + addPictureMarker(pointList, Constant.CASE_CHECK); + } else { + ToastHelper.showToast("当前没有[待核查]的案卷", ToastHelper.ERROR); + } } - BitmapDrawable caseDrawable; + } + + private void addPictureMarker(List points, int caseStatus) { + Bitmap caseBitmap; switch (caseStatus) { case Constant.CASE_HANDLE: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_handle); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_handle); break; case Constant.CASE_VERIFY: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_verify); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); break; case Constant.CASE_CHECK: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_check); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_check); break; default: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_case); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_case); break; } - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); + for (Point point : points) { + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setHeight(24); + pictureMarker.setWidth(24); + pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - Graphic graphic = new Graphic(point, pictureMarker); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); + GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); + graphics = graphicsOverlay.getGraphics(); + graphics.add(new Graphic(point, pictureMarker)); + graphicsOverlays.add(graphicsOverlay); + } + } + + private void clearPictureMarker() { + if (graphics != null && graphicsOverlays != null) { + graphics.clear(); + graphicsOverlays.clear(); + } } protected void onResume() { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 811875b..7cf0217 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -2,6 +2,8 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.text.TextUtils; import android.util.Log; @@ -42,6 +44,7 @@ import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -68,9 +71,8 @@ private CaseHandleListPresenterImpl caseHandleListPresenter; private CaseVerifyPresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; - private ListenableList overlayGraphics; + private ListenableList graphics; private ListenableList graphicsOverlays; - private GraphicsOverlay mGraphicsOverlay; @Override public int initLayoutView() { @@ -92,7 +94,7 @@ @Override public void initData() { mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(36000);//数字越大,放大比例越小,缩放比例[36000,250] + mapView.setViewpointScaleAsync(64000); ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 @@ -120,8 +122,6 @@ caseHandleListPresenter.onReadyRetrofitRequest(null, null, 1000, 1); //Marker相关Layer - mGraphicsOverlay = new GraphicsOverlay(); - overlayGraphics = mGraphicsOverlay.getGraphics(); graphicsOverlays = mapView.getGraphicsOverlays(); } @@ -132,10 +132,26 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); + return true; + } + + @Override + public void onLongPress(MotionEvent e) { + super.onLongPress(e); +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "onLongPress: " + clickPoint); + } + + @Override + public void onShowPress(MotionEvent e) { + super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); Point clickPoint = mapView.screenToLocation(screenPoint); - - return true; + Log.d(TAG, "onShowPress: " + clickPoint); } }); } @@ -194,19 +210,22 @@ @Override public void obtainCaseHandleList(CaseHandleBean resultBean) { // Log.d(TAG, "obtainCaseHandleList: " + new Gson().toJson(resultBean)); + clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { Log.d(TAG, "案卷经纬度异常"); - break; + continue; } Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_HANDLE); + pointList.add(point); } + addPictureMarker(pointList, Constant.CASE_HANDLE); } else { ToastHelper.showToast("当前没有[处理中]的案卷", ToastHelper.ERROR); } @@ -214,84 +233,96 @@ } /** - * 待核查 - */ - @Override - public void obtainCheckListResult(CaseCheckBean resultBean) { -// Log.d(TAG, "obtainCheckListResult: " + new Gson().toJson(resultBean)); - if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); - if (rowsBeans.size() >= 1) { - for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { - String lng = bean.getLng(); - String lat = bean.getLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "案卷经纬度异常"); - break; - } - Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_CHECK); - } - } else { - ToastHelper.showToast("当前没有[待核查]的案卷", ToastHelper.ERROR); - } - } - } - - /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); + clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { Log.d(TAG, "案卷经纬度异常"); - break; + continue; } Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_VERIFY); + pointList.add(point); } + addPictureMarker(pointList, Constant.CASE_VERIFY); } else { ToastHelper.showToast("当前没有[待核实]的案卷", ToastHelper.ERROR); } } } - private void addPictureMarker(Point point, int caseStatus) { - if (overlayGraphics != null && graphicsOverlays != null) { - overlayGraphics.clear(); - graphicsOverlays.clear(); + /** + * 待核查 + */ + @Override + public void obtainCheckListResult(CaseCheckBean resultBean) { +// Log.d(TAG, "obtainCheckListResult: " + new Gson().toJson(resultBean)); + clearPictureMarker(); + if (resultBean.isSuccess()) { + List rowsBeans = resultBean.getData().getRows(); + if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); + for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { + String lng = bean.getLng(); + String lat = bean.getLat(); + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "案卷经纬度异常"); + continue; + } + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); + pointList.add(point); + } + addPictureMarker(pointList, Constant.CASE_CHECK); + } else { + ToastHelper.showToast("当前没有[待核查]的案卷", ToastHelper.ERROR); + } } - BitmapDrawable caseDrawable; + } + + private void addPictureMarker(List points, int caseStatus) { + Bitmap caseBitmap; switch (caseStatus) { case Constant.CASE_HANDLE: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_handle); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_handle); break; case Constant.CASE_VERIFY: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_verify); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); break; case Constant.CASE_CHECK: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_check); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_check); break; default: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_case); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_case); break; } - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); + for (Point point : points) { + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setHeight(24); + pictureMarker.setWidth(24); + pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - Graphic graphic = new Graphic(point, pictureMarker); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); + GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); + graphics = graphicsOverlay.getGraphics(); + graphics.add(new Graphic(point, pictureMarker)); + graphicsOverlays.add(graphicsOverlay); + } + } + + private void clearPictureMarker() { + if (graphics != null && graphicsOverlays != null) { + graphics.clear(); + graphicsOverlays.clear(); + } } protected void onResume() { diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 26d9b6f..1ae7b82 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -45,6 +45,8 @@ public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; + public static final double DELTA_LNG_10 = 0.00002536; // 10米范围经度值偏移量(大约) + public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String IP_KEY = "BASE_IP"; public static final String LOGIN_OUT_ACTION = "loginOut"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java index 811875b..7cf0217 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseOnMapActivity.java @@ -2,6 +2,8 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.text.TextUtils; import android.util.Log; @@ -42,6 +44,7 @@ import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -68,9 +71,8 @@ private CaseHandleListPresenterImpl caseHandleListPresenter; private CaseVerifyPresenterImpl caseVerifyPresenter; private CaseCheckPresenterImpl caseCheckPresenter; - private ListenableList overlayGraphics; + private ListenableList graphics; private ListenableList graphicsOverlays; - private GraphicsOverlay mGraphicsOverlay; @Override public int initLayoutView() { @@ -92,7 +94,7 @@ @Override public void initData() { mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(36000);//数字越大,放大比例越小,缩放比例[36000,250] + mapView.setViewpointScaleAsync(64000); ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); //创建底图、并设置底图图层 @@ -120,8 +122,6 @@ caseHandleListPresenter.onReadyRetrofitRequest(null, null, 1000, 1); //Marker相关Layer - mGraphicsOverlay = new GraphicsOverlay(); - overlayGraphics = mGraphicsOverlay.getGraphics(); graphicsOverlays = mapView.getGraphicsOverlays(); } @@ -132,10 +132,26 @@ mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { @Override public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); + return true; + } + + @Override + public void onLongPress(MotionEvent e) { + super.onLongPress(e); +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "onLongPress: " + clickPoint); + } + + @Override + public void onShowPress(MotionEvent e) { + super.onShowPress(e); android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); Point clickPoint = mapView.screenToLocation(screenPoint); - - return true; + Log.d(TAG, "onShowPress: " + clickPoint); } }); } @@ -194,19 +210,22 @@ @Override public void obtainCaseHandleList(CaseHandleBean resultBean) { // Log.d(TAG, "obtainCaseHandleList: " + new Gson().toJson(resultBean)); + clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); for (CaseHandleBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { Log.d(TAG, "案卷经纬度异常"); - break; + continue; } Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_HANDLE); + pointList.add(point); } + addPictureMarker(pointList, Constant.CASE_HANDLE); } else { ToastHelper.showToast("当前没有[处理中]的案卷", ToastHelper.ERROR); } @@ -214,84 +233,96 @@ } /** - * 待核查 - */ - @Override - public void obtainCheckListResult(CaseCheckBean resultBean) { -// Log.d(TAG, "obtainCheckListResult: " + new Gson().toJson(resultBean)); - if (resultBean.isSuccess()) { - List rowsBeans = resultBean.getData().getRows(); - if (rowsBeans.size() >= 1) { - for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { - String lng = bean.getLng(); - String lat = bean.getLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "案卷经纬度异常"); - break; - } - Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_CHECK); - } - } else { - ToastHelper.showToast("当前没有[待核查]的案卷", ToastHelper.ERROR); - } - } - } - - /** * 待核实 */ @Override public void obtainVerifyListResult(CaseVerifyBean resultBean) { Log.d(TAG, "obtainVerifyListResult: " + new Gson().toJson(resultBean)); + clearPictureMarker(); if (resultBean.isSuccess()) { List rowsBeans = resultBean.getData().getRows(); if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); for (CaseVerifyBean.DataBean.RowsBean bean : rowsBeans) { String lng = bean.getLng(); String lat = bean.getLat(); if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { Log.d(TAG, "案卷经纬度异常"); - break; + continue; } Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); - addPictureMarker(point, Constant.CASE_VERIFY); + pointList.add(point); } + addPictureMarker(pointList, Constant.CASE_VERIFY); } else { ToastHelper.showToast("当前没有[待核实]的案卷", ToastHelper.ERROR); } } } - private void addPictureMarker(Point point, int caseStatus) { - if (overlayGraphics != null && graphicsOverlays != null) { - overlayGraphics.clear(); - graphicsOverlays.clear(); + /** + * 待核查 + */ + @Override + public void obtainCheckListResult(CaseCheckBean resultBean) { +// Log.d(TAG, "obtainCheckListResult: " + new Gson().toJson(resultBean)); + clearPictureMarker(); + if (resultBean.isSuccess()) { + List rowsBeans = resultBean.getData().getRows(); + if (rowsBeans.size() >= 1) { + List pointList = new ArrayList<>(); + for (CaseCheckBean.DataBean.RowsBean bean : rowsBeans) { + String lng = bean.getLng(); + String lat = bean.getLat(); + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "案卷经纬度异常"); + continue; + } + Point point = new Point(Double.parseDouble(lng), Double.parseDouble(lat), mapView.getSpatialReference()); + pointList.add(point); + } + addPictureMarker(pointList, Constant.CASE_CHECK); + } else { + ToastHelper.showToast("当前没有[待核查]的案卷", ToastHelper.ERROR); + } } - BitmapDrawable caseDrawable; + } + + private void addPictureMarker(List points, int caseStatus) { + Bitmap caseBitmap; switch (caseStatus) { case Constant.CASE_HANDLE: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_handle); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_handle); break; case Constant.CASE_VERIFY: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_verify); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); break; case Constant.CASE_CHECK: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_check); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_check); break; default: - caseDrawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.mipmap.location_case); + caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_case); break; } - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); + for (Point point : points) { + BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); + PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); + pictureMarker.setHeight(24); + pictureMarker.setWidth(24); + pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - Graphic graphic = new Graphic(point, pictureMarker); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); + GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); + graphics = graphicsOverlay.getGraphics(); + graphics.add(new Graphic(point, pictureMarker)); + graphicsOverlays.add(graphicsOverlay); + } + } + + private void clearPictureMarker() { + if (graphics != null && graphicsOverlays != null) { + graphics.clear(); + graphicsOverlays.clear(); + } } protected void onResume() { diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 26d9b6f..1ae7b82 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -45,6 +45,8 @@ public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; + public static final double DELTA_LNG_10 = 0.00002536; // 10米范围经度值偏移量(大约) + public static final double DELTA_LAT_10 = 0.00002256;// 10米范围纬度值偏移量(大约) public static final String IP_KEY = "BASE_IP"; public static final String LOGIN_OUT_ACTION = "loginOut"; diff --git a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java index ae0af17..2f4fd65 100644 --- a/app/src/main/java/com/casic/dcms/utils/OtherUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/OtherUtils.java @@ -64,16 +64,4 @@ } return ""; } - - public static String obtainPhoneInfo(Context context) { - TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - StringBuilder sb = new StringBuilder(); - - sb.append("\nDeviceID(IMEI)" + telephony.getDeviceId()); - if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { - return ""; - } - - return sb.toString(); - } }