From 32275aa66faa5371467e291b7d19a5e782f8aade Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期三, 18 十二月 2024 16:47:18 +0800 Subject: [PATCH] 1.修改取水口坐标相关代码 --- app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 233 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 182 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java index 61e1fa0..9266ffb 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -17,11 +17,13 @@ import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; +import android.widget.RelativeLayout; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Observer; +import com.dayu.pipirrapp.MyApplication; import com.dayu.pipirrapp.R; import com.dayu.pipirrapp.activity.AddIssueActivity; import com.dayu.pipirrapp.bean.db.CenterPointBean; @@ -68,6 +70,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.schedulers.Schedulers; @@ -90,9 +93,8 @@ MapFragmenObserver mapFragmenObserver; //褰撳墠宸℃璁板綍鐨勭浉鍏充俊鎭� public InspectionBean mInspectionBean; + //鏈�鍚庝竴娆″畾浣嶇殑鍧愭爣 LatLonBean lastLatLonBean; - InspectionRequest inspectionRequest; - // volatile boolean isHaseAginData = false; //web鏄惁鍔犺浇瀹屾垚 volatile boolean webViewIsFinished = false; List<InspectionLocationBean> aginShowlocationBeans; @@ -100,6 +102,9 @@ List<MarkerBean> webNoFinishMarkerData = new ArrayList<>(); //鎵�鏈夌殑Marker鏁版嵁閿负marker鐨処d Map<String, MarkerBean> markerBeanSet = new HashMap<>(); + //涓績鐐瑰潗鏍� + public double centerLng; + public double centerLat; @Override public void onAttach(@NonNull Context context) { @@ -242,41 +247,43 @@ @Override public void onNext(BaseResponse<MarkerListResult> t) { if (t.isSuccess()) { - if (t.isSuccess()) { - if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) { - List<MarkerBean> markerBeans = new ArrayList<>(); - for (int i = 0; i < t.getContent().getObj().size(); i++) { - MarkerResult result = t.getContent().getObj().get(i); - //淇濆瓨鏁版嵁 - MarkerBean markerBean = new MarkerBean(); - markerBean.setId(result.getId()); - markerBean.setLng(result.getLng()); - markerBean.setLat(result.getLat()); - markerBean.setBlockId(result.getBlockId()); - markerBean.setName(result.getName()); - markerBean.setRemarks(result.getRemarks()); - markerBean.setTownId(result.getTownId()); - markerBean.setVillageId(result.getVillageId()); - markerBean.setCountyId(result.getCountyId()); - markerBean.setAddress(result.getAddress()); - markerBean.setBlockName(result.getBlockName()); - markerBeans.add(markerBean); - setMapMarker(markerBean); - } - DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll(); - // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁 - DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans) - .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛� - .observeOn(AndroidSchedulers.mainThread()) // 鍦ㄤ富绾跨▼涓婅瀵� - .subscribe(() -> { - // 鎻掑叆鎴愬姛 - Log.i("mWebView", "鏁版嵁鎻掑叆鎴愬姛"); - }, throwable -> { - // 鎻掑叆澶辫触 - Log.e("mWebView", "鏁版嵁鎻掑叆澶辫触: " + throwable.getMessage()); - }); - } + + if (t.getContent().getObj() != null && !t.getContent().getObj().isEmpty()) { + + List<MarkerBean> markerBeans = t.getContent().getObj().stream() + .map(result -> { + MarkerBean markerBean = new MarkerBean(); + markerBean.setId(result.getId()); + markerBean.setLng(result.getLng()); + markerBean.setLat(result.getLat()); + markerBean.setBlockId(result.getBlockId()); + markerBean.setName(result.getName()); + markerBean.setRemarks(result.getRemarks()); + markerBean.setTownId(result.getTownId()); + markerBean.setVillageId(result.getVillageId()); + markerBean.setCountyId(result.getCountyId()); + markerBean.setAddress(result.getAddress()); + markerBean.setBlockName(result.getBlockName()); + markerBean.setDivideId(result.getDivideId()); + setMapMarker(markerBean); + return markerBean; + }) + .collect(Collectors.toList()); + + DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll(); + // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁 + DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans) + .subscribeOn(Schedulers.io()) // 鍦� IO 绾跨▼涓婃墽琛� + .observeOn(AndroidSchedulers.mainThread()) // 鍦ㄤ富绾跨▼涓婅瀵� + .subscribe(() -> { + // 鎻掑叆鎴愬姛 + Log.i("mWebView", "鏁版嵁鎻掑叆鎴愬姛"); + }, throwable -> { + // 鎻掑叆澶辫触 + Log.e("mWebView", "鏁版嵁鎻掑叆澶辫触: " + throwable.getMessage()); + }); } + } else { ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg()); } @@ -287,7 +294,6 @@ void initView() { - //宸℃鎸夐挳 binding.inspectButton.setOnClickListener(v -> { @@ -333,16 +339,8 @@ MyLog.i(data); MarkerBean markerBean = markerBeanSet.get(data); if (markerBean != null) { - binding.bottomLL.setVisibility(View.VISIBLE); - binding.markerAddress.setText(markerBean.getAddress()); - binding.markerName.setText(markerBean.getName()); - binding.markerBlockName.setText(markerBean.getBlockName()); - binding.lat.setText(markerBean.getLat()); - binding.lng.setText(markerBean.getLng()); - binding.editePoint.setOnClickListener(v -> { - mWebView.evaluateJavascript("javascript:showPin()", value -> { - }); - }); + setWebViewParams(false); + getInstakeDetail(markerBean); } } @@ -352,7 +350,7 @@ * 鑾峰彇鍦板浘涓績鐐� */ private void getCenterPoint() { - ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/base/dict_item/map_center", CenterPointResult.class, null, new SubscriberListener<BaseResponse<CenterPointResult>>() { + ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/base/dict_item/map_center", CenterPointResult.class, null, new SubscriberListener<BaseResponse<CenterPointResult>>() { @Override public void onNext(BaseResponse<CenterPointResult> t) { if (t.isSuccess()) { @@ -380,6 +378,7 @@ * 涓婃姤宸℃璁板綍 */ private void pushLocationData(InspectionLocationBean inspectionLocationBean) { + InspectionRequest inspectionRequest = InspectionRequest.getInstance(); inspectionRequest.setInspectId(inspectionLocationBean.getInspectId()); inspectionRequest.setInspectorId(mInspectionBean.getInspectorId()); if (mInspectionBean != null) { @@ -392,7 +391,6 @@ track.setLat(inspectionLocationBean.getLat()); track.setLng(inspectionLocationBean.getLng()); track.setLocateTime(inspectionLocationBean.getLocateTime()); - inspectionRequest.getTracks().clear(); inspectionRequest.addTracks(track); ApiManager.getInstance().requestPostHideLoading(MapFragment.this.getContext(), BASE_URL + "/app/inspect/save", InsectionResult.class, inspectionRequest.toMap(inspectionRequest), new SubscriberListener<BaseResponse<List<InsectionResult>>>() { @Override @@ -558,7 +556,6 @@ public void setMapMarker(MarkerBean markerBean) { if (markerBean != null) { if (webViewIsFinished) { - Log.i("mWebView", "addMarker????????????"); mWebView.evaluateJavascript("javascript:addMarker(\"" + markerBean.getId() + "\",\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { @@ -586,7 +583,6 @@ binding.inspectPause.setText("鏆傚仠"); binding.stateText.setText("宸插紑鍚贰妫�"); binding.inspectRL.setBackgroundColor(this.getContext().getResources().getColor(R.color.base_blue)); - inspectionRequest = new InspectionRequest(); SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.STAT_INSPECTION); ServiceUtils.startLocationService(MapFragment.this.getContext(), false); } @@ -629,4 +625,139 @@ e.printStackTrace(); } } + + /** + * 鎺ユ敹js浼犳潵鐨勪腑蹇冪偣鍧愭爣 + * + * @param lng + * @param lat + */ + public void refreshCenterPoint(double lng, double lat) { + centerLng = lng; + centerLat = lat; + binding.pointText.setText(centerLng + "锛�" + centerLat); + } + + /** + * 淇敼缁忕含搴� + * + * @param markerBean + */ + private void updataInstake(MarkerBean markerBean) { + String lng = String.valueOf(centerLng); + String lat = String.valueOf(centerLat); + Map<String, Object> params = new HashMap<>(); + params.put("id", markerBean.getId()); + params.put("lng", lng); + params.put("lat", lat); + params.put("operator", MyApplication.myApplication.userId); + + ApiManager.getInstance().requestPost(MapFragment.this.getContext(), BASE_URL + "/project/intake/updateIntakeLngLat", Boolean.class, params, new SubscriberListener<BaseResponse<Boolean>>() { + @Override + public void onNext(BaseResponse<Boolean> t) { + try { + if (t.isSuccess()) { + mWebView.evaluateJavascript("javascript:refreshMarker(\"" + markerBean.getId() + "\",\"" + centerLng + "\",\"" + centerLat + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() { + @Override + public void onReceiveValue(String value) { + } + }); + binding.pointCenterImg.setVisibility(View.GONE); + binding.pointRL.setVisibility(View.GONE); + binding.lng.setText(lng); + binding.lat.setText(lat); + mWebView.evaluateJavascript("javascript:cancelPin()", value -> { + }); + ToastUtil.showToastLong(MapFragment.this.getContext(), "淇敼鎴愬姛锛�"); + + } else { + ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg()); + } + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + + } + }); + } + + /** + * 鑾峰彇鍙栨按鍙h鎯� + * + * @param markerBean + */ + private void getInstakeDetail(MarkerBean markerBean) { + Map<String, Object> params = new HashMap<>(); + params.put("id", markerBean.getId()); + ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/project/intake/one", MarkerResult.class, params, new SubscriberListener<BaseResponse<MarkerResult>>() { + @Override + public void onNext(BaseResponse<MarkerResult> t) { + if (t.isSuccess()) { + MarkerResult result = t.getContent(); + MarkerBean markerBean = new MarkerBean(); + markerBean.setId(result.getId()); + markerBean.setLng(result.getLng()); + markerBean.setLat(result.getLat()); + markerBean.setBlockId(result.getBlockId()); + markerBean.setName(result.getName()); + markerBean.setRemarks(result.getRemarks()); + markerBean.setTownId(result.getTownId()); + markerBean.setVillageId(result.getVillageId()); + markerBean.setCountyId(result.getCountyId()); + markerBean.setAddress(result.getAddress()); + markerBean.setBlockName(result.getBlockName()); + markerBean.setDivideId(result.getDivideId()); + showMarker(markerBean); + } else { + ToastUtil.showToast(MapFragment.this.getContext(), t.getMsg()); + } + } + + }); + } + + private void showMarker(MarkerBean markerBean) { + binding.bottomLL.setVisibility(View.VISIBLE); + binding.markerAddress.setText(markerBean.getAddress()); + binding.markerName.setText(markerBean.getName()); + binding.markerBlockName.setText(markerBean.getBlockName()); + binding.lat.setText(markerBean.getLat()); + binding.lng.setText(markerBean.getLng()); + //淇敼缁忕含搴� + binding.editePoint.setOnClickListener(v -> { + mWebView.evaluateJavascript("javascript:showPin(\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\")", value -> { + }); + binding.pointRL.setVisibility(View.VISIBLE); + binding.pointCenterImg.setVisibility(View.VISIBLE); + setWebViewParams(true); + }); + //鍙栨秷淇敼缁忕含搴� + binding.pointCancel.setOnClickListener(v -> { + binding.pointCenterImg.setVisibility(View.GONE); + binding.pointRL.setVisibility(View.GONE); + mWebView.evaluateJavascript("javascript:cancelPin()", value -> { + }); + } + ); + //纭淇敼缁忕含搴� + binding.pointEdt.setOnClickListener(v -> { + ConfirmDialog confirmDialog = new ConfirmDialog(MapFragment.this.getActivity(), "纭淇敼鍒拌浣嶇疆鍚楋紵", (confirmDialog1, v1) -> { + confirmDialog1.dismiss(); + updataInstake(markerBean); + }); + confirmDialog.show(); + }); + } + + private void setWebViewParams(boolean isAbove) { + RelativeLayout.LayoutParams paramsAnotherView = new RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.MATCH_PARENT, + RelativeLayout.LayoutParams.MATCH_PARENT); + if (isAbove) { + paramsAnotherView.addRule(RelativeLayout.ABOVE, binding.bottomLL.getId()); + } + binding.webViewRL.setLayoutParams(paramsAnotherView); + } + } -- Gitblit v1.8.0