管灌系统巡查员智能手机App
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 @@
     * 获取取水口列表
     */
    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,9 +320,15 @@
            Intent issue = new Intent(MapFragment.this.getActivity(), AddIssueActivity.class);
            MapFragment.this.getActivity().startActivity(issue);
        });
    }
    /**
     * 显示取水口详情
     *
     * @param data
     */
    public void showWaterIntakeDetail(String data) {
        MyLog.i(data);
        MarkerBean markerBean=  markerBeanSet.get(data);
@@ -336,6 +337,12 @@
            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) {