From 121a8cf39c5387b36cd4ee5cacf6b4e02d6f10ea Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Thu, 21 Sep 2023 09:55:14 +0800 Subject: [PATCH 01/11] mergecode --- app/src/main/assets/omdb_config.json | 1 + .../signMoreInfo/SignMoreInfoFragment.kt | 6 +++ .../java/com/navinfo/omqs/util/SignUtil.kt | 49 ++++++++++++++++++- .../assets/omdb/appendix/1105_00101_0_12.svg | 1 + .../assets/omdb/appendix/1105_00101_0_13.svg | 1 + 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 collect-library/src/main/assets/omdb/appendix/1105_00101_0_12.svg create mode 100644 collect-library/src/main/assets/omdb/appendix/1105_00101_0_13.svg diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index c4b09ded..e4b50264 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -220,6 +220,7 @@ "zoomMin": 18, "zoomMax": 20, "is3D": true, + "catch":true, "transformer": [ { "k": "geometry", diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt index 54de09fa..7f571e70 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt @@ -96,6 +96,12 @@ class SignMoreInfoFragment : BaseFragment() { binding.signInfoRecyclerview.adapter = adapter adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it)) } + //交通标牌 + DataCodeEnum.OMDB_TRAFFIC_SIGN.code -> { + val adapter = TwoItemAdapter() + binding.signInfoRecyclerview.adapter = adapter + adapter.refreshData(SignUtil.getTrafficSignMoreInfo(it)) + } else -> { val adapter = SignUtil.getMoreInfoAdapter(it) binding.signInfoRecyclerview.adapter = adapter diff --git a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt index 47bf4c38..6e66e316 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -1596,7 +1596,54 @@ class SignUtil { return list } + /** + * 获取交通标牌详细信息 + */ + fun getTrafficSignMoreInfo(renderEntity: RenderEntity): List { + val list = mutableListOf() + val trafsignShape = when (renderEntity.properties["trafsignShape"]) { + "1" -> "不规则形状" + "2" -> "长方形" + "3" -> "三角形" + "4" -> "圆形" + "5" -> "菱形" + "6" -> "到三角形" + "7" -> "正方形" + "8" -> "八角形" + else -> "" + } + if (trafsignShape != "") { + list.add( + TwoItemAdapterItem( + title = "形状", text = trafsignShape + ) + ) + } + + val color = when (renderEntity.properties["color"]) { + "0" -> "未验证" + "1" -> "白色" + "2" -> "黄色" + "3" -> "红色" + "5" -> "棕色" + "6" -> "蓝色" + "7" -> "绿色" + "8" -> "黑色" + "9" -> "其他" + else -> "" + } + list.add( + TwoItemAdapterItem( + title = "颜色", text = color + ) + ) + list.add( + TwoItemAdapterItem( + title = "正北夹角", text = "${renderEntity.properties["heading"]}" + ) + ) + return list + } } - } \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/appendix/1105_00101_0_12.svg b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_12.svg new file mode 100644 index 00000000..ca783581 --- /dev/null +++ b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_12.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/appendix/1105_00101_0_13.svg b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_13.svg new file mode 100644 index 00000000..81ab8b1d --- /dev/null +++ b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_13.svg @@ -0,0 +1 @@ + \ No newline at end of file From ab27048d5490a4df357463cb2db19b8be641f295 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Thu, 21 Sep 2023 16:13:46 +0800 Subject: [PATCH 02/11] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E8=A6=81?= =?UTF-8?q?=E7=B4=A0=E7=BA=BF=E6=8D=95=E6=8D=89=E5=BC=80=E5=85=B32?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E5=9B=BE=E5=B1=82=E5=BC=80=E5=85=B3?= =?UTF-8?q?=E4=B8=8E=E8=A6=81=E7=B4=A0=E6=8D=95=E6=8D=89=E8=81=94=E5=8A=A8?= =?UTF-8?q?3=E3=80=81=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0Marker=E6=98=BE=E9=9A=90=E5=BC=80=E5=85=B34=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=81=93=E8=B7=AF=E5=B1=9E=E6=80=A7=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=81=93=E8=B7=AF=E7=A7=8D=E5=88=AB=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/omdb_config.json | 7 ++ .../main/java/com/navinfo/omqs/Constant.kt | 10 +++ .../com/navinfo/omqs/db/RealmOperateHelper.kt | 57 +++++++++-------- .../omqs/ui/activity/map/MainActivity.kt | 7 +- .../omqs/ui/activity/map/MainViewModel.kt | 26 +++++++- .../personalcenter/PersonalCenterFragment.kt | 18 ++++++ .../ui/fragment/tasklist/TaskViewModel.kt | 60 ++++++++++++------ .../drawable-xxhdpi/icon_close_catch_line.png | Bin 0 -> 1642 bytes .../drawable-xxhdpi/icon_open_catch_line.png | Bin 0 -> 1454 bytes .../res/drawable/selector_catch_line_src.xml | 5 ++ app/src/main/res/layout/activity_main.xml | 21 +++--- .../main/res/menu/personal_center_menu.xml | 5 ++ .../src/main/assets/editormarker.xml | 2 +- .../library/map/handler/MarkHandler.kt | 5 ++ vtm | 2 +- 15 files changed, 164 insertions(+), 61 deletions(-) create mode 100644 app/src/main/res/drawable-xxhdpi/icon_close_catch_line.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_open_catch_line.png create mode 100644 app/src/main/res/drawable/selector_catch_line_src.xml diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index b982edf9..ab29be07 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -152,6 +152,7 @@ "table": "OMDB_BRIDGE", "code": 2201, "name": "桥", + "catch":true, "zoomMin": 15, "zoomMax": 20, "transformer": [ @@ -169,6 +170,7 @@ "name": "隧道", "zoomMin": 15, "zoomMax": 20, + "catch":true, "transformer": [ { "k": "geometry", @@ -205,6 +207,7 @@ "checkLinkId": false, "zoomMin": 18, "zoomMax": 20, + "catch":true, "transformer": [ { "k": "geometry", @@ -319,6 +322,7 @@ "table": "OMDB_SPEEDLIMIT_COND", "code": 4003, "name": "条件点限速", + "catch":true, "zoomMin": 15, "zoomMax": 20, "transformer": [ @@ -334,6 +338,7 @@ "table": "OMDB_SPEEDLIMIT_VAR", "code": 4004, "name": "可变点限速", + "catch":true, "zoomMin": 15, "zoomMax": 20, "transformer": [ @@ -540,6 +545,7 @@ "code": 2004, "name": "道路属性", "existSubCode": true, + "catch":true, "zoomMin": 15, "zoomMax": 20, "transformer": [ @@ -577,6 +583,7 @@ "table": "OMDB_ROUNDABOUT", "code": 2204, "name": "环岛", + "catch":true, "zoomMin": 15, "zoomMax": 17, "transformer": [ diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index 1d9dbd16..390c5b5f 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -108,6 +108,16 @@ class Constant { */ var MapRotateEnable = false + /** + * Marker显隐 + */ + var MapMarkerCloseEnable = false + + /** + * 是否开启线捕捉 + */ + var MapCatchLine = false + /** * 全要素捕捉 */ diff --git a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt index 2360b850..7a72e6ee 100644 --- a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt @@ -21,6 +21,7 @@ import org.locationtech.jts.operation.buffer.BufferOp import org.oscim.core.GeoPoint import org.oscim.core.MercatorProjection import javax.inject.Inject +import kotlin.reflect.jvm.jvmName import kotlin.streams.toList class RealmOperateHelper() { @@ -158,6 +159,7 @@ class RealmOperateHelper() { result.addAll(it) } } + realm.close() return result } @@ -278,36 +280,30 @@ class RealmOperateHelper() { val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null) val realm = getSelectTaskRealmInstance() var realmList = mutableListOf() + val realmQuery = getSelectTaskRealmTools(RenderEntity::class.java, false) + .greaterThanOrEqualTo("tileX", xStart) + .lessThanOrEqualTo("tileX", xEnd) + .greaterThanOrEqualTo("tileY", yStart) + .lessThanOrEqualTo("tileY", yEnd) + // 筛选不显示的数据 if (catchAll) { // 查询realm中对应tile号的数据 - realmList = getSelectTaskRealmTools(RenderEntity::class.java, false) - .greaterThanOrEqualTo("tileX", xStart) - .lessThanOrEqualTo("tileX", xEnd) - .greaterThanOrEqualTo("tileY", yStart) - .lessThanOrEqualTo("tileY", yEnd) - .findAll() + realmList = realmQuery.findAll() } else { // 查询realm中对应tile号的数据 if (Constant.CATCH_ALL) { - realmList = getSelectTaskRealmTools(RenderEntity::class.java, false) - .greaterThanOrEqualTo("tileX", xStart) - .lessThanOrEqualTo("tileX", xEnd) - .greaterThanOrEqualTo("tileY", yStart) - .lessThanOrEqualTo("tileY", yEnd) - .findAll() + realmList = realmQuery.findAll() } else { - realmList = getSelectTaskRealmTools(RenderEntity::class.java, false) - .greaterThanOrEqualTo("tileX", xStart) - .lessThanOrEqualTo("tileX", xEnd) - .greaterThanOrEqualTo("tileY", yStart) - .lessThanOrEqualTo("tileY", yEnd) - .greaterThan("catchEnable", 0) - .findAll() + realmList = realmQuery.greaterThan("catchEnable", 0).findAll() } } // 将获取到的数据和查询的polygon做相交,只返回相交的数据 val queryResult = realmList?.stream()?.filter { - polygon.intersects(it.wkt) + if(Constant.MapCatchLine){ + polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase().equals("LINESTRING")||it.wkt?.geometryType?.uppercase().equals("POLYGON") + }else{ + polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase().equals("POINT")||it.wkt?.geometryType?.uppercase().equals("POLYGON") + } }?.toList() queryResult?.let { if (sort) { @@ -331,7 +327,7 @@ class RealmOperateHelper() { val result = mutableListOf() val realm = getSelectTaskRealmInstance() val realmList = getSelectTaskRealmTools(RenderEntity::class.java, false) - .notEqualTo("table", DataCodeEnum.OMDB_RD_LINK_KIND.name) + .notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name) .equalTo("properties['${LinkTable.linkPid}']", linkPid) .findAll() result.addAll(realm.copyFromRealm(realmList)) @@ -433,19 +429,26 @@ class RealmOperateHelper() { clazz: Class, enableSql: Boolean ): RealmQuery { - return if (MapParamUtils.getDataLayerEnum() != null) { - + var realmQuery = getSelectTaskRealmInstance().where(clazz) + if (MapParamUtils.getDataLayerEnum() != null) { if (enableSql) { var sql = " enable${MapParamUtils.getDataLayerEnum().sql}" getSelectTaskRealmInstance().where(clazz).rawPredicate(sql) - } else { - getSelectTaskRealmInstance().where(clazz) } - } else { - getSelectTaskRealmInstance().where(clazz) } + if(clazz.name==RenderEntity::class.jvmName){ + // 筛选不显示的数据 + if (com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY != null && com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY.size > 0) { + realmQuery.beginGroup() + for (type in com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY) { + realmQuery.notEqualTo("table", type) + } + realmQuery.endGroup() + } + } + return realmQuery } fun getSelectTaskRealmInstance(): Realm { diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 5fc097ed..5fe871fd 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -781,10 +781,11 @@ class MainActivity : BaseActivity() { } /** - * 刷新地图 + * 线捕捉开关 */ - fun refrushOnclick(view: View) { - mapController.layerManagerHandler.updateOMDBVectorTileLayer() + fun catchLineOnclick(view: View) { + viewModel.setCatchRoad(!viewModel.isCatchRoad()) + binding.mainActivityMapCatchLine.isSelected = viewModel.isCatchRoad() } /** diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 93ca83c5..b9482bdd 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -180,6 +180,11 @@ class MainViewModel @Inject constructor( */ private var bHighRoad = true + /** + * 是不是捕捉线 + */ + private var bCatchRoad = false + /** * 是不是选择轨迹点 */ @@ -597,11 +602,15 @@ class MainViewModel @Inject constructor( */ private suspend fun captureItem(point: GeoPoint) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + var buffer = 3.2 + if(mapController.mMapView.mapLevel>=18){ + buffer = 2.0 + } val itemList = realmOperateHelper.queryElement( GeometryTools.createPoint( point.longitude, point.latitude ), - buffer = 3.2, catchAll = false, + buffer = buffer, catchAll = false, ) //增加道路线过滤原则 val filterResult = itemList.filter { @@ -1111,6 +1120,14 @@ class MainViewModel @Inject constructor( } + /** + * 开启捕捉线 + */ + fun setCatchRoad(select: Boolean) { + bCatchRoad = select + Constant.MapCatchLine = bCatchRoad + } + /** * 是否开启线高亮 */ @@ -1118,6 +1135,13 @@ class MainViewModel @Inject constructor( return bHighRoad } + /** + * 是否开启捕捉线 + */ + fun isCatchRoad(): Boolean { + return bCatchRoad + } + /** * 开启轨迹选择 */ diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index 855790d8..657ee327 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -152,6 +152,17 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? it.title = "锁定地图旋转及视角" } } + R.id.personal_center_menu_marker -> { + niMapController.mMapView.vtmMap.eventLayer.enableTilt(Constant.MapRotateEnable) + Constant.MapMarkerCloseEnable = !Constant.MapMarkerCloseEnable + //增加开关控制 + niMapController.markerHandle.setQsRecordMarkEnable(Constant.MapMarkerCloseEnable) + if (Constant.MapMarkerCloseEnable) { + it.title = "显示Marker" + } else { + it.title = "隐藏Marker" + } + } R.id.personal_center_menu_catch_all -> { Constant.CATCH_ALL = !Constant.CATCH_ALL if (Constant.CATCH_ALL) { @@ -220,6 +231,13 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? it.title = "开启全要素捕捉" } } + R.id.personal_center_menu_marker -> { + if (Constant.MapMarkerCloseEnable) { + it.title = "显示Marker" + } else { + it.title = "隐藏Marker" + } + } } } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 24cd2849..5cde34aa 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -487,31 +487,55 @@ class TaskViewModel @Inject constructor( fun checkUploadTask(context: Context, taskBean: TaskBean) { viewModelScope.launch(Dispatchers.IO) { val realm = Realm.getDefaultInstance() + var result = 0 + val map: MutableMap = HashMap() taskBean.hadLinkDvoList.forEach { hadLinkDvoBean -> val objects = realm.where(QsRecordBean::class.java).equalTo("linkId", hadLinkDvoBean.linkPid) .and().equalTo("taskId", hadLinkDvoBean.taskId).findAll() - val map: MutableMap = HashMap() if (objects.isEmpty() && hadLinkDvoBean.reason.isEmpty()) { - withContext(Dispatchers.Main) { - liveDataTaskUpload.postValue(map) - val mDialog = FirstDialog(context) - mDialog.setTitle("提示?") - mDialog.setMessage("此任务中存在未测评link,请确认!") - mDialog.setPositiveButton( - "确定" - ) { _, _ -> - mDialog.dismiss() - map[taskBean] = true - liveDataTaskUpload.postValue(map) - } - mDialog.setNegativeButton( - "取消" - ) { _, _ -> mDialog.dismiss() } - mDialog.show() + if(hadLinkDvoBean.linkStatus==3){ + result = 1 + realm.close() + return@forEach + }else{ + result = 2 } - return@launch } + } + if(result==1){ + withContext(Dispatchers.Main) { + liveDataTaskUpload.postValue(map) + val mDialog = FirstDialog(context) + mDialog.setTitle("提示?") + mDialog.setMessage("此任务中存在新增Link无问题记录,请添加至少一条记录!") + mDialog.setPositiveButton( + "确定" + ) { _, _ -> + mDialog.dismiss() + } + mDialog.setCancelVisibility(View.GONE) + mDialog.show() + } + }else if(result==2){ + withContext(Dispatchers.Main) { + liveDataTaskUpload.postValue(map) + val mDialog = FirstDialog(context) + mDialog.setTitle("提示?") + mDialog.setMessage("此任务中存在未测评link,请确认!") + mDialog.setPositiveButton( + "确定" + ) { _, _ -> + mDialog.dismiss() + map[taskBean] = true + liveDataTaskUpload.postValue(map) + } + mDialog.setNegativeButton( + "取消" + ) { _, _ -> mDialog.dismiss() } + mDialog.show() + } + }else{ map[taskBean] = true liveDataTaskUpload.postValue(map) } diff --git a/app/src/main/res/drawable-xxhdpi/icon_close_catch_line.png b/app/src/main/res/drawable-xxhdpi/icon_close_catch_line.png new file mode 100644 index 0000000000000000000000000000000000000000..23e89d00231494c32c915faa8be12a0942a1d69e GIT binary patch literal 1642 zcmb7_eKgYx7{`CxiAKYwO(W@NbZ1G{y}2fp%vP)@5_t`=mY0gWU!-mLwR2OHlnRY` z>19i1q(V`WvYSk?wrR;iQY7+{yZi4w=l*g3c%JWn&-t9^oaghL+T*c9PuD~j002EV zSE`pL!~Q9Rwx-|UYwK$QcHC=>p7-gQDgzs{ywaFbye>-@TYxw6^v0|f*@mGpnCh+j*UpyDI7GSf1!kKCZvf16 z#>E+u5Za*-Je%_n`w&EWwwxt3;Bg#tU7Vq|?-DkN3UhfhzzsoVTZOpd0@27vC@rK8 z+nVK!<7JwM9;1;EE*O#}Qt^L_njgpC*lS~f@w@+THKvG=Xh#!!^e0dS5x;fg& zf8m5=IWw(F4;Ka76*%}E*D$+l-FZRCSoIM5agr{1qz_(iJ z_sCe{A6c`buNdAk zI*a-HO2Iy7W+R{UDKl#?&2*34s1q6*k%zfP%h6noSv)3&V#E7Lph04+l zLrJT$&TyJ@$7c)ow~91 z;{ud;?|~hcXAcW;qu&iLxL94x68Ux>IBXQ~cCJEh3Hb*ZQ&XO_Q|=|D&7?-fH^P4YjrQ=qvCZk~828`1iu ze|uS8FdrN1Aadt#n`vs+M>pq6x}|mgW0E8FGSmEbHz?2wZq)^oA`scS%;fYFC))gA z%w8hus)u@lggn#M@xY3cyavG}ecmiVHQ>RGOSW%U{+?m;Koc*r< z+X6uRpa+mj$dtCIz}E{Yp`j0lr&0@T0>sg=k&z?5W4S7AXVhjFs_^lmQO0_D{i55+ z{XizAwe1q9x}J;#6z=)^I=!iHm1BwOipt8mdUEb+r{M9a)F{pAaG>c*aQ9uoT#i7q zUjm#bjSM>M*L(O~JY28!SU|I5`1>?Y2~>0;LVj(nJE7Mzng9@+yNHmjo!tS wfV)adGlrg?C3nq{G~TQP*#BRa|83kwcqg~;tfE_eS@S#qH<|}kKnY>}4a`0BX#fBK literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/icon_open_catch_line.png b/app/src/main/res/drawable-xxhdpi/icon_open_catch_line.png new file mode 100644 index 0000000000000000000000000000000000000000..3adb925054ee7245e60af418b44d8d0a37c6fcda GIT binary patch literal 1454 zcmaKsYdn(+0LI^UmZ4+b)w05lVX|^5Nr#+sm^SvV5|ZgcO1b4SL?ibVuOhtYMsaE> zxr}v^+p-p&R+?j?noCxSaSBPl%2CJpdOn;F&+~lyKhLKp$J4`ISI0mH003Q>#qeIt zga1lPbJ44>Y2p_HjPrJP1?uERY5-Ug3Nz?FynuIQFhbr%%=(_DdVnAYB{9EIGCOR0 zw616)O{|TXHW)W82NNuvh$R`2z!($SE8tYGE0(Z)h}NU;1DR>A;ExcGs_J`AGPpC3 z!=gGxDSdPAJ>S&In@dxNrpk6+|2B2WsV`+aui6##Ej(!f;=E+p61oGzCf=ax3bk-v zIhYcGYK4lj)~f>D*k)?PFxT-xvp6UCHy9ag#q=pIR6_HF4FU-GE6bLwh3{KR={{Fn z%)@xh|3GZ_Fj+|z=8;oU7~{_AQcveO4q96`Hk~25*Uh$i}|LHDgd^ z`=5GytpvUmd@e*Nzs2fZcB}G}1yLd|kjj84ZDF|vcYRybr<^uZWeuAjx=GbiDYOn< zM0dm+?s{^O`l9hxkNj)#tAGV)kZ0M=Ql+L32wGR~bW_}<^c(Zn z+HHKL)|Jy` z8LOANDrSJoVEtkF@jTms?H`mYv-b_anFYUVN#4BohS>H=*m87WVh)3R@r`GUdw~0(z_j86pM6QmA6Bkq6wM z0a$rYG`?C*2cBs-=t{~DB(GPIq)l;YT1j^BBnB5*gfUSQ0cTBSLU2S(I}o@xTQtdf zU-a?k^itq2i^O{s#L9kqYsaWK8(DYI67*2W)w=-?rozxWuo4{c0@6S~rXm&JU+GIo z;CA8B-A-plry3ryl-R)T4XMV3`_{>VgM>?3?WygE*f)3KsmmZZGP4be%m@ja)0W-d z>Qd$|`ep0s9-hrWRYtw~&45bo-C8*dCb#5nURN}zoVeKaF%->y>%FljG@K#_0>^gO z4!Os29;Iv*3Bmots@9XElW0V|m@MH?yFHpca=QgC&-1JaGaJxG&_?cj_i|B2{`7ZXWa26NbaV5A1R}I1=gI5kzRJdN(F-5BJ}=I3 zKqrkauzu?nS)|!RGgs39l13AifPnQU2Q$3-qWvS7>7Uy>EED~4Ufxe~{qUw++R!@u z6~V<-4MvPCp1D7n0o&UhbVPobVYh5X(D2}nSZLL&lB4mEd0!XuhO(i + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cb8689ec..655c668c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -248,13 +248,14 @@ app:layout_constraintLeft_toLeftOf="@id/main_activity_top_sign_recyclerview" /> + android:onClick="@{(view)->mainActivity.catchLineOnclick(view)}" + android:src="@drawable/selector_catch_line_src" + app:layout_constraintBottom_toTopOf="@id/main_activity_location" + app:layout_constraintRight_toRightOf="@id/main_activity_location" /> + app:layout_constraintBottom_toTopOf="@id/main_activity_zoom_in" + app:layout_constraintRight_toRightOf="@id/main_activity_zoom_in" /> + app:layout_constraintBottom_toTopOf="@id/main_activity_map_catch_line" + app:layout_constraintRight_toRightOf="@id/main_activity_map_catch_line" /> + app:constraint_referenced_ids="main_activity_close_line,main_activity_select_line,main_activity_voice,main_activity_note,main_activity_map_catch_line,main_activity_zoom_in,main_activity_zoom_out,main_activity_geometry,main_activity_location" /> + - + diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt index 0d3e70e9..db7e5d91 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt @@ -372,6 +372,11 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : mMapView.updateMap(true) } + fun setQsRecordMarkEnable(enable:Boolean){ + qsRecordItemizedLayer.isEnabled = enable + mMapView.updateMap(true) + } + /** * 增加或更新便签 diff --git a/vtm b/vtm index 719c44b6..271e7b22 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 719c44b65d3ed26d725b24b3a5366b281c9e4fad +Subproject commit 271e7b22785b0570a34c50476e17a98dfcca7e71 From 575540a03b98785cdfb4a92d91413ae6adef2a3c Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Thu, 21 Sep 2023 16:14:29 +0800 Subject: [PATCH 03/11] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E8=A6=81?= =?UTF-8?q?=E7=B4=A0=E7=BA=BF=E6=8D=95=E6=8D=89=E5=BC=80=E5=85=B32?= =?UTF-8?q?=E3=80=81=E5=A2=9E=E5=8A=A0=E5=9B=BE=E5=B1=82=E5=BC=80=E5=85=B3?= =?UTF-8?q?=E4=B8=8E=E8=A6=81=E7=B4=A0=E6=8D=95=E6=8D=89=E8=81=94=E5=8A=A8?= =?UTF-8?q?3=E3=80=81=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0Marker=E6=98=BE=E9=9A=90=E5=BC=80=E5=85=B34=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=81=93=E8=B7=AF=E5=B1=9E=E6=80=A7=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=81=93=E8=B7=AF=E7=A7=8D=E5=88=AB=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/personalcenter/PersonalCenterFragment.kt | 2 +- app/src/main/res/menu/personal_center_menu.xml | 2 +- .../collect/library/map/handler/MarkHandler.kt | 11 ++++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index 657ee327..04fb39ee 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -156,7 +156,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? niMapController.mMapView.vtmMap.eventLayer.enableTilt(Constant.MapRotateEnable) Constant.MapMarkerCloseEnable = !Constant.MapMarkerCloseEnable //增加开关控制 - niMapController.markerHandle.setQsRecordMarkEnable(Constant.MapMarkerCloseEnable) + niMapController.markerHandle.setQsRecordMarkEnable(!Constant.MapMarkerCloseEnable) if (Constant.MapMarkerCloseEnable) { it.title = "显示Marker" } else { diff --git a/app/src/main/res/menu/personal_center_menu.xml b/app/src/main/res/menu/personal_center_menu.xml index 67528904..9e53afd3 100644 --- a/app/src/main/res/menu/personal_center_menu.xml +++ b/app/src/main/res/menu/personal_center_menu.xml @@ -59,7 +59,7 @@ + android:title="版本:23QE4_V1.5.3_20230920_A" /> diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt index db7e5d91..b7e38784 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt @@ -43,6 +43,8 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : */ private val mDefaultTextColor = "#4E55AF" + private var markerEnable = true + /** * 文字画笔 */ @@ -275,7 +277,12 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : // 设置矢量图层均在12级以上才显示 mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition -> if (e == Map.SCALE_EVENT) { - qsRecordItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 + if(markerEnable){ + qsRecordItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 + }else{ + qsRecordItemizedLayer.isEnabled = false + } + niLocationItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 } }) @@ -374,6 +381,8 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : fun setQsRecordMarkEnable(enable:Boolean){ qsRecordItemizedLayer.isEnabled = enable + markerEnable = enable + qsRecordItemizedLayer.populate() mMapView.updateMap(true) } From 705779f631d5b7be4d538bdb311e3c2d5856001b Mon Sep 17 00:00:00 2001 From: squallzhjch Date: Thu, 21 Sep 2023 16:18:59 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E7=BA=BF=E9=99=90=E9=80=9F=E7=9A=84=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/navinfo/omqs/db/RealmOperateHelper.kt | 2 +- .../com/navinfo/omqs/tools/MetadataUtils.kt | 2 +- .../omqs/ui/activity/map/MainViewModel.kt | 8 ++++-- .../EvaluationResultFragment.kt | 8 ++++-- .../java/com/navinfo/omqs/util/SignUtil.kt | 27 ++++++++++--------- vtm | 2 +- 6 files changed, 30 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt index a4bce026..ffb8379f 100644 --- a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt @@ -331,7 +331,7 @@ class RealmOperateHelper() { val result = mutableListOf() val realm = getSelectTaskRealmInstance() val realmList = getSelectTaskRealmTools(RenderEntity::class.java, false) - .notEqualTo("table", DataCodeEnum.OMDB_RD_LINK_KIND.name) + .notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name) .equalTo("properties['${LinkTable.linkPid}']", linkPid) .findAll() result.addAll(realm.copyFromRealm(realmList)) diff --git a/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt b/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt index 25af2cca..6ad86b74 100644 --- a/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt +++ b/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt @@ -13,7 +13,7 @@ class MetadataUtils { object ScRootCauseAnalysisTitle { const val TITLE_PROBLEM_LINK = "问题环节" - const val TITLE_PROBLEM_CAUSE = "初步问题原因" + const val TITLE_PROBLEM_CAUSE = "初步分析" } } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 32bd3ac0..fbe61198 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -756,11 +756,14 @@ class MainViewModel @Inject constructor( val linePoints = GeometryTools.getGeoPoints(link.geometry) val direct = link.properties["direct"] - if(direct == "3"){ + if (direct == "3") { linePoints.reverse() } - val footAndDistance = GeometryTools.pointToLineDistance(point, GeometryTools.createLineString(linePoints)) + val footAndDistance = GeometryTools.pointToLineDistance( + point, + GeometryTools.createLineString(linePoints) + ) linePoints.add( footAndDistance.footIndex + 1, GeoPoint( @@ -810,6 +813,7 @@ class MainViewModel @Inject constructor( DataCodeEnum.OMDB_RD_LINK_KIND.code,//种别, DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code, // 功能等级, DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code, //线限速, + DataCodeEnum.OMDB_LINK_SPEEDLIMIT_COND.code,//条件线限速 DataCodeEnum.OMDB_LINK_DIRECT.code,//道路方向, DataCodeEnum.OMDB_RAMP.code, //匝道 DataCodeEnum.OMDB_BRIDGE.code,//桥 diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt index bb9028ee..aeb222ce 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt @@ -89,6 +89,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { //返回按钮点击 binding.evaluationBar.setOnClickListener { + it.isEnabled = false val mDialog = FirstDialog(context) mDialog.setTitle("提示?") mDialog.setMessage("是否退出,请确认!") @@ -98,7 +99,10 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { mDialog.dismiss() onBackPressed() } - mDialog.setNegativeButton("取消", null) + mDialog.setNegativeButton("取消") { _, _ -> + mDialog.dismiss() + it.isEnabled = true + } mDialog.show() } @@ -199,7 +203,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { viewModel.liveDataToastMessage.observe(viewLifecycleOwner) { Toast.makeText(requireContext(), it, Toast.LENGTH_SHORT).show() } - viewModel.liveDataQsRecordBean.observe(viewLifecycleOwner){ + viewModel.liveDataQsRecordBean.observe(viewLifecycleOwner) { binding.evaluationId.text = it.id } diff --git a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt index ff709d62..9bff4a7a 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -50,6 +50,10 @@ class SignUtil { DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code -> { "${data.properties["maxSpeed"]}" } + //条件线限速 + DataCodeEnum.OMDB_LINK_SPEEDLIMIT_COND.code -> { + "${data.properties["maxSpeed"]}" + } //全封闭 DataCodeEnum.OMDB_CON_ACCESS.code -> { if (data.properties["conAccess"] === "1") "全封闭" else "" @@ -130,6 +134,8 @@ class SignUtil { DataCodeEnum.OMDB_LINK_DIRECT.code -> "方向" //常规线限速 DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code -> "线限速" + //条件线限速 + DataCodeEnum.OMDB_LINK_SPEEDLIMIT_COND.code -> "条件限速" DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code, DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code, DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code, DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code -> "道路属性" @@ -870,13 +876,11 @@ class SignUtil { ) ) val carType = renderEntity.properties["vehicleType"] - if (carType != "0") { - list.add( - TwoItemAdapterItem( - title = "车辆类型", text = getElectronicEyeVehicleType(carType!!.toInt()) - ) + list.add( + TwoItemAdapterItem( + title = "车辆类型", text = getElectronicEyeVehicleType(carType!!.toInt()) ) - } + ) val time = renderEntity.properties["validPeriod"] if (time?.isNotEmpty() == true) { list.add( @@ -893,7 +897,7 @@ class SignUtil { * 条件点限速文字 */ private fun getConditionLimitText(data: RenderEntity): String { - var stringBuffer = StringBuffer() + val stringBuffer = StringBuffer() try { val dependent = data.properties["speedDependent"] dependent?.let { @@ -1515,7 +1519,8 @@ class SignUtil { DataCodeEnum.OMDB_RD_LINK_KIND.code -> 1 DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code -> 2 DataCodeEnum.OMDB_LINK_SPEEDLIMIT.code -> 3 - DataCodeEnum.OMDB_LINK_DIRECT.code -> 4 + DataCodeEnum.OMDB_LINK_SPEEDLIMIT_COND.code -> 4 + DataCodeEnum.OMDB_LINK_DIRECT.code -> 5 else -> 999 } } @@ -1631,8 +1636,8 @@ class SignUtil { } else if (itemGeometry is LineString) { val itemFoot = GeometryTools.pointToLineDistance( GeoPoint( - lineString.coordinates[lineString.coordinates.size-1].y, - lineString.coordinates[lineString.coordinates.size-1].x + lineString.coordinates[lineString.coordinates.size - 1].y, + lineString.coordinates[lineString.coordinates.size - 1].x ), lineString ) var dis = GeometryTools.getDistance( @@ -1649,7 +1654,5 @@ class SignUtil { } return 0 } - } - } \ No newline at end of file diff --git a/vtm b/vtm index 719c44b6..39b9993b 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 719c44b65d3ed26d725b24b3a5366b281c9e4fad +Subproject commit 39b9993b1cc5257d11c872161812ffe890e44bd9 From c9f084d2894890f3c12d0101ca76a64aefe708e1 Mon Sep 17 00:00:00 2001 From: squallzhjch Date: Thu, 21 Sep 2023 20:47:10 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E8=B0=83=E8=AF=95=E9=81=93=E8=B7=AF?= =?UTF-8?q?=E6=96=BD=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/omdb_config.json | 3 ++- .../java/com/navinfo/omqs/ui/activity/map/MainActivity.kt | 6 +++--- .../java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt | 6 ++++-- .../fragment/evaluationresult/EvaluationResultViewModel.kt | 4 ++-- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 370a37b2..88061ea6 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -35,7 +35,7 @@ "zoomMin": 15, "zoomMax": 17, "catch":true, - "checkLinkId": true + "checkLinkId": false }, "2002": { "table": "OMDB_RD_LINK_FUNCTION_CLASS", @@ -100,6 +100,7 @@ "code": 2017, "name": "道路施工", "catch":true, + "checkLinkId": false, "zoomMin": 15, "zoomMax": 17 }, diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 5fc097ed..36968056 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -478,9 +478,9 @@ class MainActivity : BaseActivity() { viewModel.liveDataItemList.observe(this) { if (it.isNotEmpty()) { if (leftFragment == null || leftFragment !is ItemListFragment) { - leftFragment = ItemListFragment { + leftFragment = ItemListFragment {fragment-> binding.mainActivityLeftFragment.visibility = View.GONE - supportFragmentManager.beginTransaction().remove(leftFragment!!).commit() + supportFragmentManager.beginTransaction().remove(fragment).commit() leftFragment = null null } @@ -696,7 +696,7 @@ class MainActivity : BaseActivity() { Toast.makeText(this, "输入格式不正确", Toast.LENGTH_SHORT).show() } } - dialog.dismiss() +// dialog.dismiss() } inputDialog.show() } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index fbe61198..5bed3636 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -1491,10 +1491,12 @@ class MainViewModel @Inject constructor( when (searchEnum) { SearchEnum.LINK -> { viewModelScope.launch(Dispatchers.IO) { + Log.e("jingo","查询link $msg") val link = realmOperateHelper.queryLink(linkPid = msg) if (link != null) { - link?.let { l -> - mapController.lineHandler.showLine(l.geometry) + Log.e("jingo","查询link ${link.geometry}") + withContext(Dispatchers.Main){ + mapController.lineHandler.showLine(link.geometry) dialog.dismiss() } } else { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt index 258ec4ec..c084c50a 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt @@ -184,8 +184,8 @@ class EvaluationResultViewModel @Inject constructor( if (linkId.isNotEmpty()) { viewModelScope.launch { val link = realmOperateHelper.queryLink(linkId) - link?.let { l -> - mapController.lineHandler.showLine(l.geometry) + if(link != null){ + mapController.lineHandler.showLine(link.geometry) } } } From 4b91feca229167da36d93e741b297ad747c22742 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Mon, 25 Sep 2023 14:37:51 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BD=A6=E9=81=93?= =?UTF-8?q?=E8=BE=B9=E7=95=8C=E7=B1=BB=E5=9E=8B=E5=AE=9E=E7=BA=BF=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=E6=A0=B7=E5=BC=8F2.=E4=BF=AE=E5=A4=8D=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=97=A0=E6=B3=95=E4=B8=8A=E4=BC=A0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omqs/http/taskupload/TaskUploadScope.kt | 8 ++- .../ui/fragment/tasklist/TaskViewModel.kt | 2 - .../src/main/assets/editormarker.xml | 71 +++++++++++++------ .../src/main/assets/omdb/icon_2013_0.svg | 11 +++ .../src/main/assets/omdb/icon_2013_1.svg | 11 +++ .../src/main/assets/omdb/icon_2013_2.svg | 11 +++ .../src/main/assets/omdb/icon_2013_6.svg | 11 +++ .../src/main/assets/omdb/icon_2013_7.svg | 11 +++ 8 files changed, 113 insertions(+), 23 deletions(-) create mode 100644 collect-library/src/main/assets/omdb/icon_2013_0.svg create mode 100644 collect-library/src/main/assets/omdb/icon_2013_1.svg create mode 100644 collect-library/src/main/assets/omdb/icon_2013_2.svg create mode 100644 collect-library/src/main/assets/omdb/icon_2013_6.svg create mode 100644 collect-library/src/main/assets/omdb/icon_2013_7.svg diff --git a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt index 6fec6aa7..67be46d0 100644 --- a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt +++ b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt @@ -125,10 +125,13 @@ class TaskUploadScope( } taskBean.hadLinkDvoList.forEach { hadLinkDvoBean -> + Log.e("jingo", "数据上传遍历开始") val linkStatus = 1 //存在原因标记未测评 if (hadLinkDvoBean.reason.isNotEmpty()) { + Log.e("jingo", "数据上传遍历开始0${hadLinkDvoBean.linkPid}") + //未测评 val linkStatus = 0 @@ -160,6 +163,8 @@ class TaskUploadScope( } else { + Log.e("jingo", "数据上传遍历开始1${hadLinkDvoBean.linkPid}") + val linkStatus = hadLinkDvoBean.linkStatus var s: String = "%.3f".format(hadLinkDvoBean.length)//保留一位小数(且支持四舍五入) @@ -221,8 +226,9 @@ class TaskUploadScope( } } } - realm.close() + Log.e("jingo", "数据上传遍历结束") } + realm.close() if (bodyList.size > 0) { val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object : diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index 5cde34aa..de898e70 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -505,7 +505,6 @@ class TaskViewModel @Inject constructor( } if(result==1){ withContext(Dispatchers.Main) { - liveDataTaskUpload.postValue(map) val mDialog = FirstDialog(context) mDialog.setTitle("提示?") mDialog.setMessage("此任务中存在新增Link无问题记录,请添加至少一条记录!") @@ -519,7 +518,6 @@ class TaskViewModel @Inject constructor( } }else if(result==2){ withContext(Dispatchers.Main) { - liveDataTaskUpload.postValue(map) val mDialog = FirstDialog(context) mDialog.setTitle("提示?") mDialog.setMessage("此任务中存在未测评link,请确认!") diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 0a4613e4..b284ea50 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1639,15 +1639,19 @@ - - + + + + + + + + + - - + @@ -1667,11 +1671,7 @@ - - - - - + @@ -1690,19 +1690,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + diff --git a/collect-library/src/main/assets/omdb/icon_2013_0.svg b/collect-library/src/main/assets/omdb/icon_2013_0.svg new file mode 100644 index 00000000..bcb9b125 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2013_0.svg @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_1.svg b/collect-library/src/main/assets/omdb/icon_2013_1.svg new file mode 100644 index 00000000..bd3e6b1e --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2013_1.svg @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_2.svg b/collect-library/src/main/assets/omdb/icon_2013_2.svg new file mode 100644 index 00000000..eeb06059 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2013_2.svg @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_6.svg b/collect-library/src/main/assets/omdb/icon_2013_6.svg new file mode 100644 index 00000000..ad834913 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2013_6.svg @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_7.svg b/collect-library/src/main/assets/omdb/icon_2013_7.svg new file mode 100644 index 00000000..4528138f --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2013_7.svg @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file From 1f34a8f306fd22f472e95add1d8c813c850ed9dc Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 26 Sep 2023 16:14:30 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BD=A6=E9=81=93?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E7=BA=BF=E6=89=A9=E5=85=85=E9=9D=A2=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/omdb_config.json | 1 + .../com/navinfo/omqs/db/ImportPreProcess.kt | 5 ++-- .../omqs/ui/activity/login/LoginViewModel.kt | 2 ++ .../omqs/ui/activity/map/MainActivity.kt | 11 +++----- .../ui/fragment/tasklist/TaskListAdapter.kt | 4 +++ .../ui/fragment/tasklist/TaskViewModel.kt | 4 ++- .../src/main/assets/editormarker.xml | 10 +++---- .../src/main/assets/omdb/icon_5001_1.png | Bin 0 -> 3755 bytes .../collect/library/utils/GeometryTools.java | 25 ++++++++++++++++++ 9 files changed, 46 insertions(+), 16 deletions(-) create mode 100644 collect-library/src/main/assets/omdb/icon_5001_1.png diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 1165cf0e..1a860371 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -523,6 +523,7 @@ "table": "OMDB_LANE_LINK_LG", "code": 5001, "name": "车道中心线", + "catch":false, "checkLinkId": false, "zoomMin": 18, "zoomMax": 20, diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt index 4281b648..8c2a6b53 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -6,7 +6,6 @@ import com.navinfo.collect.library.data.entity.RenderEntity import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.omqs.Constant import io.realm.Realm -import io.realm.RealmConfiguration import org.json.JSONArray import org.json.JSONObject import org.locationtech.jts.algorithm.Angle @@ -583,9 +582,9 @@ class ImportPreProcess { angleReference.renderEntityId = renderEntity.id angleReference.name = "${renderEntity.name}车道中线面" angleReference.table = renderEntity.table - angleReference.geometry = renderEntity.geometry + angleReference.geometry = GeometryTools.computeLine(0.00002,0.00002,renderEntity.geometry) angleReference.properties["qi_table"] = renderEntity.table - angleReference.properties["width"] = "3" + angleReference.properties["widthProperties"] = "3" angleReference.zoomMin = renderEntity.zoomMin angleReference.zoomMax = renderEntity.zoomMax angleReference.taskId = renderEntity.taskId diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt index d0f840ca..1d1736b8 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt @@ -14,6 +14,7 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.navinfo.collect.library.data.entity.RenderEntity import com.navinfo.collect.library.data.entity.TaskBean +import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.omqs.Constant import com.navinfo.omqs.bean.LoginUserBean import com.navinfo.omqs.bean.SysUserBean @@ -132,6 +133,7 @@ class LoginViewModel @Inject constructor( } //不指定IO,会在主线程里运行 jobLogin = viewModelScope.launch(Dispatchers.IO) { + //Log.e("qj", "computeline==${GeometryTools.computeLine(0.003,0.003,"LINESTRING(116.2730063860964 40.09052257957624 36.75, 116.27376497186042 40.090072453495395 38.34, 116.27413076766412 40.089855289361786 39.01, 116.27417239035157 40.08983061650492 39.15, 116.27466896728139 40.089535645040385 39.99, 116.2751211296483 40.089267551829636 40.67, 116.27545352868347 40.089070581974944 40.98, 116.27589660200627 40.088807594767246 41.28, 116.27604819769634 40.088718103405185 41.34, 116.27667570485863 40.08834486145473 41.43, 116.2770275412774 40.08813642434714 41.36, 116.27745673745146 40.087882150865546 41.14, 116.27778797172138 40.08768490714857 40.89, 116.2781675465249 40.087459905560266 40.45, 116.2783819045443 40.087332076220086 40.02, 116.27880692426884 40.0870801193608 39.32, 116.27943180930261 40.08670963506418 38.04, 116.27977508323622 40.08650562397605 37.39, 116.28016410016664 40.08627485623695 36.77, 116.28057924586821 40.0860283164225 36.29)")}") loginCheck(context, userName, password) } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 5fe871fd..746a27b2 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -1,9 +1,6 @@ package com.navinfo.omqs.ui.activity.map import android.app.Activity -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle @@ -11,7 +8,6 @@ import android.speech.tts.TextToSpeech import android.util.Log import android.view.MotionEvent import android.view.View -import android.view.View.OnLongClickListener import android.widget.EditText import android.widget.TextView import android.widget.Toast @@ -27,9 +23,9 @@ import com.blankj.utilcode.util.ClipboardUtils import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.tabs.TabLayout import com.navinfo.collect.library.data.entity.RenderEntity -import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.handler.MeasureLayerHandler +import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.omqs.Constant import com.navinfo.omqs.R import com.navinfo.omqs.bean.ImportConfig @@ -39,7 +35,6 @@ import com.navinfo.omqs.databinding.ActivityMainBinding import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager import com.navinfo.omqs.tools.LayerConfigUtils import com.navinfo.omqs.ui.activity.BaseActivity -import com.navinfo.omqs.ui.dialog.LoadingDialog import com.navinfo.omqs.ui.fragment.console.ConsoleFragment import com.navinfo.omqs.ui.fragment.itemlist.ItemListFragment import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapFragment @@ -792,7 +787,9 @@ class MainActivity : BaseActivity() { * zoomin */ fun zoomInOnclick(view: View) { - mapController.animationHandler.zoomIn() + Log.e("qj", "computeline==${GeometryTools.computeLine(0.00003,0.00003,"LINESTRING(116.2730063860964 40.09052257957624 36.75, 116.27376497186042 40.090072453495395 38.34, 116.27413076766412 40.089855289361786 39.01, 116.27417239035157 40.08983061650492 39.15, 116.27466896728139 40.089535645040385 39.99, 116.2751211296483 40.089267551829636 40.67, 116.27545352868347 40.089070581974944 40.98, 116.27589660200627 40.088807594767246 41.28, 116.27604819769634 40.088718103405185 41.34, 116.27667570485863 40.08834486145473 41.43, 116.2770275412774 40.08813642434714 41.36, 116.27745673745146 40.087882150865546 41.14, 116.27778797172138 40.08768490714857 40.89, 116.2781675465249 40.087459905560266 40.45, 116.2783819045443 40.087332076220086 40.02, 116.27880692426884 40.0870801193608 39.32, 116.27943180930261 40.08670963506418 38.04, 116.27977508323622 40.08650562397605 37.39, 116.28016410016664 40.08627485623695 36.77, 116.28057924586821 40.0860283164225 36.29)")}") + + //mapController.animationHandler.zoomIn() } /** diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt index 829b2aa4..fc2024b3 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt @@ -2,6 +2,7 @@ package com.navinfo.omqs.ui.fragment.tasklist import android.annotation.SuppressLint import android.graphics.Color +import android.text.TextUtils import android.util.Log import android.view.LayoutInflater import android.view.View @@ -225,6 +226,9 @@ class TaskListAdapter( binding.taskUploadBtn.stopAnimator() binding.taskUploadBtn.setText("重新同步") binding.taskUploadBtn.setProgress(100) + if(!TextUtils.isEmpty(taskBean.errMsg)){ + Toast.makeText(binding.root.context,taskBean.errMsg,Toast.LENGTH_LONG).show() + } } FileUploadStatus.NONE -> { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt index de898e70..5b30d286 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt @@ -503,7 +503,9 @@ class TaskViewModel @Inject constructor( } } } + realm.close() if(result==1){ + liveDataTaskUpload.postValue(map) withContext(Dispatchers.Main) { val mDialog = FirstDialog(context) mDialog.setTitle("提示?") @@ -517,6 +519,7 @@ class TaskViewModel @Inject constructor( mDialog.show() } }else if(result==2){ + liveDataTaskUpload.postValue(map) withContext(Dispatchers.Main) { val mDialog = FirstDialog(context) mDialog.setTitle("提示?") @@ -537,7 +540,6 @@ class TaskViewModel @Inject constructor( map[taskBean] = true liveDataTaskUpload.postValue(map) } - realm.close() } } diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index b284ea50..facd996d 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1587,12 +1587,12 @@ - - + + + - diff --git a/collect-library/src/main/assets/omdb/icon_5001_1.png b/collect-library/src/main/assets/omdb/icon_5001_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf39a45b3b0c601e3a93ba421936490f97b8839 GIT binary patch literal 3755 zcmaJ^eIS$l`X9+z4(VQ0RBS^}YcZR*hAFmrpLeq++H1LEHZviWmn1JIAulP1UZ#3v zLU($j5YKZ^5Akc!tI{gR{3?~~NjkTlr_TA~boS5pdtbY*&vku2-_Ld3TV7Crmw}$C z9s+?d@bRXFz$*`d&;pRU@Ge6jy$dfUGCE5ZD&8hb=1PSKcY&BEMEi)i+l3)Qt{^p` zN9c+`EWm+bEE$X8@5~pAY`F72HYp+r9F0J@ZcLGI`LRM7nkU>2##6Abuie0+K>-CD z;lQwENT|XX(0i9u7`iJUjK3?EPZnS|x}jZDoM8ZwP{u{4h~nZCol_{-uei?ee%?&L zqQAPxVky`^iefQ>&{VNhh$h?ETJvpfiD)OX4bfi6=h>6Ck@)M;BwLal!InrM+F27x z&LjtCdwcYsA1s_vD%j>6Li7AHAN)kY#>iw6X96KPIoT%J&PFWVP9T!WWP&Y;Kq6Vg z9@dGe@iK0Tb$p`5Hw2n6kuL=$GEf|ko=4>J#7Qy=7OwV>V~8Z*VdE43qzWdDkiwM^ zh&HzK$NJ{TVEk`ak?6a3qAW!C?|T0$aAH`hL`Vn`CW@1!eE9OVS=U0T13x3j&yfB64{RAVQ1?}`xZ+R^OHovc-gmD!M|hee;7Nj2$2NN zOcP4MokD@9R4hV&J+(9V<64M6#QQT=@Z(xYKa3^7#SrH2_CN0Wn+X=s{Pw$g;fL?~ z7skV)m%{3n=ds8L#9vqV(A>jP?yI9Z5>`1aS#|0KVf%5uP6>7Zr#%9sm}vcceq+|& zxyt-aGF_>T9J|CgQ=$J#|5i9xh2QmYaY3b)?uC7IpPE{JAKtX!f!(W5Pwzcxa37g@ z`!w;x8_oWiszAeaBojD#PaW7RmjSG_SI0hB_6bGoo;p+Bm@@EGl;sgV?HkNu1 zSSljA!YMuzjZj@N5GQE1^3?u+qY;!iuU~T%dAZEZAz=hn0fyeQt@Fe0&s}e5wX}X& z4M$p$9yR%~DhN5fdN$(CokqjIiJQ%HKRrmB z=?4{VO7^N_7tUM+PTZ+>RL$^ohtK|_d`0^<)oZg_ijij{pk~gwJ@t%RG&%S?3bu6S za?WE?gV{ttvM@f-sZ3d%`_dOV+I;3(sq#2dy?t0hl}@zmK0oWQhG!V9iS_MToT3I3 z3&m&k%g;?+`b(ri&r1hp7b05Yf>W&3SMpSWU2o}_MxYgw>cc)j{;0jMogL@Btb!@f zS=m82ZRCe9L;lu4W=zYHKx-@B;Z&27LAD1i+hAnqqCCj}STzmdBA*pQp1pqC76V&a zvhVhq7eG1sjnx%Ig5u@4pu73TQ^3$F>%q`nxv>+^?`#FLbUMiN^@1_MaYxGtunswz zYVxZ*T+QoU1&H%F$7F%#O;*1+jXcRbgSm2l&a-JlE9MFjICi^lz@ux;B*>tpP@A=} zu7p#C(Bl)(flj1Ss(Ou&Z!dr4&aOEL9SGUrxSXDymk|r!(9aO|6;A1uv*&muc(j$Y-%2eN7`U%hU5=|2$|kw6XA9Y`}s= z4EaSFJtf5L0@PsDd3b8S+@T`3;pz*f@45VIW@Pvf(uE)$G+fv^72)5tIPU&XU9GVb z$4`b)terez?^d|eLUE)paxbyA3BnGf|05{~GL+#JnFuC7WbdV9iiZ{}uy^^x`fgXF zjy)ND)y$_eyfwqf$3+kShV1V1a~W!=n=M=N)JLN|c(ptiIjsf*e!awko3Js)?`(-OlvYG3wQrqD=4CJCP;lwd z?9GR#Dwx^yG+So{`=l9Ke85YMMwXvSWAlxG54_$uBS0_X;HW{*xmshBuX^Eu zwWtozk5xY_bh%zi!D@@|Rdvf};~umLV8L9^fEqBJCn*X~_D#LU8n_EK_qk-Q11T5h zHD3b33fGR-;IUbK)VDd$J1Nfw%10Z|TpUK#r<$Nyd+Cxi_I{|4w!7$kkm)cg$`_C7 z*hQ66v5vpV-W< zSv~)yL9Ovn+!fuxUhz7`;qDV$$?#CPXi)%occ8pq=qIyQxNETvVRu}{woctUl1q6r zJoIAKlORAnvnGvd$#pHP#-;wmDPz_nl<5{ORJK*#igtYZ$Y8z)$0CI~RRS$WuNb`k z{6uNiqb({!la5^>Ztm=#X=ig2ThNMH+JCkWJZy@!>Qy;{66nQ}j-;K_InO72)xieIi53^@5|JxpgdAQJ7W4i<~;v} zrtZL}GxCNrBj)lS*ONO6QO|uec7yDKTuf%|eUx}p#hA<9pX$aw-QLlm$AL8lw?9(J z3%Pz|tiXfQhDnWPTdX(wdyz?;PGB#ggelOTAInAZGLLL0OFQ3K8~`{TslebAv3YOg zyD{KxtE|52d1?ywx!|6JP^Y*dZmH=vmzw$N+&B_KXD7JZo$r_&uN%x?*=Y4kxZ*m- zq~jea%o~5Ya$)YF^c4##z>)@!5rh72opYxg5+X`)SxjsK?Duda6xiBAEU=%eQo)M+WEwFVn ziya8KPX`UclEDCRW_l?qLaYuvg7sCxjG&OYF=OuC@>d>g;9)frqp$#+O3Zxs?cr4E zM_H-*CxO`h-$L(I>7q{e3`B+O#Q~3t)>|@8n&rQ7K*Rl9^IXokDJPevM%9R>>+8!rfyc#;>OHKEcW$z6 zYmHg44DOGmepK(YOYkp^t{sf*?%u7zk4_l_X^jyY3r78Ynz}t&bx6qLcB^(YVJbzu zyD@#{?a?7_5k8tvfwnqNRXf%Z#_n`o9j#)mg|=K#gQ6DNa*>9)vV{DT645ErEEtB) zoMWtC2UN9W`=(u0c6oHhH7Sc+Cl>(DVBaB5fAxzh)-#dj7<492R6SX5ZBHPczoL$)-CAP(j{)@H7iLbL}Wg zOFc3)*7Ypr*WC+^9}scN4tPeMe6TW*b$N>uKQPwP;}m6ehqud`HP*LG*pAO`ejYuV iQq_8|x%rDR2eIt5kC*9}dq(qrAARTnv<44O*1rH(26LzY literal 0 HcmV?d00001 diff --git a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java index 6dcbdd1e..20c238f8 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java @@ -2,6 +2,7 @@ package com.navinfo.collect.library.utils; import android.graphics.Point; import android.os.Build; +import android.text.TextUtils; import android.util.Log; import org.locationtech.jts.geom.Coordinate; @@ -13,6 +14,8 @@ import org.locationtech.jts.geom.MultiPoint; import org.locationtech.jts.geom.MultiPolygon; import org.locationtech.jts.geom.Polygon; import org.locationtech.jts.io.WKTReader; +import org.locationtech.jts.operation.buffer.BufferOp; +import org.locationtech.jts.operation.buffer.BufferParameters; import org.locationtech.jts.operation.linemerge.LineMerger; import org.oscim.core.GeoPoint; import org.oscim.core.MercatorProjection; @@ -1505,6 +1508,28 @@ public class GeometryTools { } + /** + * @param distLeft 单位km + * @param distRight 单位km + * @param wkt 几何 + * @return + */ + public static String computeLine(Double distLeft,Double distRight,String wkt){ + if(!TextUtils.isEmpty(wkt)){ + Geometry lineString1 = GeometryTools.createGeometry(wkt); + BufferParameters parameters1 = new BufferParameters(); + parameters1.setEndCapStyle(BufferParameters.CAP_FLAT); + parameters1.setSingleSided(true); + + Geometry buffer = BufferOp.bufferOp(lineString1, distLeft, parameters1); + Geometry buffer2 = BufferOp.bufferOp(lineString1, -distRight, parameters1); + String bufferWkt = buffer.union(buffer2).toString(); + Log.e("qj",bufferWkt); + return bufferWkt; + } + return ""; + } + public static FootAndDistance pointToLineDistance(GeoPoint point, Geometry geometry) { //定义垂线 FootAndDistance pointPairDistance = new FootAndDistance(point); From b4724f205eef2b9c8af89248b2fd171e73569cba Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 26 Sep 2023 16:32:05 +0800 Subject: [PATCH 08/11] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9=E8=BD=A6?= =?UTF-8?q?=E9=81=93=E4=B8=AD=E5=BF=83=E9=9D=A2=E6=A0=B7=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E7=BC=BA=E5=8F=A3=E9=97=AE=E9=A2=982?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9=E9=81=93=E8=B7=AF=E8=BE=B9=E7=95=8C?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=97=B4=E9=9A=94=E4=B8=8E=E8=BD=A6=E9=81=93?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collect-library/src/main/assets/editormarker.xml | 4 ++-- .../src/main/assets/omdb/icon_5001_0.png | Bin 0 -> 1370 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 collect-library/src/main/assets/omdb/icon_5001_0.png diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index facd996d..8ac29097 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1591,7 +1591,7 @@ --> - + @@ -1630,7 +1630,7 @@ --> - + diff --git a/collect-library/src/main/assets/omdb/icon_5001_0.png b/collect-library/src/main/assets/omdb/icon_5001_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6f21d1d324f5f4bbaf3dadd14b33b91f13ff7baa GIT binary patch literal 1370 zcmeAS@N?(olHy`uVBq!ia0vp^n-~}v-*T`4S$kDg{sAe*;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`x0{NT;9+AZi419+{nDKc2iWH!l_nt0}Ar*0NFF6V_CbP0l+XkK Da*#iK literal 0 HcmV?d00001 From 1a87a5ca34f8d319b22273cf471552351084b0d5 Mon Sep 17 00:00:00 2001 From: squallzhjch Date: Tue, 26 Sep 2023 17:15:18 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E7=82=B9?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=82=B9=E5=87=BB=E5=8A=9F=E8=83=BD=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=BC=E8=88=AA=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/navinfo/omqs/Constant.kt | 24 +- .../navinfo/omqs/bean/ScWarningCodeBean.kt | 26 ++ .../java/com/navinfo/omqs/bean/SignBean.kt | 2 +- .../com/navinfo/omqs/db/RoomAppDatabase.kt | 7 +- .../navinfo/omqs/db/dao/ScWarningCodeDao.kt | 32 +++ .../com/navinfo/omqs/tools/MetadataUtils.kt | 5 + .../omqs/ui/activity/map/MainActivity.kt | 56 ++-- .../omqs/ui/activity/map/MainViewModel.kt | 175 +++++++----- .../ui/fragment/console/ConsoleFragment.kt | 19 +- .../ui/fragment/navi/NaviSettingFragment.kt | 59 ++++ .../ui/fragment/navi/NaviSettingViewModel.kt | 6 + .../personalcenter/PersonalCenterViewModel.kt | 81 +++--- .../signMoreInfo/SignMoreInfoFragment.kt | 28 +- .../omqs/ui/widget/AddAndSubEditView.kt | 70 +++++ .../java/com/navinfo/omqs/util/NaviEngine.kt | 253 ++++++++++-------- .../java/com/navinfo/omqs/util/SignUtil.kt | 49 +++- .../main/res/layout/fragment_navi_setting.xml | 124 +++++++++ .../main/res/layout/view_add_del_editview.xml | 34 +++ .../res/navigation/left_drawer_nav_graph.xml | 8 + app/src/main/res/values/attrs.xml | 9 + app/src/main/res/values/styleable.xml | 7 - 21 files changed, 777 insertions(+), 297 deletions(-) create mode 100644 app/src/main/java/com/navinfo/omqs/bean/ScWarningCodeBean.kt create mode 100644 app/src/main/java/com/navinfo/omqs/db/dao/ScWarningCodeDao.kt create mode 100644 app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingFragment.kt create mode 100644 app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingViewModel.kt create mode 100644 app/src/main/java/com/navinfo/omqs/ui/widget/AddAndSubEditView.kt create mode 100644 app/src/main/res/layout/fragment_navi_setting.xml create mode 100644 app/src/main/res/layout/view_add_del_editview.xml delete mode 100644 app/src/main/res/values/styleable.xml diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index 1d9dbd16..9fc2a0a0 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -53,16 +53,16 @@ class Constant { /** * 当前安装的任务文件 */ - lateinit var currentInstallTaskFolder:File + lateinit var currentInstallTaskFolder: File - lateinit var currentInstallTaskConfig:RealmConfiguration + lateinit var currentInstallTaskConfig: RealmConfiguration /** * 当前选择的任务 */ - lateinit var currentSelectTaskFolder:File + lateinit var currentSelectTaskFolder: File - lateinit var currentSelectTaskConfig:RealmConfiguration + lateinit var currentSelectTaskConfig: RealmConfiguration /** * 用户附件数据目录 @@ -90,7 +90,6 @@ class Constant { var INDOOR_IP: String = "" - const val DEBUG = true /** @@ -150,6 +149,21 @@ class Constant { const val SELECT_TASK_ID = "select_task_id" //选中的任务ID const val SHARED_SYNC_TASK_LINK_ID = "shared_sync_task_link_id"//利用shared通知任务页面更新 + + /** + * 偏离距离 单位:米 + */ + const val NAVI_DEVIATION_DISTANCE = "navi_deviation_distance" + + /** + * 偏离次数上限 + */ + const val NAVI_DEVIATION_COUNT = "navi_deviation_count" + + /** + * 最远显示距离 米 + */ + const val NAVI_FARTHEST_DISPLAY_DISTANCE = "navi_farthest_display_distance" } diff --git a/app/src/main/java/com/navinfo/omqs/bean/ScWarningCodeBean.kt b/app/src/main/java/com/navinfo/omqs/bean/ScWarningCodeBean.kt new file mode 100644 index 00000000..7a535f18 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/bean/ScWarningCodeBean.kt @@ -0,0 +1,26 @@ +package com.navinfo.omqs.bean + +import android.os.Parcelable +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey +import kotlinx.parcelize.Parcelize + +@Entity(tableName = "ScWarningCode") +@Parcelize +data class ScWarningCodeBean( + @PrimaryKey(autoGenerate = true) + var id: Long = 0, + /** + * code + * 编码 + */ + @ColumnInfo("CODE") + val code: String = "", + /** + * 描述 + */ + @ColumnInfo("DESCRIBE") + val describe: String = "", + +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt b/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt index 745cc0fb..ee368890 100644 --- a/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt +++ b/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt @@ -9,7 +9,7 @@ data class SignBean( //图标ID var iconId: Int = 0, //定位点到目标距离 - val distance: Int = 0, + var distance: Int = 0, //左上图标中的文字 val iconText: String = "", //绑定的linkid diff --git a/app/src/main/java/com/navinfo/omqs/db/RoomAppDatabase.kt b/app/src/main/java/com/navinfo/omqs/db/RoomAppDatabase.kt index be0365e2..23ebc15d 100644 --- a/app/src/main/java/com/navinfo/omqs/db/RoomAppDatabase.kt +++ b/app/src/main/java/com/navinfo/omqs/db/RoomAppDatabase.kt @@ -6,17 +6,20 @@ import com.navinfo.collect.library.data.entity.NiLocation import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.omqs.bean.ScProblemTypeBean import com.navinfo.omqs.bean.ScRootCauseAnalysisBean +import com.navinfo.omqs.bean.ScWarningCodeBean import com.navinfo.omqs.db.dao.OfflineMapDao import com.navinfo.omqs.db.dao.ScProblemTypeDao import com.navinfo.omqs.db.dao.ScRootCauseAnalysisDao +import com.navinfo.omqs.db.dao.ScWarningCodeDao @Database( - entities = [OfflineMapCityBean::class, ScProblemTypeBean::class, ScRootCauseAnalysisBean::class], - version = 1, + entities = [OfflineMapCityBean::class, ScProblemTypeBean::class, ScRootCauseAnalysisBean::class, ScWarningCodeBean::class], + version = 2, exportSchema = false ) abstract class RoomAppDatabase : RoomDatabase() { abstract fun getOfflineMapDao(): OfflineMapDao abstract fun getScProblemTypeDao(): ScProblemTypeDao abstract fun getScRootCauseAnalysisDao(): ScRootCauseAnalysisDao + abstract fun getScWarningCodeDao(): ScWarningCodeDao } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/db/dao/ScWarningCodeDao.kt b/app/src/main/java/com/navinfo/omqs/db/dao/ScWarningCodeDao.kt new file mode 100644 index 00000000..68d38669 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/db/dao/ScWarningCodeDao.kt @@ -0,0 +1,32 @@ +package com.navinfo.omqs.db.dao + +import androidx.room.* +import com.navinfo.omqs.bean.ScProblemTypeBean +import com.navinfo.omqs.bean.ScWarningCodeBean + + +@Dao +interface ScWarningCodeDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertList(list: List) + + + @Query("delete from ScWarningCode") + suspend fun deleteAll() + + /** + * 更新整个数据库表,由于没有 + */ + @Transaction + suspend fun insertOrUpdateList(list: List) { + //先删除 + deleteAll() + //后插入 + insertList(list) + } + + @Query("select DESCRIBE from ScWarningCode where CODE=:code") + suspend fun findScWarningDescribe(code: String): String? + +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt b/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt index 6ad86b74..ea9bb37e 100644 --- a/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt +++ b/app/src/main/java/com/navinfo/omqs/tools/MetadataUtils.kt @@ -15,5 +15,10 @@ class MetadataUtils { const val TITLE_PROBLEM_LINK = "问题环节" const val TITLE_PROBLEM_CAUSE = "初步分析" } + + object ScWarningCodeTitle{ + const val TITLE_CODE = "编码" + const val TITLE_DESCRIBE = "描述" + } } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 36968056..28eb8950 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -1,9 +1,6 @@ package com.navinfo.omqs.ui.activity.map import android.app.Activity -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle @@ -11,7 +8,6 @@ import android.speech.tts.TextToSpeech import android.util.Log import android.view.MotionEvent import android.view.View -import android.view.View.OnLongClickListener import android.widget.EditText import android.widget.TextView import android.widget.Toast @@ -20,14 +16,14 @@ import androidx.activity.viewModels import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope +import androidx.navigation.NavController +import androidx.navigation.NavDestination import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.blankj.utilcode.util.ClipboardUtils import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.tabs.TabLayout -import com.navinfo.collect.library.data.entity.RenderEntity -import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.handler.MeasureLayerHandler import com.navinfo.omqs.Constant @@ -39,7 +35,6 @@ import com.navinfo.omqs.databinding.ActivityMainBinding import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager import com.navinfo.omqs.tools.LayerConfigUtils import com.navinfo.omqs.ui.activity.BaseActivity -import com.navinfo.omqs.ui.dialog.LoadingDialog import com.navinfo.omqs.ui.fragment.console.ConsoleFragment import com.navinfo.omqs.ui.fragment.itemlist.ItemListFragment import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapFragment @@ -50,9 +45,9 @@ import com.navinfo.omqs.ui.other.BaseToast import com.navinfo.omqs.ui.widget.RecyclerViewSpacesItemDecoration import com.navinfo.omqs.util.FlowEventBus import com.navinfo.omqs.util.NaviStatus -import com.navinfo.omqs.util.SignUtil import com.navinfo.omqs.util.SpeakMode import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.oscim.core.GeoPoint import org.oscim.renderer.GLViewport @@ -61,6 +56,7 @@ import java.math.BigDecimal import java.math.RoundingMode import javax.inject.Inject + /** * 地图主页面 */ @@ -357,22 +353,28 @@ class MainActivity : BaseActivity() { .replace(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment()) .commit() } - //启动问题记录 - val signBean = SignBean( - iconId = SignUtil.getSignIcon(it), - iconText = SignUtil.getSignIconText(it), - linkId = it.properties[RenderEntity.Companion.LinkTable.linkPid] - ?: "", - name = SignUtil.getSignNameText(it), - bottomRightText = SignUtil.getSignBottomRightText(it), - renderEntity = it, - isMoreInfo = SignUtil.isMoreInfo(it), - index = SignUtil.getRoadInfoIndex(it) - ) - val bundle = Bundle() - bundle.putParcelable("SignBean", signBean) - bundle.putBoolean("AutoSave", false) - rightController.navigate(R.id.EvaluationResultFragment, bundle) +// val listener: NavController.OnDestinationChangedListener = +// NavController.OnDestinationChangedListener { _, _, _ -> +// val bundle = Bundle() +// bundle.putParcelable("SignBean", it) +// bundle.putBoolean("AutoSave", false) +// rightController.navigate(R.id.EvaluationResultFragment, bundle) +// } +// rightController.addOnDestinationChangedListener(listener) +// if(!rightController.navigateUp()) { +// val bundle = Bundle() +// bundle.putParcelable("SignBean", it) +// bundle.putBoolean("AutoSave", false) +// rightController.navigate(R.id.EvaluationResultFragment, bundle) +// } + rightController.navigateUp() + lifecycleScope.launch{ + delay(100) + val bundle = Bundle() + bundle.putParcelable("SignBean", it) + bundle.putBoolean("AutoSave", false) + rightController.navigate(R.id.EvaluationResultFragment, bundle) + } } viewModel.liveIndoorToolsResp.observe(this) { @@ -478,7 +480,7 @@ class MainActivity : BaseActivity() { viewModel.liveDataItemList.observe(this) { if (it.isNotEmpty()) { if (leftFragment == null || leftFragment !is ItemListFragment) { - leftFragment = ItemListFragment {fragment-> + leftFragment = ItemListFragment { fragment -> binding.mainActivityLeftFragment.visibility = View.GONE supportFragmentManager.beginTransaction().remove(fragment).commit() leftFragment = null @@ -1222,10 +1224,10 @@ class MainActivity : BaseActivity() { /** * 隐藏更多信息面板 */ - fun backSignMoreInfo(){ + fun backSignMoreInfo() { val fragment = supportFragmentManager.findFragmentById(R.id.main_activity_sign_more_info_fragment) - if(fragment!=null&&!fragment.isHidden){ + if (fragment != null && !fragment.isHidden) { supportFragmentManager.beginTransaction().remove(fragment).commit() } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 5bed3636..6c4f7da9 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -37,6 +37,7 @@ import com.navinfo.omqs.Constant import com.navinfo.omqs.R import com.navinfo.omqs.bean.* import com.navinfo.omqs.db.RealmOperateHelper +import com.navinfo.omqs.db.RoomAppDatabase import com.navinfo.omqs.http.NetResult import com.navinfo.omqs.http.NetworkService import com.navinfo.omqs.tools.FileManager @@ -56,8 +57,10 @@ import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.withContext +import org.locationtech.jts.geom.Envelope import org.locationtech.jts.geom.Geometry import org.locationtech.jts.geom.LineString +import org.locationtech.spatial4j.shape.Rectangle import org.oscim.core.GeoPoint import org.oscim.core.MapPosition import org.oscim.map.Map @@ -78,7 +81,8 @@ class MainViewModel @Inject constructor( private val traceDataBase: TraceDataBase, private val realmOperateHelper: RealmOperateHelper, private val networkService: NetworkService, - private val sharedPreferences: SharedPreferences + private val sharedPreferences: SharedPreferences, + val roomAppDatabase: RoomAppDatabase ) : ViewModel(), SocketServer.OnConnectSinsListener, SharedPreferences.OnSharedPreferenceChangeListener { @@ -113,7 +117,7 @@ class MainViewModel @Inject constructor( /** * 当前选中的要展示的详细信息的要素 */ - val liveDataSignMoreInfo = MutableLiveData() + val liveDataSignMoreInfo = MutableLiveData() /** * 捕捉到的itemList @@ -379,8 +383,23 @@ class MainViewModel @Inject constructor( naviMutex.lock() getTaskBean() if (currentTaskBean != null && currentTaskBean!!.status == FileManager.Companion.FileDownloadStatus.DONE) { + val naviOption = NaviOption( + deviationCount = sharedPreferences.getInt( + Constant.NAVI_DEVIATION_COUNT, + 3 + ), + deviationDistance = sharedPreferences.getInt( + Constant.NAVI_DEVIATION_DISTANCE, + 15 + ), + farthestDisplayDistance = sharedPreferences.getInt( + Constant.NAVI_FARTHEST_DISPLAY_DISTANCE, + 500 + ) + ) naviEngine = NaviEngine(niMapController = mapController, realmOperateHelper = realmOperateHelper, + naviOption = naviOption, callback = object : OnNaviEngineCallbackListener { override fun planningPathStatus(status: NaviStatus) { @@ -403,20 +422,12 @@ class MainViewModel @Inject constructor( ) { val signList = mutableListOf() for (naviRouteItem in list) { - - val signBean = SignBean( - iconId = SignUtil.getSignIcon(naviRouteItem.data), - iconText = SignUtil.getSignIconText(naviRouteItem.data), - linkId = naviRouteItem.linkId, - distance = naviRouteItem.distance, - name = SignUtil.getSignNameText(naviRouteItem.data), - bottomRightText = SignUtil.getSignBottomRightText( - naviRouteItem.data - ), - renderEntity = naviRouteItem.data, - isMoreInfo = SignUtil.isMoreInfo(naviRouteItem.data), - index = SignUtil.getRoadInfoIndex(naviRouteItem.data) + val signBean = SignUtil.createSignBean( + viewModelScope, + roomAppDatabase, + naviRouteItem.data ) + signBean.distance = naviRouteItem.distance signList.add(signBean) } if (route != null) { @@ -436,13 +447,36 @@ class MainViewModel @Inject constructor( override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) { - if (key == Constant.SELECT_TASK_ID) { - viewModelScope.launch(Dispatchers.IO) { - naviMutex.lock() - naviEngineStatus = 0 - getTaskBean() - initQsRecordData() - naviMutex.unlock() + when (key) { + Constant.SELECT_TASK_ID -> { + viewModelScope.launch(Dispatchers.IO) { + naviMutex.lock() + naviEngineStatus = 0 + getTaskBean() + initQsRecordData() + naviMutex.unlock() + } + } + Constant.NAVI_DEVIATION_COUNT, + Constant.NAVI_FARTHEST_DISPLAY_DISTANCE, + Constant.NAVI_DEVIATION_DISTANCE -> { + if (naviEngine != null) { + val naviOption = NaviOption( + deviationCount = sharedPreferences.getInt( + Constant.NAVI_DEVIATION_COUNT, + 3 + ), + deviationDistance = sharedPreferences.getInt( + Constant.NAVI_DEVIATION_DISTANCE, + 15 + ), + farthestDisplayDistance = sharedPreferences.getInt( + Constant.NAVI_FARTHEST_DISPLAY_DISTANCE, + 500 + ) + ) + naviEngine!!.naviOption = naviOption + } } } } @@ -613,7 +647,8 @@ class MainViewModel @Inject constructor( } }.toList() if (filterResult.size == 1) { - liveDataSignMoreInfo.postValue(filterResult[0]) + val bean = SignUtil.createSignBean(viewModelScope, roomAppDatabase, filterResult[0]) + liveDataSignMoreInfo.postValue(bean) } else { liveDataItemList.postValue(filterResult) } @@ -642,15 +677,10 @@ class MainViewModel @Inject constructor( DataCodeEnum.OMDB_MULTI_DIGITIZED.code,//上下线分离 DataCodeEnum.OMDB_CON_ACCESS.code,//全封闭 -> { - val signBean = SignBean( - iconId = SignUtil.getSignIcon(element), - iconText = SignUtil.getSignIconText(element), - linkId = route.linkId, - name = SignUtil.getSignNameText(element), - bottomRightText = SignUtil.getSignBottomRightText(element), - renderEntity = element, - isMoreInfo = SignUtil.isMoreInfo(element), - index = SignUtil.getRoadInfoIndex(element) + val signBean = SignUtil.createSignBean( + viewModelScope, + roomAppDatabase, + element ) if (signBean.iconText != "") { topSignList.add( @@ -690,17 +720,11 @@ class MainViewModel @Inject constructor( DataCodeEnum.OMDB_LINK_FORM2_13.code, DataCodeEnum.OMDB_VIADUCT.code, -> { - val signBean = SignBean( - iconId = SignUtil.getSignIcon(element), - iconText = SignUtil.getSignIconText(element), - linkId = route.linkId, - name = SignUtil.getSignNameText(element), - bottomRightText = SignUtil.getSignBottomRightText(element), - renderEntity = element, - isMoreInfo = SignUtil.isMoreInfo(element), - index = SignUtil.getRoadInfoIndex(element), - - ) + val signBean = SignUtil.createSignBean( + viewModelScope, + roomAppDatabase, + element + ) topSignList.add( signBean ) @@ -781,21 +805,15 @@ class MainViewModel @Inject constructor( liveDataRoadName.postValue(element) continue } - - val signBean = SignBean( - iconId = SignUtil.getSignIcon(element), - iconText = SignUtil.getSignIconText(element), - linkId = linkId, - name = SignUtil.getSignNameText(element), - bottomRightText = SignUtil.getSignBottomRightText(element), - renderEntity = element, - isMoreInfo = SignUtil.isMoreInfo(element), - index = SignUtil.getRoadInfoIndex(element), - distance = SignUtil.getDistance( - footAndDistance, - newLineString, - element - ) + val signBean = SignUtil.createSignBean( + viewModelScope, + roomAppDatabase, + element + ) + signBean.distance = SignUtil.getDistance( + footAndDistance, + newLineString, + element ) // Log.e("jingo", "捕捉到的数据code ${element.code}") when (element.code) { @@ -1176,7 +1194,16 @@ class MainViewModel @Inject constructor( */ fun showSignMoreInfo(data: RenderEntity) { - liveDataSignMoreInfo.value = data + viewModelScope.launch(Dispatchers.IO) { + liveDataSignMoreInfo.postValue( + SignUtil.createSignBean( + viewModelScope, + roomAppDatabase, + data + ) + ) + } + if (data.wkt != null) { mapController.markerHandle.removeMarker("moreInfo") mapController.lineHandler.removeLine() @@ -1491,11 +1518,19 @@ class MainViewModel @Inject constructor( when (searchEnum) { SearchEnum.LINK -> { viewModelScope.launch(Dispatchers.IO) { - Log.e("jingo","查询link $msg") + Log.e("jingo", "查询link $msg") val link = realmOperateHelper.queryLink(linkPid = msg) if (link != null) { - Log.e("jingo","查询link ${link.geometry}") - withContext(Dispatchers.Main){ + Log.e("jingo", "查询link ${link.geometry}") + val lineString = GeometryTools.createGeometry(link.geometry) + val envelope = lineString.envelopeInternal + withContext(Dispatchers.Main) { + mapController.animationHandler.animateToBox( + envelope.maxX, + envelope.maxY, + envelope.minX, + envelope.minY + ) mapController.lineHandler.showLine(link.geometry) dialog.dismiss() } @@ -1513,15 +1548,13 @@ class MainViewModel @Inject constructor( viewModelScope.launch(Dispatchers.IO) { val qsRecordBean = realmOperateHelper.queryQcRecordBean(markId = msg) if (qsRecordBean != null) { - qsRecordBean?.let { l -> - val naviController = - (mapController.mMapView.context as Activity).findNavController(R.id.main_activity_right_fragment) - val bundle = Bundle() - bundle.putString("QsId", l.id) - naviController.navigate(R.id.EvaluationResultFragment, bundle) - ToastUtils.showLong(l.classType) - dialog.dismiss() - } + val naviController = + (mapController.mMapView.context as Activity).findNavController(R.id.main_activity_right_fragment) + val bundle = Bundle() + bundle.putString("QsId", qsRecordBean.id) + naviController.navigate(R.id.EvaluationResultFragment, bundle) + ToastUtils.showLong(qsRecordBean.classType) + dialog.dismiss() } else { withContext(Dispatchers.Main) { Toast.makeText( diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt index 61ba0768..895ee79d 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt @@ -18,6 +18,7 @@ import com.navinfo.omqs.databinding.FragmentConsoleBinding import com.navinfo.omqs.ui.activity.map.MainActivity import com.navinfo.omqs.ui.fragment.BaseFragment import com.navinfo.omqs.ui.fragment.layermanager.LayerManagerFragment +import com.navinfo.omqs.ui.fragment.navi.NaviSettingFragment import com.navinfo.omqs.ui.fragment.personalcenter.PersonalCenterFragment import dagger.hilt.android.AndroidEntryPoint @@ -290,7 +291,23 @@ class ConsoleFragment : BaseFragment(), OnClickListener { * 路径规划 */ R.id.console_route_bg, R.id.console_route_icon_bg -> { - Toast.makeText(requireContext(), "功能开发中", Toast.LENGTH_SHORT).show() +// Toast.makeText(requireContext(), "功能开发中", Toast.LENGTH_SHORT).show() + if (sceneFlag) { + mFragment = NaviSettingFragment { + TransitionManager.go(aScene, aTransition) + } + sceneFlag = false + TransitionManager.go(bScene, bTransition) + } else { + if (mFragment !is NaviSettingFragment) { + mFragment = NaviSettingFragment { + TransitionManager.go(aScene, aTransition) + } + childFragmentManager.beginTransaction().replace(fragmentId, mFragment!!) + .commit() + } + return + } } else -> {} } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingFragment.kt new file mode 100644 index 00000000..ab8b7b94 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingFragment.kt @@ -0,0 +1,59 @@ +package com.navinfo.omqs.ui.fragment.navi + +import android.content.SharedPreferences +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.viewModels +import com.navinfo.omqs.Constant +import com.navinfo.omqs.databinding.FragmentNaviSettingBinding +import com.navinfo.omqs.ui.fragment.BaseFragment +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject + +@AndroidEntryPoint +class NaviSettingFragment(private var backListener: (() -> Unit?)? = null) : BaseFragment() { + private var _binding: FragmentNaviSettingBinding? = null + + @Inject + lateinit var sharedPreferences: SharedPreferences + + private val binding get() = _binding!! + private val viewModel by viewModels() + + // private val viewModel by lazy { viewModels().value} + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentNaviSettingBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.offCount.setValue(sharedPreferences.getInt(Constant.NAVI_DEVIATION_COUNT,3)) + binding.offDistance.setValue(sharedPreferences.getInt(Constant.NAVI_DEVIATION_DISTANCE,15)) + binding.tipsDistance.setValue(sharedPreferences.getInt(Constant.NAVI_FARTHEST_DISPLAY_DISTANCE,500)) + + binding.imgConfirm.setOnClickListener{ + sharedPreferences.edit() + .putInt(Constant.NAVI_DEVIATION_DISTANCE,binding.offDistance.getValue()) + .putInt(Constant.NAVI_DEVIATION_COUNT,binding.offCount.getValue()) + .putInt(Constant.NAVI_FARTHEST_DISPLAY_DISTANCE,binding.tipsDistance.getValue()) + .commit() + backListener?.invoke() + } + + binding.imgBack.setOnClickListener { + backListener?.invoke() + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingViewModel.kt new file mode 100644 index 00000000..607e754e --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/navi/NaviSettingViewModel.kt @@ -0,0 +1,6 @@ +package com.navinfo.omqs.ui.fragment.navi + +import androidx.lifecycle.ViewModel + +class NaviSettingViewModel : ViewModel() { +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt index 0efe575e..25138031 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt @@ -14,11 +14,11 @@ import com.google.gson.Gson import com.navinfo.collect.library.data.entity.* import com.navinfo.omqs.bean.ScProblemTypeBean import com.navinfo.omqs.bean.ScRootCauseAnalysisBean +import com.navinfo.omqs.bean.ScWarningCodeBean import com.navinfo.omqs.db.ImportOMDBHelper import com.navinfo.omqs.db.RealmOperateHelper import com.navinfo.omqs.db.RoomAppDatabase -import com.navinfo.omqs.tools.MetadataUtils.Companion.ScProblemTypeTitle -import com.navinfo.omqs.tools.MetadataUtils.Companion.ScRootCauseAnalysisTitle +import com.navinfo.omqs.tools.MetadataUtils import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -134,7 +134,7 @@ class PersonalCenterViewModel @Inject constructor( hadSpeedLimitVarFile, gson.toJson(hadSpeedlimitVar) + "\r", true ) } - } + } } } ZipUtils.zipFiles( @@ -154,7 +154,7 @@ class PersonalCenterViewModel @Inject constructor( /** * 导入OMDB数据 * */ - fun importOMDBData(importOMDBHelper: ImportOMDBHelper, task: TaskBean? =null) { + fun importOMDBData(importOMDBHelper: ImportOMDBHelper, task: TaskBean? = null) { viewModelScope.launch(Dispatchers.IO) { Log.d("OMQSApplication", "开始导入数据") if (task != null) { @@ -192,35 +192,45 @@ class PersonalCenterViewModel @Inject constructor( var phenomenonIndex = -1 var problemLinkIndex = -1 var problemCauseIndex = -1 + var warningCodeIndex = -1 + var warningDescribeIndex = -1 val list = mutableListOf() val list2 = mutableListOf() + val list3 = mutableListOf() while (bufferedReader.readLine()?.also { line = it } != null) { // 处理 CSV 文件中的每一行数据 val data = line!!.split(",".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() if (index == 0) { for (i in data.indices) { when (data[i]) { - ScProblemTypeTitle.TITLE_ELEMENT_TYPE -> { + MetadataUtils.Companion.ScProblemTypeTitle.TITLE_ELEMENT_TYPE -> { elementTypeIndex = i } - ScProblemTypeTitle.TITLE_ELEMENT_CODE -> { + MetadataUtils.Companion.ScProblemTypeTitle.TITLE_ELEMENT_CODE -> { elementCodeIndex = i } - ScProblemTypeTitle.TITLE_CLASS_TYPE -> { + MetadataUtils.Companion.ScProblemTypeTitle.TITLE_CLASS_TYPE -> { classTypeIndex = i } - ScProblemTypeTitle.TITLE_PROBLEM_TYPE -> { + MetadataUtils.Companion.ScProblemTypeTitle.TITLE_PROBLEM_TYPE -> { problemTypeIndex = i } - ScProblemTypeTitle.TITLE_PHENOMENON -> { + MetadataUtils.Companion.ScProblemTypeTitle.TITLE_PHENOMENON -> { phenomenonIndex = i } - ScRootCauseAnalysisTitle.TITLE_PROBLEM_LINK -> { + MetadataUtils.Companion.ScRootCauseAnalysisTitle.TITLE_PROBLEM_LINK -> { problemLinkIndex = i } - ScRootCauseAnalysisTitle.TITLE_PROBLEM_CAUSE -> { + MetadataUtils.Companion.ScRootCauseAnalysisTitle.TITLE_PROBLEM_CAUSE -> { problemCauseIndex = i } + MetadataUtils.Companion.ScWarningCodeTitle.TITLE_CODE -> { + warningCodeIndex = i + } + MetadataUtils.Companion.ScWarningCodeTitle.TITLE_DESCRIBE -> { + warningDescribeIndex = i + } + } } } else { @@ -244,6 +254,12 @@ class PersonalCenterViewModel @Inject constructor( problemCause = data[problemCauseIndex], ) list2.add(bean) + } else if (warningDescribeIndex > -1 && warningCodeIndex > -1) { + val bean = ScWarningCodeBean( + code = data[warningCodeIndex], + describe = data[warningDescribeIndex] + ) + list3.add(bean) } else { liveDataMessage.postValue("元数据表规格不正确,请仔细核对") break @@ -259,49 +275,14 @@ class PersonalCenterViewModel @Inject constructor( liveDataMessage.postValue("元数据表导入成功") roomAppDatabase.getScRootCauseAnalysisDao().insertOrUpdateList(list2) } + if(list3.isNotEmpty()){ + liveDataMessage.postValue("标牌对照表导入成功") + roomAppDatabase.getScWarningCodeDao().insertList(list3) + } bufferedReader.close() inputStreamReader.close() inputStream.close() -// val workbook = WorkbookFactory.create(inputStream) -// //获取所有sheet -// val sheet1 = workbook.getSheet("SC_PROBLEM_TYPE") -// sheet1?.let { -// val rowCount: Int = it.physicalNumberOfRows // 获取行数 -// val list = mutableListOf() -// for (i in 1 until rowCount) { -// val row: Row = it.getRow(i) // 获取行 -//// val cellCount: Int = row.physicalNumberOfCells // 获取列数 -// val bean = ScProblemTypeBean( -// elementType = row.getCell(0).stringCellValue, -// elementCode = row.getCell(1).numericCellValue.toString(), -// classType = row.getCell(2).stringCellValue, -// problemType = row.getCell(3).stringCellValue, -// phenomenon = row.getCell(4).stringCellValue -// ) -// list.add(bean) -// Log.e("jingo", bean.toString()) -// } -// roomAppDatabase.getScProblemTypeDao().insertOrUpdateList(list) -// } -// val sheet2 = workbook.getSheet("SC_ROOT_CAUSE_ANALYSIS") -// sheet2?.let { -// val rowCount: Int = it.physicalNumberOfRows // 获取行数 -// val list = mutableListOf() -// for (i in 1 until rowCount) { -// val row: Row = it.getRow(i) // 获取行 -// val cellCount: Int = row.physicalNumberOfCells // 获取列数 -// if (cellCount == 2) { -// val bean = ScRootCauseAnalysisBean() -// bean.problemLink = row.getCell(0).stringCellValue -// bean.problemCause = row.getCell(1).stringCellValue -// list.add(bean) -// Log.e("jingo", bean.toString()) -// } -// } -// roomAppDatabase.getScRootCauseAnalysisDao().insertOrUpdateList(list) -// } -// workbook.close() } catch (e: IOException) { e.printStackTrace() diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt index 54de09fa..421347bf 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt @@ -5,6 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels +import androidx.lifecycle.lifecycleScope import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import com.navinfo.collect.library.data.entity.RenderEntity @@ -56,29 +57,29 @@ class SignMoreInfoFragment : BaseFragment() { drawableLeft, null, drawableRight, null ) - when (it.code) { + when (it.renderEntity.code) { //道路名 DataCodeEnum.OMDB_LINK_NAME.code -> { val adapter = RoadNameInfoAdapter() binding.signInfoRecyclerview.adapter = adapter - adapter.refreshData(SignUtil.getRoadNameList(it)) + adapter.refreshData(SignUtil.getRoadNameList(it.renderEntity)) } //车道边界类型 DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code -> { val adapter = LaneBoundaryAdapter() binding.signInfoRecyclerview.adapter = adapter - adapter.refreshData(SignUtil.getLaneBoundaryTypeInfo(it)) + adapter.refreshData(SignUtil.getLaneBoundaryTypeInfo(it.renderEntity)) } DataCodeEnum.OMDB_INTERSECTION.code -> { val adapter = LaneBoundaryAdapter() binding.signInfoRecyclerview.adapter = adapter - adapter.refreshData(SignUtil.getIntersectionInfo(it)) + adapter.refreshData(SignUtil.getIntersectionInfo(it.renderEntity)) } //收费站 DataCodeEnum.OMDB_TOLLGATE.code -> { val adapter = LaneBoundaryAdapter() binding.signInfoRecyclerview.adapter = adapter - adapter.refreshData(SignUtil.getTollgateInfo(it)) + adapter.refreshData(SignUtil.getTollgateInfo(it.renderEntity)) } //电子眼 DataCodeEnum.OMDB_ELECTRONICEYE.code -> { @@ -94,10 +95,10 @@ class SignMoreInfoFragment : BaseFragment() { ) val adapter = TwoItemAdapter() binding.signInfoRecyclerview.adapter = adapter - adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it)) + adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it.renderEntity)) } else -> { - val adapter = SignUtil.getMoreInfoAdapter(it) + val adapter = SignUtil.getMoreInfoAdapter(it.renderEntity) binding.signInfoRecyclerview.adapter = adapter } } @@ -117,18 +118,7 @@ class SignMoreInfoFragment : BaseFragment() { val bundle = Bundle() val element = viewModel.liveDataSignMoreInfo.value if (element != null) { - val signBean = SignBean( - iconId = SignUtil.getSignIcon(element), - iconText = SignUtil.getSignIconText(element), - linkId = element.properties[RenderEntity.Companion.LinkTable.linkPid] - ?: "", - name = SignUtil.getSignNameText(element), - bottomRightText = SignUtil.getSignBottomRightText(element), - renderEntity = element, - isMoreInfo = SignUtil.isMoreInfo(element), - index = SignUtil.getRoadInfoIndex(element) - ) - bundle.putParcelable("SignBean", signBean) + bundle.putParcelable("SignBean", element) bundle.putBoolean("AutoSave", false) rightController.navigate(R.id.EvaluationResultFragment, bundle) } diff --git a/app/src/main/java/com/navinfo/omqs/ui/widget/AddAndSubEditView.kt b/app/src/main/java/com/navinfo/omqs/ui/widget/AddAndSubEditView.kt new file mode 100644 index 00000000..3943b9ed --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/ui/widget/AddAndSubEditView.kt @@ -0,0 +1,70 @@ +package com.navinfo.omqs.ui.widget + +import android.content.Context +import android.text.Editable +import android.text.TextWatcher +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.EditText +import android.widget.ImageView +import android.widget.LinearLayout +import com.navinfo.omqs.R + +class AddAndSubEditView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr), View.OnClickListener { + + private var valueText: Int = 0 + private val editView: EditText + + init { + val inflater = LayoutInflater.from(context) + val view = inflater.inflate(R.layout.view_add_del_editview, this) + + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.AddAndSubEditView) + valueText = typedArray.getInteger(R.styleable.AddAndSubEditView_textValue, 0) + editView = view.findViewById(R.id.edit_text) + editView.setText("$valueText") + editView.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + } + + override fun afterTextChanged(s: Editable) { + try { + valueText = s.toString().toInt() + } catch (e: java.lang.Exception) { + + } + } + + }) + view.findViewById(R.id.del).setOnClickListener(this) + view.findViewById(R.id.add).setOnClickListener(this) + } + + override fun onClick(v: View) { + when (v.id) { + R.id.del -> { + valueText-- + editView.setText("$valueText") + } + R.id.add -> { + valueText++ + editView.setText("$valueText") + } + } + } + + fun getValue(): Int { + return valueText + } + + fun setValue(value:Int) { + valueText = value + editView.setText("$valueText") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt b/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt index e3e10f4f..de61b5c0 100644 --- a/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt +++ b/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt @@ -15,7 +15,7 @@ import org.locationtech.jts.geom.LineString import org.locationtech.jts.geom.Point import org.oscim.core.GeoPoint -public interface OnNaviEngineCallbackListener { +interface OnNaviEngineCallbackListener { fun planningPathStatus(code: NaviStatus) // fun planningPathError(errorCode: NaviStatus, errorMessage: String) @@ -33,10 +33,33 @@ enum class NaviStatus { } +data class NaviOption( + /** + * 偏离距离 单位:米 + */ + var deviationDistance: Int = 15, + + /** + * 偏离次数上限 + */ + var deviationCount: Int = 5, + +// /** +// * 局部匹配时,没走过的路段还记录1000米 +// */ +// var nextRouteDistance: Int = 1000, + + /** + * 最远显示距离 米 + */ + var farthestDisplayDistance: Int = 550, +) + class NaviEngine( private val niMapController: NIMapController, private val realmOperateHelper: RealmOperateHelper, - val callback: OnNaviEngineCallbackListener + val callback: OnNaviEngineCallbackListener, + var naviOption: NaviOption = NaviOption() ) { /** @@ -64,30 +87,30 @@ class NaviEngine( DataCodeEnum.OMDB_LINK_NAME.name, ) - /** - * 偏离距离 单位:米 - */ - private val DEVIATION_DISTANCE = 15 - - /** - * 偏离次数上限 - */ - private val DEVIATION_COUNT = 5 - +// /** +// * 偏离距离 单位:米 +// */ +// private val DEVIATION_DISTANCE = 15 +// +// /** +// * 偏离次数上限 +// */ +// private val DEVIATION_COUNT = 5 +// /** * 局部匹配时,走过的路段还记录100米 */ private val PASSED_ROUTE_DISTANCE = 100 - - /** - * 局部匹配时,没走过的路段还记录1000米 - */ - private val NEXT_ROUTE_DISTANCE = 1000 - - /** - * 最远显示距离 米 - */ - private val FARTHEST_DISPLAY_DISTANCE = 550 +// +// /** +// * 局部匹配时,没走过的路段还记录1000米 +// */ +// private val NEXT_ROUTE_DISTANCE = 1000 +// +// /** +// * 最远显示距离 米 +// */ +// private val FARTHEST_DISPLAY_DISTANCE = 550 /** * 绑定失败次数 @@ -144,32 +167,34 @@ class NaviEngine( } set(value) { val list = mutableListOf() - val fRoute = value[0] - //第一个路段加入 - list.addAll(fRoute.pointList) - //起始点位置 - fRoute.startIndexInPath = 0 - var startPoint = fRoute.pointList.size - 1 - //终点位置 - fRoute.endIndexIntPath = startPoint - fRoute.indexInPath = 0 + if (value.size > 0) { + val fRoute = value[0] + //第一个路段加入 + list.addAll(fRoute.pointList) + //起始点位置 + fRoute.startIndexInPath = 0 + var startPoint = fRoute.pointList.size - 1 + //终点位置 + fRoute.endIndexIntPath = startPoint + fRoute.indexInPath = 0 - for (i in 1 until value.size) { - val route = value[i] - route.startIndexInPath = startPoint - if (route.itemList != null) { - for (naviItem in route.itemList!!) { - naviItem.index += startPoint + for (i in 1 until value.size) { + val route = value[i] + route.startIndexInPath = startPoint + if (route.itemList != null) { + for (naviItem in route.itemList!!) { + naviItem.index += startPoint + } } + startPoint += route.pointList.size - 1 + route.endIndexIntPath = startPoint + route.indexInPath = i + val list2 = ArrayList(route.pointList.toList()) + list2.removeAt(0) + list.addAll(list2) } - startPoint += route.pointList.size - 1 - route.endIndexIntPath = startPoint - route.indexInPath = i - val list2 = ArrayList(route.pointList.toList()) - list2.removeAt(0) - list.addAll(list2) + geometry = GeometryTools.createLineString(list) } - geometry = GeometryTools.createLineString(list) field = value } @@ -257,73 +282,78 @@ class NaviEngine( break } } - if (routeStart != null) { - var sNode = "" - var eNode = "" - //如果sNode,eNode是顺方向,geometry 不动,否则反转 - if (routeStart.direct == 3) { - routeStart.pointList.reverse() - sNode = routeStart.eNode - eNode = routeStart.sNode - } else { - sNode = routeStart.sNode - eNode = routeStart.eNode + + if (routeStart == null) { + routeStart = tempRouteList[0] + tempRouteList.removeAt(0) + } + + var sNode = "" + var eNode = "" + //如果sNode,eNode是顺方向,geometry 不动,否则反转 + if (routeStart.direct == 3) { + routeStart.pointList.reverse() + sNode = routeStart.eNode + eNode = routeStart.sNode + } else { + sNode = routeStart.sNode + eNode = routeStart.eNode + } + newRouteList.add(routeStart) + var bBreak = true + while (bBreak) { + //先找其实link的后续link + var bHasNext = false + for (route in tempRouteList) { + //如果是link 的e 对下个link的s,方向不用动,否则下个link的geometry反转 + if (route.sNode != "" && eNode == route.sNode) { + newRouteList.add(route) + tempRouteList.remove(route) + eNode = route.eNode + bHasNext = true + break + } else if (route.eNode != "" && eNode == route.eNode) { + route.pointList.reverse() + newRouteList.add(route) + tempRouteList.remove(route) + eNode = route.sNode + bHasNext = true + break + } } - newRouteList.add(routeStart) - var bBreak = true - while (bBreak) { - //先找其实link的后续link - var bHasNext = false - for (route in tempRouteList) { - //如果是link 的e 对下个link的s,方向不用动,否则下个link的geometry反转 - if (route.sNode != "" && eNode == route.sNode) { - newRouteList.add(route) - tempRouteList.remove(route) - eNode = route.eNode - bHasNext = true - break - } else if (route.eNode != "" && eNode == route.eNode) { - route.pointList.reverse() - newRouteList.add(route) - tempRouteList.remove(route) - eNode = route.sNode - bHasNext = true - break - } + //先找其实link的起始link + var bHasLast = false + for (route in tempRouteList) { + //如果是link 的s 对上个link的e,方向不用动,否则下个link的geometry反转 + if (route.eNode != "" && sNode == route.eNode) { + newRouteList.add(0, route) + tempRouteList.remove(route) + sNode = route.sNode + bHasLast = true + break + } else if (route.sNode != "" && sNode == route.sNode) { + route.pointList.reverse() + newRouteList.add(0, route) + tempRouteList.remove(route) + sNode = route.eNode + bHasLast = true + break } - //先找其实link的起始link - var bHasLast = false - for (route in tempRouteList) { - //如果是link 的s 对上个link的e,方向不用动,否则下个link的geometry反转 - if (route.eNode != "" && sNode == route.eNode) { - newRouteList.add(0, route) - tempRouteList.remove(route) - sNode = route.sNode - bHasLast = true - break - } else if (route.sNode != "" && sNode == route.sNode) { - route.pointList.reverse() - newRouteList.add(0, route) - tempRouteList.remove(route) - sNode = route.eNode - bHasLast = true - break - } - } - if (tempRouteList.size == 0) { + } + if (tempRouteList.size == 0) { + bBreak = false + } else { + if (!bHasLast && !bHasNext) { bBreak = false - } else { - if (!bHasLast && !bHasNext) { - bBreak = false - callback.planningPathStatus( - NaviStatus.NAVI_STATUS_PATH_ERROR_BLOCKED - ) - realm.close() - return - } + callback.planningPathStatus( + NaviStatus.NAVI_STATUS_PATH_ERROR_BLOCKED + ) + realm.close() + return } } } + val itemMap: MutableMap> = mutableMapOf() //查询每根link上的关联要素 for (route in newRouteList) { @@ -415,7 +445,7 @@ class NaviEngine( val pointPairDistance = GeometryTools.pointToLineDistance(point, geometry) //定义垂线 //定位点到垂足距离不超过30米 - if (pointPairDistance.getMeterDistance() < DEVIATION_DISTANCE) { + if (pointPairDistance.getMeterDistance() < naviOption.deviationDistance) { footIndex = pointPairDistance.footIndex // Log.e( // "jingo", @@ -453,7 +483,7 @@ class NaviEngine( val pointPairDistance = GeometryTools.pointToLineDistance(point, tempGeometry) //定义垂线 //定位点到垂足距离不超过30米 - if (pointPairDistance.getMeterDistance() < DEVIATION_DISTANCE) { + if (pointPairDistance.getMeterDistance() < naviOption.deviationDistance) { footIndex = pointPairDistance.footIndex + tempRoutList[0].startIndexInPath // Log.e("jingo", "局部 当前绑定到了整条路线的第 $footIndex 点") val lastRouteIndex = routeIndex @@ -531,7 +561,7 @@ class NaviEngine( tempIndex = rightI + 1 distance = GeometryTools.getDistance(disPoints) // Log.e("jingo", "我的距离${distance} 下一个${tempIndex} 位置${rightI}") - if (distance < FARTHEST_DISPLAY_DISTANCE && distance > -1) { + if (distance < naviOption.farthestDisplayDistance && distance > -1) { naviItem.distance = distance.toInt() bindingItemList.add(naviItem) } else { @@ -539,7 +569,7 @@ class NaviEngine( } } } - if (distance >= FARTHEST_DISPLAY_DISTANCE) { + if (distance >= naviOption.farthestDisplayDistance) { break } } @@ -570,7 +600,8 @@ class NaviEngine( distance = 0.0 //没走过的路是否有1000米 var j = routeIndex + 1 - while (j < routeList.size && distance < NEXT_ROUTE_DISTANCE) { + val nextDis = naviOption.farthestDisplayDistance + 500 + while (j < routeList.size && distance < nextDis) { val routeT = routeList[j] tempRoutList.add(routeT) distance += routeT.length @@ -596,7 +627,7 @@ class NaviEngine( */ private fun deviationUp() { errorCount++ - if (errorCount >= DEVIATION_COUNT) { + if (errorCount >= naviOption.deviationCount) { callback.planningPathStatus(NaviStatus.NAVI_STATUS_DISTANCE_OFF) bindingReset() } diff --git a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt index 9bff4a7a..46a5286c 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -1,6 +1,7 @@ package com.navinfo.omqs.util import android.util.Log +import androidx.lifecycle.lifecycleScope import com.navinfo.collect.library.data.entity.RenderEntity import com.navinfo.collect.library.enums.DataCodeEnum import com.navinfo.collect.library.utils.FootAndDistance @@ -8,10 +9,15 @@ import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.omqs.R import com.navinfo.omqs.bean.RoadNameBean import com.navinfo.omqs.bean.SignBean +import com.navinfo.omqs.db.RoomAppDatabase import com.navinfo.omqs.ui.activity.map.LaneInfoItem import com.navinfo.omqs.ui.fragment.signMoreInfo.LaneBoundaryItem import com.navinfo.omqs.ui.fragment.signMoreInfo.TwoItemAdapter import com.navinfo.omqs.ui.fragment.signMoreInfo.TwoItemAdapterItem +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.json.JSONArray import org.json.JSONObject import org.locationtech.jts.geom.Geometry @@ -23,6 +29,28 @@ import java.lang.reflect.Field class SignUtil { companion object { + suspend fun createSignBean( + scope: CoroutineScope, + roomAppDatabase: RoomAppDatabase, + element: RenderEntity + ): SignBean { + return SignBean( + iconId = getSignIcon(element), + iconText = getSignIconText(element), + linkId = element.properties[RenderEntity.Companion.LinkTable.linkPid] + ?: "", + name = getSignNameText(element), + bottomRightText = getSignBottomRightText( + scope, + roomAppDatabase, + element + ), + renderEntity = element, + isMoreInfo = isMoreInfo(element), + index = getRoadInfoIndex(element) + ) + } + /** * 获取面板上的文字 */ @@ -203,7 +231,6 @@ class SignUtil { } catch (e: Throwable) { } - } //道路方向 DataCodeEnum.OMDB_LINK_DIRECT.code -> { @@ -799,9 +826,25 @@ class SignUtil { /** * 右下角文字 */ - fun getSignBottomRightText(data: RenderEntity): String { + suspend fun getSignBottomRightText( + scope: CoroutineScope, + roomAppDatabase: RoomAppDatabase, + data: RenderEntity + ): String { return when (data.code) { - + //警示信息 + DataCodeEnum.OMDB_WARNINGSIGN.code -> { + var describe = "" + val job = scope.launch(Dispatchers.IO) { + val typeCode = data.properties["typeCode"] + if (typeCode != null) { + describe = roomAppDatabase.getScWarningCodeDao().findScWarningDescribe(typeCode).toString() + } + } + job.join() + Log.e("jingo", "警示信息 类型: $describe") + return describe + } //条件点限速 DataCodeEnum.OMDB_SPEEDLIMIT_COND.code -> getConditionLimitText(data) //电子眼 diff --git a/app/src/main/res/layout/fragment_navi_setting.xml b/app/src/main/res/layout/fragment_navi_setting.xml new file mode 100644 index 00000000..c04532c6 --- /dev/null +++ b/app/src/main/res/layout/fragment_navi_setting.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/view_add_del_editview.xml b/app/src/main/res/layout/view_add_del_editview.xml new file mode 100644 index 00000000..18268c16 --- /dev/null +++ b/app/src/main/res/layout/view_add_del_editview.xml @@ -0,0 +1,34 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/left_drawer_nav_graph.xml b/app/src/main/res/navigation/left_drawer_nav_graph.xml index 81d0f6be..28e540a3 100644 --- a/app/src/main/res/navigation/left_drawer_nav_graph.xml +++ b/app/src/main/res/navigation/left_drawer_nav_graph.xml @@ -44,4 +44,12 @@ tools:layout="@layout/fragment_qs_record_list"> + + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 5575ace8..21738b12 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -15,4 +15,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styleable.xml b/app/src/main/res/values/styleable.xml deleted file mode 100644 index 45612391..00000000 --- a/app/src/main/res/values/styleable.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file From 3471ac9b93ec7de208a70f5aa30f2b622468c8d2 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 26 Sep 2023 17:18:17 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E8=BF=9E=E7=BB=AD=E7=82=B9=E5=87=BB=E5=90=8E=E5=8F=AA=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E6=9C=80=E8=BF=91=E4=B8=80=E6=9D=A1=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/navinfo/omqs/ui/activity/map/MainActivity.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 746a27b2..abd9f946 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -16,6 +16,8 @@ import androidx.activity.viewModels import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.viewModelScope +import androidx.navigation.Navigation import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -48,6 +50,7 @@ import com.navinfo.omqs.util.NaviStatus import com.navinfo.omqs.util.SignUtil import com.navinfo.omqs.util.SpeakMode import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.oscim.core.GeoPoint import org.oscim.renderer.GLViewport @@ -345,12 +348,19 @@ class MainActivity : BaseActivity() { } } viewModel.liveDataSignMoreInfo.observe(this) { + + if(!rightController.backQueue.isEmpty()){ + rightController.navigateUp() + } + val fragment = supportFragmentManager.findFragmentById(R.id.main_activity_sign_more_info_fragment) if (fragment == null) { supportFragmentManager.beginTransaction() .replace(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment()) .commit() + }else{ + supportFragmentManager.beginTransaction().add(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment()).commit() } //启动问题记录 val signBean = SignBean( From 4c18381125179c75e5302a48306ae9f1c4159e6f Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 26 Sep 2023 17:46:14 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A4=9A=E7=82=B9?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=82=B9=E5=87=BB=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omqs/ui/activity/login/LoginActivity.kt | 8 +++- .../omqs/ui/activity/map/MainActivity.kt | 40 ++++++++----------- .../signMoreInfo/SignMoreInfoFragment.kt | 2 +- .../main/res/menu/personal_center_menu.xml | 2 +- vtm | 2 +- 5 files changed, 26 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt index fd43b4bd..f6a9b4f4 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt @@ -40,7 +40,13 @@ class LoginActivity : CheckPermissionsActivity() { binding.activity = this initView() Log.e("jingo", getScreenParams()) - UMConfigure.init(this, "650bece7b2f6fa00ba573c7a", "native", UMConfigure.DEVICE_TYPE_PHONE, "") + UMConfigure.init( + this, + "650bece7b2f6fa00ba573c7a", + "native", + UMConfigure.DEVICE_TYPE_PHONE, + "" + ) } private fun getScreenParams(): String { diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index abd9f946..2f205215 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -51,6 +51,7 @@ import com.navinfo.omqs.util.SignUtil import com.navinfo.omqs.util.SpeakMode import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.oscim.core.GeoPoint import org.oscim.renderer.GLViewport @@ -353,31 +354,22 @@ class MainActivity : BaseActivity() { rightController.navigateUp() } - val fragment = - supportFragmentManager.findFragmentById(R.id.main_activity_sign_more_info_fragment) - if (fragment == null) { - supportFragmentManager.beginTransaction() - .replace(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment()) - .commit() - }else{ - supportFragmentManager.beginTransaction().add(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment()).commit() + lifecycleScope.launch{ + delay(100) + val fragment = + supportFragmentManager.findFragmentById(R.id.main_activity_sign_more_info_fragment) + if (fragment == null) { + supportFragmentManager.beginTransaction() + .replace(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment()) + .commit() + }else{ + supportFragmentManager.beginTransaction().add(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment()).commit() + } + val bundle = Bundle() + bundle.putParcelable("SignBean", it) + bundle.putBoolean("AutoSave", false) + rightController.navigate(R.id.EvaluationResultFragment, bundle) } - //启动问题记录 - val signBean = SignBean( - iconId = SignUtil.getSignIcon(it), - iconText = SignUtil.getSignIconText(it), - linkId = it.properties[RenderEntity.Companion.LinkTable.linkPid] - ?: "", - name = SignUtil.getSignNameText(it), - bottomRightText = SignUtil.getSignBottomRightText(it), - renderEntity = it, - isMoreInfo = SignUtil.isMoreInfo(it), - index = SignUtil.getRoadInfoIndex(it) - ) - val bundle = Bundle() - bundle.putParcelable("SignBean", signBean) - bundle.putBoolean("AutoSave", false) - rightController.navigate(R.id.EvaluationResultFragment, bundle) } viewModel.liveIndoorToolsResp.observe(this) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt index 2ecf8477..37023521 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt @@ -101,7 +101,7 @@ class SignMoreInfoFragment : BaseFragment() { DataCodeEnum.OMDB_TRAFFIC_SIGN.code -> { val adapter = TwoItemAdapter() binding.signInfoRecyclerview.adapter = adapter - adapter.refreshData(SignUtil.getTrafficSignMoreInfo(it)) + adapter.refreshData(SignUtil.getTrafficSignMoreInfo(it.renderEntity)) } else -> { val adapter = SignUtil.getMoreInfoAdapter(it.renderEntity) diff --git a/app/src/main/res/menu/personal_center_menu.xml b/app/src/main/res/menu/personal_center_menu.xml index 9e53afd3..48d8d485 100644 --- a/app/src/main/res/menu/personal_center_menu.xml +++ b/app/src/main/res/menu/personal_center_menu.xml @@ -59,7 +59,7 @@ + android:title="版本:23QE4_V1.5.4_20230926_A" /> diff --git a/vtm b/vtm index 39b9993b..271e7b22 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 39b9993b1cc5257d11c872161812ffe890e44bd9 +Subproject commit 271e7b22785b0570a34c50476e17a98dfcca7e71