| | |
| | | import com.jeremyliao.liveeventbus.LiveEventBus; |
| | | import com.tencent.bugly.crashreport.CrashReport; |
| | | |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | |
| | | import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; |
| | | import io.reactivex.rxjava3.disposables.CompositeDisposable; |
| | | import io.reactivex.rxjava3.schedulers.Schedulers; |
| | | import kotlin.Triple; |
| | | import kotlin.Unit; |
| | | import kotlin.jvm.functions.Function1; |
| | | import io.reactivex.rxjava3.core.Single; |
| | | |
| | | /** |
| | | * author: zuo |
| | |
| | | |
| | | // 添加刷新数据的监听 |
| | | LiveEventBus.get(CommonKeyName.refreshData).observe(this, o -> { |
| | | getCenterPoint(); |
| | | getMarkerData(); |
| | | getDivideList(); |
| | | getPipeNetworkList(); |
| | | // 显示加载动画 |
| | | TipUtil.showLoading(MapFragment.this.getActivity(), "正在更新数据..."); |
| | | |
| | | // 创建多个Single对象来表示每个网络请求 |
| | | Single<Boolean> centerPointSingle = Single.create(emitter -> { |
| | | getCenterPoint(); |
| | | emitter.onSuccess(true); |
| | | }); |
| | | |
| | | Single<Boolean> markerDataSingle = Single.create(emitter -> { |
| | | getMarkerData(); |
| | | emitter.onSuccess(true); |
| | | }); |
| | | |
| | | Single<Boolean> divideListSingle = Single.create(emitter -> { |
| | | getDivideList(); |
| | | emitter.onSuccess(true); |
| | | }); |
| | | |
| | | Single<Boolean> pipeNetworkListSingle = Single.create(emitter -> { |
| | | getPipeNetworkList(); |
| | | emitter.onSuccess(true); |
| | | }); |
| | | |
| | | // 组合所有Single |
| | | compositeDisposable.add( |
| | | Single.zip( |
| | | centerPointSingle, |
| | | markerDataSingle, |
| | | divideListSingle, |
| | | pipeNetworkListSingle, |
| | | (centerPoint, marker, divide, pipe) -> true |
| | | ) |
| | | .subscribeOn(Schedulers.io()) |
| | | .observeOn(AndroidSchedulers.mainThread()) |
| | | .doFinally(() -> { |
| | | // 无论成功还是失败,都需要隐藏加载动画 |
| | | TipUtil.dismissLoading(); |
| | | }) |
| | | .subscribe( |
| | | result -> { |
| | | ToastUtil.showToast(MapFragment.this.getContext(), "数据更新完成"); |
| | | }, |
| | | throwable -> { |
| | | Log.e(TAG, "数据更新失败: " + throwable.getMessage()); |
| | | ToastUtil.showToast(MapFragment.this.getContext(), "数据更新失败"); |
| | | } |
| | | ) |
| | | ); |
| | | }); |
| | | } |
| | | |
| | |
| | | //巡检按钮 |
| | | binding.inspectButton.setOnClickListener(v -> { |
| | | if (XXPermissions.isGranted(MapFragment.this.getContext(), Permission.ACCESS_BACKGROUND_LOCATION)) { |
| | | new ConfirmDialog(MapFragment.this.getActivity(), "确认开始巡检吗?",(confirmDialog, v1) -> { |
| | | new ConfirmDialog(MapFragment.this.getActivity(), "确认开始巡检吗?", (confirmDialog, v1) -> { |
| | | chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK); |
| | | confirmDialog.dismiss(); |
| | | }).show(); |
| | |
| | | // } |
| | | // 跳转到选择的位置 |
| | | mWebView.evaluateJavascript( |
| | | String.format("javascript:setCenterAndZoom(\"%s\",\"%s\",\"17\")", |
| | | item.getLng(), |
| | | item.getLat()), |
| | | null |
| | | String.format("javascript:setCenterAndZoom(\"%s\",\"%s\",\"17\")", |
| | | item.getLng(), |
| | | item.getLat()), |
| | | null |
| | | ); |
| | | }); |
| | | |
| | | |
| | | // 执行搜索 |
| | | compositeDisposable.add( |
| | | DaoSingleton.getAsynchInstance(requireContext()) |
| | | .divideDao() |
| | | .searchAllByKeyword(s) |
| | | .subscribeOn(Schedulers.io()) |
| | | .observeOn(AndroidSchedulers.mainThread()) |
| | | .subscribe( |
| | | results -> { |
| | | if (results != null && !results.isEmpty()) { |
| | | searchDialog.setData(results); |
| | | searchDialog.show(); |
| | | } else { |
| | | ToastUtil.showToast(requireContext(), "未找到相关结果"); |
| | | } |
| | | }, |
| | | throwable -> { |
| | | ToastUtil.showToast(requireContext(), "搜索失败:" + throwable.getMessage()); |
| | | } |
| | | ) |
| | | DaoSingleton.getAsynchInstance(requireContext()) |
| | | .divideDao() |
| | | .searchAllByKeyword(s) |
| | | .subscribeOn(Schedulers.io()) |
| | | .observeOn(AndroidSchedulers.mainThread()) |
| | | .subscribe( |
| | | results -> { |
| | | if (results != null && !results.isEmpty()) { |
| | | searchDialog.setData(results); |
| | | searchDialog.show(); |
| | | } else { |
| | | ToastUtil.showToast(requireContext(), "未找到相关结果"); |
| | | } |
| | | }, |
| | | throwable -> { |
| | | ToastUtil.showToast(requireContext(), "搜索失败:" + throwable.getMessage()); |
| | | } |
| | | ) |
| | | ); |
| | | } |
| | | return null; |
| | |
| | | boolean isfrist = true; |
| | | for (PipeNetworkDataCoordinateBean data : pipeNetworkBean.getData().getCoordinates()) { |
| | | if (!TextUtils.isEmpty(data.getLat()) && !TextUtils.isEmpty(data.getLng())) { |
| | | mWebView.evaluateJavascript("javascript:addPipeNetwork(\"" + data.getLng() + "\",\"" + data.getLat() + "\",\"" + isfrist + "\",\"" + isShowPipeNetwork +"\")", new ValueCallback<String>() { |
| | | mWebView.evaluateJavascript("javascript:addPipeNetwork(\"" + data.getLng() + "\",\"" + data.getLat() + "\",\"" + isfrist + "\",\"" + isShowPipeNetwork + "\")", new ValueCallback<String>() { |
| | | @Override |
| | | public void onReceiveValue(String value) { |
| | | } |