From 7a1caa42ad3282ff22513785fa997953e084b188 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 16 十二月 2024 15:50:31 +0800 Subject: [PATCH] 1.修改app的Icon。 2.优化取水口加载本地数据,改为异步加载。 3.添加取水口点击后显示取水口信息。 4.美化登录界面。 --- app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 161 +++++++++++++++++++++++++---------------------------- 1 files changed, 75 insertions(+), 86 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 fb357d8..986247b 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -35,13 +35,14 @@ import com.dayu.pipirrapp.bean.net.MarkerResult; import com.dayu.pipirrapp.dao.DaoSingleton; import com.dayu.pipirrapp.databinding.FragmentMapBinding; -import com.dayu.pipirrapp.js.MyWebViewInterface; +import com.dayu.pipirrapp.tool.MyWebViewInterface; import com.dayu.pipirrapp.net.ApiManager; import com.dayu.pipirrapp.net.BaseResponse; import com.dayu.pipirrapp.net.Constants; import com.dayu.pipirrapp.net.subscribers.SubscriberListener; import com.dayu.pipirrapp.observer.MapFragmenObserver; import com.dayu.pipirrapp.tool.InspectionUtils; +import com.dayu.pipirrapp.tool.MarkerUtils; import com.dayu.pipirrapp.utils.CommonData; import com.dayu.pipirrapp.utils.CommonKeyName; import com.dayu.pipirrapp.utils.DateUtils; @@ -63,8 +64,9 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; -import java.util.Random; +import java.util.Map; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.schedulers.Schedulers; @@ -82,7 +84,6 @@ WebView mWebView; CenterPointBean centerPointBean; - String strMarkerJson; //褰撳墠宸℃鐘舵�� int mInspectionState; MapFragmenObserver mapFragmenObserver; @@ -90,9 +91,13 @@ public InspectionBean mInspectionBean; LatLonBean lastLatLonBean; InspectionRequest inspectionRequest; - volatile boolean isHaseAginData = false; + // volatile boolean isHaseAginData = false; volatile boolean webViewIsFinished = false; List<InspectionLocationBean> aginShowlocationBeans; + //web鍔犺浇鏃剁綉椤佃繕娌″姞杞藉畬鏃剁殑鏁版嵁 + List<MarkerBean> webNoFinishMarkerData = new ArrayList<>(); + //鎵�鏈夌殑Marker鏁版嵁閿负marker鐨処d + Map<String, MarkerBean> markerBeanSet = new HashMap<>(); @Override public void onAttach(@NonNull Context context) { @@ -130,14 +135,9 @@ mWebView.loadUrl("file:///android_asset/index.html"); getCenterPoint(); initView(); - initLocalData(); + getMarkerData(); - //鏄剧ず宸℃鐘舵�佸苟涓旀樉绀哄洜鎰忓鍏抽棴鐨勫巻鍙叉暟鎹� - switch (mInspectionState) { - case InspectionUtils.STAT_INSPECTION: - case InspectionUtils.PAUSE_INSPECTION: - InspectionUtils.aginShowLocation(MapFragment.this); - } + chageInspecState(mInspectionState); return binding.getRoot(); } @@ -155,36 +155,23 @@ * 鍒濆鍖栨湰鍦版暟鎹� */ public void initLocalData() { + //璺宠浆涓績鐐� centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst(); - List<MarkerBean> markerBeans = DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().findAll(); - strMarkerJson = WebViewUtils.beanToJson(markerBeans); jumpCenterPoint(); - setMapMarker(); - } - - - /** - * 璺宠浆鍦板浘涓績鐐� - */ - public void jumpCenterPoint() { - if (centerPointBean != null) { - Log.d(TAG, "jumpCenterPoint>>>>>>>>>>>>>>>>>>>" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat()); - mWebView.evaluateJavascript("javascript:setCenterAndZoom(\"" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat() + "\",\"" + centerPointBean.getZoomMp() + "\")", value -> { - }); - } - } - - /** - * 娣诲姞鏍囨敞鐐� - */ - public void setMapMarker() { - Log.i("mWebView", "addMarker????????????" + strMarkerJson); - mWebView.evaluateJavascript("javascript:addMarker(\"" + strMarkerJson + "\")", new ValueCallback<String>() { - @Override - public void onReceiveValue(String value) { - Log.i("mWebView", "addMarker锛侊紒锛侊紒锛侊紒锛侊紒锛�" + value); + //娣诲姞鍥爓ebview娌℃湁鍔犺浇瀹屾垚瀵艰嚧娌℃湁娣诲姞鐨勫湴鍥炬爣娉� + if (!webNoFinishMarkerData.isEmpty()) { + for (MarkerBean bean : webNoFinishMarkerData) { + setMapMarker(bean); } - }); + } + //鏄剧ず鎵�鏈夊彇姘村彛 + MarkerUtils.showLocoMarks(MapFragment.this); + //鏄剧ず宸℃鐘舵�佸苟涓旀樉绀哄洜鎰忓鍏抽棴鐨勫巻鍙叉暟鎹� + switch (mInspectionState) { + case InspectionUtils.STAT_INSPECTION: + case InspectionUtils.PAUSE_INSPECTION: + InspectionUtils.aginShowLocation(MapFragment.this); + } } @@ -203,6 +190,7 @@ MarkerResult.Obj 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()); @@ -211,10 +199,11 @@ 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); } - strMarkerJson = WebViewUtils.beanToJson(markerBeans); - setMapMarker(); DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll(); // 浣跨敤 RxJava 寮傛鎻掑叆鏁版嵁 DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans) @@ -234,43 +223,6 @@ } } - }); - } - - - /** - * 娣诲姞鏍囨敞鐐� - */ - public void addMarker() { - Random random = new Random(); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("["); - - // 涓浗缁忕含搴﹁寖鍥� - double minLongitude = 73.43; - double maxLongitude = 135.05; - double minLatitude = 3.52; - double maxLatitude = 53.57; - - for (int i = 0; i < 1000; i++) { - stringBuilder.append("["); - // 鐢熸垚闅忔満缁忓害 - double longitude = minLongitude + (maxLongitude - minLongitude) * random.nextDouble(); - stringBuilder.append(longitude); - stringBuilder.append(","); - // 鐢熸垚闅忔満绾害 - double latitude = minLatitude + (maxLatitude - minLatitude) * random.nextDouble(); - stringBuilder.append(latitude); - stringBuilder.append(",\"237鍙栨按鍙"],"); - } - stringBuilder.append("[116.417854,39.921988,\"235鍙栨按鍙"]]"); - String jsonData = stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\""); - Log.i("mWebView", "addMarker????????????" + jsonData); - mWebView.evaluateJavascript("javascript:addMarker(\"" + jsonData + "\")", new ValueCallback<String>() { - @Override - public void onReceiveValue(String value) { - Log.i("mWebView", "addMarker锛侊紒锛侊紒锛侊紒锛侊紒锛�" + value); - } }); } @@ -335,11 +287,11 @@ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); - webViewIsFinished = true; //椤甸潰鍔犺浇瀹屾垚 - if (isHaseAginData) { - aginShowLocation(null); - } + webViewIsFinished = true; + initLocalData(); + aginShowLocation(null); + } }); //宸℃鎸夐挳 @@ -378,7 +330,14 @@ public void showWaterIntakeDetail(String data) { MyLog.i(data); - binding.bottomLL.setVisibility(View.VISIBLE); + 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()); + } + } @@ -558,7 +517,6 @@ * 鎰忓閫�鍑哄悗缁х画鏄剧ず涔嬪墠鐨勫潗鏍� */ public void aginShowLocation(List<InspectionLocationBean> locationBeans) { - isHaseAginData = true; if (locationBeans != null) { aginShowlocationBeans = locationBeans; } @@ -570,15 +528,46 @@ }); } // 鍚� WebView 娉ㄥ叆鏁版嵁 - aginShowlocationBeans.clear(); - } - } } /** + * 璺宠浆鍦板浘涓績鐐� + */ + public void jumpCenterPoint() { + if (webViewIsFinished) { + if (centerPointBean != null) { + Log.d(TAG, "jumpCenterPoint>>>>>>>>>>>>>>>>>>>" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat()); + mWebView.evaluateJavascript("javascript:setCenterAndZoom(\"" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat() + "\",\"" + centerPointBean.getZoomMp() + "\")", value -> { + }); + } + } + } + + /** + * 娣诲姞鏍囨敞鐐� + */ + 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) { + } + }); + markerBeanSet.put(markerBean.getId(), markerBean); + + } else { + webNoFinishMarkerData.add(markerBean); + } + } + } + + + /** * 寮�濮嬪贰妫�鐨勭浉鍏抽�昏緫 * * @param -- Gitblit v1.8.0