From 2fb397e4a31d14880ed2524f898ae67a0d664c06 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期二, 17 十二月 2024 11:24:29 +0800 Subject: [PATCH] 1.在地图中心显示中心点。 2.优化地图覆盖物显示,使显示的图标正对坐标。 3.优化地图覆盖物文字居中显示。 --- app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java | 160 +++++++++++++++++++++++++++------------------------- 1 files changed, 83 insertions(+), 77 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 986247b..61e1fa0 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java @@ -32,6 +32,7 @@ import com.dayu.pipirrapp.bean.net.CenterPointResult; import com.dayu.pipirrapp.bean.net.InsectionResult; import com.dayu.pipirrapp.bean.net.InspectionRequest; +import com.dayu.pipirrapp.bean.net.MarkerListResult; import com.dayu.pipirrapp.bean.net.MarkerResult; import com.dayu.pipirrapp.dao.DaoSingleton; import com.dayu.pipirrapp.databinding.FragmentMapBinding; @@ -92,6 +93,7 @@ LatLonBean lastLatLonBean; InspectionRequest inspectionRequest; // volatile boolean isHaseAginData = false; + //web鏄惁鍔犺浇瀹屾垚 volatile boolean webViewIsFinished = false; List<InspectionLocationBean> aginShowlocationBeans; //web鍔犺浇鏃剁綉椤佃繕娌″姞杞藉畬鏃剁殑鏁版嵁 @@ -135,20 +137,77 @@ mWebView.loadUrl("file:///android_asset/index.html"); getCenterPoint(); initView(); - + initWeb(); getMarkerData(); chageInspecState(mInspectionState); return binding.getRoot(); } + private void initWeb() { + mWebView.setWebViewClient(new WebViewClient() { + @Override + public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { + String url = request.getUrl().toString(); + //鍒ゆ柇褰撳墠鏄惁涓哄姞杞界摝鐗� + if (MapJpgUtils.getInsatance().isTianDiTuTileRequest(url)) { + String androidUrl = url.replace(CommonData.webKey, CommonData.androidKey); + // 妫�鏌ユ湰鍦扮紦瀛� + File cachedTile = MapJpgUtils.getInsatance().getCachedTile(androidUrl); + if (cachedTile != null && cachedTile.exists()) { +// Log.d(TAG, "鏈湴缂撳瓨>>>" + androidUrl); +// if (MapJpgUtils.getInsatance().validateImageFile(androidUrl,request.)) + // 鍒ゆ柇缂撳瓨鏄惁杩囨湡 +// if (!MapJpgUtils.getInsatance(MapFragment.this.getContext()).isCacheExpired(cachedTile)) { + try { + // 浠庣紦瀛樺姞杞界摝鐗� + return new WebResourceResponse("image/jpg", "utf-8", new FileInputStream(cachedTile)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } +// } + } else { + //涓嬭浇鐡︾墖 + ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl); + } - /** - * 鍒濆鍖栧悇涓姸鎬� - */ - private void initState() { - //寮�鍚畾浣� + } + + return super.shouldInterceptRequest(view, request); + } + + @Override + public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { + super.onReceivedError(view, request, error); + // 鎹曡幏鍔犺浇杩囩▼涓彂鐢熺殑閿欒 + int errorCode = error.getErrorCode(); + String description = error.getDescription().toString(); + String failingUrl = request.getUrl().toString(); + Log.e("setWebViewClient", "errorCode:" + errorCode + ">>>>description:" + description + ">>>>failingUrl:" + failingUrl); + // 澶勭悊閿欒锛屼緥濡傛樉绀洪敊璇〉闈㈡垨鎻愮ず鐢ㄦ埛 + } + + @Override + public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { + super.onReceivedHttpError(view, request, errorResponse); + // 鎹曡幏HTTP閿欒锛堝404, 500绛夛級 + int statusCode = errorResponse.getStatusCode(); + String description = errorResponse.getReasonPhrase(); + Log.e("setWebViewClient", "statusCode:" + statusCode + ">>>>description:" + description); + // 鏍规嵁HTTP鐘舵�佺爜澶勭悊閿欒 + } + + @Override + public void onPageFinished(WebView view, String url) { + super.onPageFinished(view, url); + //椤甸潰鍔犺浇瀹屾垚 + webViewIsFinished = true; + initLocalData(); + aginShowLocation(null); + + } + }); } /** @@ -179,15 +238,15 @@ * 鑾峰彇鍙栨按鍙e垪琛� */ private void getMarkerData() { - ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/project/intake/all", MarkerResult.class, null, new SubscriberListener<BaseResponse<MarkerResult>>() { + ApiManager.getInstance().requestGetHideLoading(this.getContext(), Constants.BASE_URL + "/project/intake/all", MarkerListResult.class, null, new SubscriberListener<BaseResponse<MarkerListResult>>() { @Override - public void onNext(BaseResponse<MarkerResult> t) { + 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.Obj result = t.getContent().getObj().get(i); + MarkerResult result = t.getContent().getObj().get(i); //淇濆瓨鏁版嵁 MarkerBean markerBean = new MarkerBean(); markerBean.setId(result.getId()); @@ -229,71 +288,7 @@ void initView() { - mWebView.setWebViewClient(new WebViewClient() { - @Override - public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { - String url = request.getUrl().toString(); -// Log.d(TAG, "鍔犺浇鍦板潃>>>" + url); - //鍒ゆ柇褰撳墠鏄惁涓哄姞杞界摝鐗� - if (MapJpgUtils.getInsatance().isTianDiTuTileRequest(url)) { - String androidUrl = url.replace(CommonData.webKey, CommonData.androidKey); - // 妫�鏌ユ湰鍦扮紦瀛� - File cachedTile = MapJpgUtils.getInsatance().getCachedTile(androidUrl); - if (cachedTile != null && cachedTile.exists()) { -// Log.d(TAG, "鏈湴缂撳瓨>>>" + androidUrl); -// if (MapJpgUtils.getInsatance().validateImageFile(androidUrl,request.)) - // 鍒ゆ柇缂撳瓨鏄惁杩囨湡 -// if (!MapJpgUtils.getInsatance(MapFragment.this.getContext()).isCacheExpired(cachedTile)) { - try { - // 浠庣紦瀛樺姞杞界摝鐗� - return new WebResourceResponse("image/jpg", "utf-8", new FileInputStream(cachedTile)); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } -// } - } else { - //涓嬭浇鐡︾墖 - ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl); - } -// Log.d(TAG, "鍦ㄧ嚎鍔犺浇>>>" + url); - } - - return super.shouldInterceptRequest(view, request); - } - - @Override - public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { - super.onReceivedError(view, request, error); - // 鎹曡幏鍔犺浇杩囩▼涓彂鐢熺殑閿欒 - int errorCode = error.getErrorCode(); - String description = error.getDescription().toString(); - String failingUrl = request.getUrl().toString(); - Log.e("setWebViewClient", "errorCode:" + errorCode + ">>>>description:" + description + ">>>>failingUrl:" + failingUrl); - // 澶勭悊閿欒锛屼緥濡傛樉绀洪敊璇〉闈㈡垨鎻愮ず鐢ㄦ埛 - // view.loadUrl("file:///android_asset/error.html"); - } - - @Override - public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { - super.onReceivedHttpError(view, request, errorResponse); - // 鎹曡幏HTTP閿欒锛堝404, 500绛夛級 - int statusCode = errorResponse.getStatusCode(); - String description = errorResponse.getReasonPhrase(); - Log.e("setWebViewClient", "statusCode:" + statusCode + ">>>>description:" + description); - // 鏍规嵁HTTP鐘舵�佺爜澶勭悊閿欒 - } - - @Override - public void onPageFinished(WebView view, String url) { - super.onPageFinished(view, url); - //椤甸潰鍔犺浇瀹屾垚 - webViewIsFinished = true; - initLocalData(); - aginShowLocation(null); - - } - }); //宸℃鎸夐挳 binding.inspectButton.setOnClickListener(v -> { if (XXPermissions.isGranted(MapFragment.this.getContext(), Permission.ACCESS_BACKGROUND_LOCATION)) { @@ -325,17 +320,29 @@ Intent issue = new Intent(MapFragment.this.getActivity(), AddIssueActivity.class); MapFragment.this.getActivity().startActivity(issue); }); + + } - + /** + * 鏄剧ず鍙栨按鍙h鎯� + * + * @param data + */ public void showWaterIntakeDetail(String data) { MyLog.i(data); - MarkerBean markerBean= markerBeanSet.get(data); - if (markerBean!=null){ + 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 -> { + }); + }); } } @@ -345,7 +352,6 @@ * 鑾峰彇鍦板浘涓績鐐� */ private void getCenterPoint() { - ApiManager.getInstance().requestGet(this.getContext(), Constants.BASE_URL + "/base/dict_item/map_center", CenterPointResult.class, null, new SubscriberListener<BaseResponse<CenterPointResult>>() { @Override public void onNext(BaseResponse<CenterPointResult> t) { -- Gitblit v1.8.0