| | |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.annotation.Nullable; |
| | | import androidx.lifecycle.Observer; |
| | | |
| | | import com.dayu.pipirrapp.bean.db.CenterPointBean; |
| | | import com.dayu.pipirrapp.bean.db.LatLonBean; |
| | | import com.dayu.pipirrapp.bean.db.MarkerBean; |
| | | import com.dayu.pipirrapp.bean.net.CenterPointResult; |
| | | import com.dayu.pipirrapp.bean.net.MarkerResult; |
| | |
| | | import com.dayu.pipirrapp.observer.MapFragmenObserver; |
| | | import com.dayu.pipirrapp.service.MyLocationService; |
| | | import com.dayu.pipirrapp.utils.CommonData; |
| | | import com.dayu.pipirrapp.utils.CommonKeyName; |
| | | import com.dayu.pipirrapp.utils.MapJpgUtils; |
| | | import com.dayu.pipirrapp.utils.MyLog; |
| | | import com.dayu.pipirrapp.utils.SharedPreferencesHelper; |
| | | import com.dayu.pipirrapp.utils.ToastUtil; |
| | | import com.dayu.pipirrapp.utils.WebViewUtils; |
| | | import com.jeremyliao.liveeventbus.LiveEventBus; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | |
| | | CenterPointBean centerPointBean; |
| | | String strMarkerJson; |
| | | boolean isStartInspec = false; |
| | | MapFragmenObserver mapFragmenObserver; |
| | | |
| | | @Override |
| | | public void onAttach(@NonNull Context context) { |
| | | super.onAttach(context); |
| | | requireActivity().getLifecycle().addObserver(new MapFragmenObserver()); |
| | | Log.i(TAG, "onAttach"); |
| | | mapFragmenObserver = new MapFragmenObserver(); |
| | | requireActivity().getLifecycle().addObserver(mapFragmenObserver); |
| | | } |
| | | |
| | | @Override |
| | | public void onCreate(@Nullable Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | Log.i(TAG, "onCreate"); |
| | | isStartInspec = SharedPreferencesHelper.getInstance(this.getContext()).get(CommonKeyName.isStartInspec, false); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onStart() { |
| | | super.onStart(); |
| | | //显示巡检状态 |
| | | Log.i(TAG, "onStart"); |
| | | } |
| | | |
| | | /** |
| | | * 修改巡检状态 |
| | | */ |
| | | private void chageInspecState() { |
| | | Intent location = new Intent(this.getActivity(), MyLocationService.class); |
| | | location.putExtra("isSingle", false); |
| | | if (isStartInspec) { |
| | | //获取定位服务传过来的坐标点 |
| | | LiveEventBus.get(CommonKeyName.locationData).observeForever(new Observer<Object>() { |
| | | @Override |
| | | public void onChanged(Object o) { |
| | | LatLonBean latLonBean = (LatLonBean) o; |
| | | mWebView.evaluateJavascript("javascript:locationOverLay(\"" + latLonBean.getLongitude() + "\",\"" + latLonBean.getLatitude() + "\")", value -> { |
| | | }); |
| | | } |
| | | }); |
| | | binding.stateText.setVisibility(View.VISIBLE); |
| | | binding.inspectButton.setText("终"); |
| | | //开启定位 |
| | | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { |
| | | this.getActivity().startForegroundService(location); |
| | | } else { |
| | | this.getActivity().startService(location); |
| | | } |
| | | } else { |
| | | binding.stateText.setVisibility(View.GONE); |
| | | binding.inspectButton.setText("巡"); |
| | | //关闭定位 |
| | | this.getActivity().stopService(location); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | @Nullable |
| | | @Override |
| | | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { |
| | | |
| | | binding = FragmentMapBinding.inflate(inflater, container, false); |
| | | mapFragmenObserver.setmWebView(binding.webView); |
| | | Log.i("MapFragment", "onCreateView"); |
| | | mWebView = binding.webView; |
| | | mWebView = WebViewUtils.initWebView(mWebView); |
| | |
| | | initView(); |
| | | initLocalData(); |
| | | getMarkerData(); |
| | | //开启定位 |
| | | Intent location = new Intent(this.getActivity(), MyLocationService.class); |
| | | location.putExtra("isSingle", false); |
| | | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { |
| | | this.getActivity().startForegroundService(location); |
| | | } else { |
| | | this.getActivity().startService(location); |
| | | } |
| | | //显示巡检状态 |
| | | chageInspecState(); |
| | | return binding.getRoot(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 初始化各个状态 |
| | | */ |
| | | private void initState() { |
| | | //开启定位 |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 初始化本地数据 |
| | |
| | | public void initLocalData() { |
| | | centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst(); |
| | | List<MarkerBean> markerBeans = DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().findAll(); |
| | | strMarkerJson = beanToJson(markerBeans); |
| | | 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() + "\")", value -> { |
| | | mWebView.evaluateJavascript("javascript:setCenterAndZoom(\"" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat() + "\",\"" + centerPointBean.getZoomMp() + "\")", value -> { |
| | | }); |
| | | } |
| | | } |
| | |
| | | markerBean.setCountyId(result.getCountyId()); |
| | | markerBeans.add(markerBean); |
| | | } |
| | | strMarkerJson = beanToJson(markerBeans); |
| | | strMarkerJson = WebViewUtils.beanToJson(markerBeans); |
| | | setMapMarker(); |
| | | DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll(); |
| | | // 使用 RxJava 异步插入数据 |
| | |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * bean转json |
| | | * |
| | | * @param markerBeans |
| | | */ |
| | | private String beanToJson(List<MarkerBean> markerBeans) { |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | stringBuilder.append("["); |
| | | for (int i = 0; i < markerBeans.size(); i++) { |
| | | MarkerBean markerBean = markerBeans.get(i); |
| | | stringBuilder.append("["); |
| | | stringBuilder.append(markerBean.getLng()); |
| | | stringBuilder.append(","); |
| | | stringBuilder.append(markerBean.getLat()); |
| | | stringBuilder.append(",\"" + markerBean.getName() + "\"]"); |
| | | if (i != markerBeans.size() - 1) { |
| | | stringBuilder.append(","); |
| | | } |
| | | } |
| | | stringBuilder.append("]"); |
| | | return stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\""); |
| | | } |
| | | |
| | | |
| | |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onResume() { |
| | | super.onResume(); |
| | | mWebView.onResume(); // 恢复 WebView,能正常执行网页的响应 |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onPause() { |
| | | super.onPause(); |
| | | // |
| | | mWebView.onPause(); // 通过 onPause 动作通知内核暂停所有的动作,如 DOM 的解析、plugin 的执行、JavaScript 执行等 |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onDestroy() { |
| | | super.onDestroy(); |
| | | Log.d(TAG, "onDestroy>>>>>>>>>>>>>>>>>>>>>>>>>>>"); |
| | | ((ViewGroup) mWebView.getParent()).removeView(mWebView); |
| | | mWebView.destroy(); // 当 Activity 要 destroy 时,应先将 WebView 移除,再 destroy 掉 |
| | | } |
| | | |
| | | |
| | | void initView() { |
| | | //跳转到指定位置 |
| | |
| | | @Override |
| | | public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { |
| | | String url = request.getUrl().toString(); |
| | | Log.i(TAG, "加载地址>>>" + url); |
| | | //判断当前是否为加载瓦片 |
| | | if (MapJpgUtils.getInsatance().isTianDiTuTileRequest(url)) { |
| | | String androidUrl = url.replace(CommonData.webKey, CommonData.androidKey); |
| | |
| | | } |
| | | Log.i(TAG, "在线加载>>>" + url); |
| | | } |
| | | |
| | | |
| | | return super.shouldInterceptRequest(view, request); |
| | | } |
| | | |
| | |
| | | // 根据HTTP状态码处理错误 |
| | | } |
| | | }); |
| | | //巡检按钮 |
| | | binding.inspectButton.setOnClickListener(v -> { |
| | | if (!isStartInspec) { |
| | | isStartInspec = true; |
| | | binding.inspectButton.setText("终"); |
| | | } else { |
| | | |
| | | isStartInspec = false; |
| | | } |
| | | |
| | | binding.stateText.setVisibility(View.VISIBLE); |
| | | isStartInspec = !isStartInspec; |
| | | chageInspecState(); |
| | | }); |
| | | } |
| | | |
| | |
| | | } |
| | | centerPointBean.setLat(t.getContent().getLat()); |
| | | centerPointBean.setLng(t.getContent().getLng()); |
| | | centerPointBean.setZoomMp(t.getContent().getZoomMp()); |
| | | DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().insert(centerPointBean); |
| | | jumpCenterPoint(); |
| | | } else { |
| | |
| | | binding.bottomLL.setVisibility(View.GONE); |
| | | } |
| | | |
| | | |
| | | } |