diff --git a/app/build.gradle b/app/build.gradle index 35d9733f..e242911a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,7 +17,7 @@ android { compileSdk 33 defaultConfig { - applicationId "com.navinfo.omqs" +// applicationId "com.navinfo.omqs" minSdk 21 targetSdk 21 versionCode 1 @@ -26,7 +26,7 @@ android { multiDexEnabled true ndk { - abiFilters "armeabi-v7a", "armeabi", "mips" + abiFilters "arm64-v8a", "armeabi-v7a", "armeabi", "mips" } } diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index d7c5d125..5dd373d9 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -390,6 +390,52 @@ } ] }, + "3007": { + "table": "OMDB_OBJECT_WARNING_AREA", + "code": 3007, + "name": "警示区", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20 + }, + "3009": { + "table": "OMDB_OBJECT_BARRIER", + "code": 3009, + "name": "护栏", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateMulToLine()" + } + ] + }, + "3010": { + "table": "OMDB_OBJECT_WALL", + "code": 3010, + "name": "平行墙", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateMulToLine()" + } + ] + }, "3012": { "table": "OMDB_FILL_AREA", "code": 3012, @@ -418,9 +464,19 @@ "catch": true, "zoomMax": 20 }, - "3027": { + "3019": { + "table": "OMDB_OBJECT_CURB", + "code": 3019, + "name": "路牙", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20 + }, + "3028": { "table": "OMDB_OBJECT_REFUGE_ISLAND", - "code": 3027, + "code": 3028, "name": "路口内交通岛", "catch": true, "checkLinkId": true, 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 0fff377c..f0d8cee0 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -286,10 +286,10 @@ class ImportPreProcess { startReference.properties["type"] = "s${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}" startReference.properties["geometry"] = startReference.geometry - listResult.add(startReference) + startReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startReference.properties)) + renderEntity.referenceEntitys.add(startReference) val endReference = ReferenceEntity() -// endReference.renderEntityId = renderEntity.id endReference.name = "${renderEntity.name}参考点" endReference.code = renderEntity.code endReference.table = renderEntity.table @@ -305,9 +305,8 @@ class ImportPreProcess { endReference.properties["type"] = "e${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}" endReference.properties["geometry"] = endReference.geometry + endReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(endReference.properties)) renderEntity.referenceEntitys.add(endReference) - //listResult.add(endReference) - //insertData(listResult) } } @@ -1373,4 +1372,16 @@ class ImportPreProcess { renderEntity.properties["text-src"] = "@text:${renderEntity.properties["maxSpeed"]}" } } + + /** + * 多线转单线 + * */ + fun generateMulToLine(renderEntity: RenderEntity) { + val translateGeometry = renderEntity.wkt + if (translateGeometry != null) { + if (translateGeometry.geometryType == Geometry.TYPENAME_MULTILINESTRING) { // 如果是多线,只取第一条线 + renderEntity.geometry = renderEntity.wkt!!.getGeometryN(0).toString() + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt b/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt index 8e7a5889..4f682b40 100644 --- a/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt +++ b/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt @@ -177,6 +177,8 @@ class TaskDownloadScope( override fun onComplete() { taskBean.status = FileDownloadStatus.DONE downloadData.postValue(taskBean) + //移除当前任务,进行下一个任务下载逻辑 + downloadManager.launchNext(taskBean.id) //任务与当前一致,需要更新渲染图层 if (MapParamUtils.getTaskId() == taskBean.id) { downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer() 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 fbb663f4..1fbbba49 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 @@ -127,10 +127,10 @@ class LoginViewModel @Inject constructor( if (userNameCache == userName && passwordCache == password) { viewModelScope.launch(Dispatchers.IO) { createUserFolder(context, userCodeCache, userRealName) - getOfflineCityList(context) +// getOfflineCityList(context) // loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS) } - return +// return } } //不指定IO,会在主线程里运行 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 6c656691..10654ec1 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 @@ -20,6 +20,7 @@ import androidx.annotation.RequiresApi import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.alibaba.fastjson.JSON import com.blankj.utilcode.util.ToastUtils import com.navinfo.collect.library.data.entity.* import com.navinfo.collect.library.enums.DataCodeEnum @@ -45,6 +46,8 @@ import io.realm.RealmList 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 import org.oscim.core.GeoPoint import org.oscim.core.GeometryBuffer.GeometryType @@ -69,7 +72,7 @@ class EvaluationResultViewModel @Inject constructor( /** * 车信列表 */ - var laneInfoList: MutableList? = null + val laneInfoList = MutableLiveData>() var liveDataLanInfoChange = MutableLiveData() @@ -139,7 +142,7 @@ class EvaluationResultViewModel @Inject constructor( init { mapController.mMapView.addOnNIMapClickListener(TAG, object : OnGeoPointClickListener { - override fun onMapClick(tag: String, point: GeoPoint,other:String) { + override fun onMapClick(tag: String, point: GeoPoint, other: String) { if (tag == TAG) { liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(point).toText() @@ -174,7 +177,7 @@ class EvaluationResultViewModel @Inject constructor( if (bean != null) { renderEntity = bean.renderEntity if (renderEntity!!.code == DataCodeEnum.OMDB_LANEINFO.code) { - laneInfoList = SignUtil.getLineInfoIcons(renderEntity!!) + laneInfoList.postValue(SignUtil.getLineInfoIcons(renderEntity!!)) } } @@ -280,7 +283,7 @@ class EvaluationResultViewModel @Inject constructor( if (bean != null) { renderEntity = bean.renderEntity if (renderEntity!!.code == DataCodeEnum.OMDB_LANEINFO.code) { - laneInfoList = SignUtil.getLineInfoIcons(renderEntity!!) + laneInfoList.postValue(SignUtil.getLineInfoIcons(renderEntity!!)) } } @@ -454,7 +457,42 @@ class EvaluationResultViewModel @Inject constructor( liveDataToastMessage.postValue("没有绑定到任何link,请选择") return@launch } + if (liveDataQsRecordBean.value!!.classCode == DataCodeEnum.OMDB_LANEINFO.code) + try { + val jsonObject: JSONObject = if (liveDataQsRecordBean.value!!.remarks != "") { + JSONObject(liveDataQsRecordBean.value!!.remarks) + } else { + JSONObject() + } + if (!jsonObject.has("original")) { + renderEntity?.let { + val laneOldList = SignUtil.getLineInfoIcons(it) + val jsonOriginalArray = JSONArray() + for (lane in laneOldList) { + val jsonItem = JSONObject() + jsonItem.put("id", lane.id) + jsonItem.put("type", lane.type) + jsonOriginalArray.put(jsonItem) + } + jsonObject.put("original", jsonOriginalArray) + } + } + laneInfoList.value?.let { + val jsonOriginalArray = JSONArray() + for (lane in it) { + val jsonItem = JSONObject() + jsonItem.put("id", lane.id) + jsonItem.put("type", lane.type) + jsonOriginalArray.put(jsonItem) + } + jsonObject.put("now", jsonOriginalArray) + } + liveDataQsRecordBean.value!!.remarks = jsonObject.toString() + } catch (e: Exception) { + } + + Log.e("jingo", "车信json ${liveDataQsRecordBean.value!!.remarks}") val realm = realmOperateHelper.getRealmDefaultInstance() liveDataQsRecordBean.value!!.taskId = liveDataTaskBean.value!!.id liveDataQsRecordBean.value!!.checkTime = DateTimeUtil.getDataTime() @@ -504,7 +542,7 @@ class EvaluationResultViewModel @Inject constructor( @RequiresApi(Build.VERSION_CODES.N) fun initData(id: String) { Log.e("jingo", "捕捉到的要素 id = $id") - viewModelScope.launch(Dispatchers.Main) { + viewModelScope.launch(Dispatchers.IO) { val realm = realmOperateHelper.getRealmDefaultInstance() @@ -523,16 +561,43 @@ class EvaluationResultViewModel @Inject constructor( } liveDataQsRecordBean.postValue(it.copy()) - val p = GeometryTools.createGeoPoint(it.geometry) - mapController.markerHandle.addMarker( - GeoPoint( - p.latitude, p.longitude - ), TAG, "", null - ) - //定位 - val mapPosition = mapController.mMapView.vtmMap.mapPosition - mapPosition.setPosition(p.latitude, p.longitude) - mapController.mMapView.vtmMap.animator().animateTo(300, mapPosition) + var hisNowLanInfo = false + if (it.classCode == DataCodeEnum.OMDB_LANEINFO.code) { + try { + val jsonObject = JSONObject(it.remarks) + if (jsonObject.has("now")) { + val jsonArray = jsonObject.getJSONArray("now") + val list = mutableListOf() + for (i in 0 until jsonArray.length()) { + val itemObject = jsonArray[i] as JSONObject + if (itemObject.has("id") && itemObject.has("type")) { + list.add(LaneInfoItem(itemObject.getInt("id"), itemObject.getInt("type"))) + } + } + hisNowLanInfo = true + laneInfoList.postValue(list) + } + +// editLaneInfoProblem() + } catch (e: Exception) { + + } + } + + launch(Dispatchers.Main) { + val p = GeometryTools.createGeoPoint(it.geometry) + mapController.markerHandle.addMarker( + GeoPoint( + p.latitude, p.longitude + ), TAG, "", null + ) + + //定位 + val mapPosition = mapController.mMapView.vtmMap.mapPosition + mapPosition.setPosition(p.latitude, p.longitude) + mapController.mMapView.vtmMap.animator().animateTo(300, mapPosition) + } + //获取linkid if (it.linkId.isNotEmpty()) { val link = realmOperateHelper.queryLink(it.linkId) @@ -548,15 +613,15 @@ class EvaluationResultViewModel @Inject constructor( } } liveDataQsRecordBean.value?.attachmentBeanList = it.attachmentBeanList - liveDataLanInfoChange.value = it.description + liveDataLanInfoChange.postValue(it.description) // 显示语音数据到界面 getChatMsgEntityList() realm.close() //增加要素高亮 - if(it.elementId!=null){ + if (it.elementId != null) { val realm2 = realmOperateHelper.getSelectTaskRealmInstance() - val rEntity = realm2.where(RenderEntity::class.java).equalTo("id",it.elementId).findFirst() - if(rEntity!=null){ + val rEntity = realm2.where(RenderEntity::class.java).equalTo("id", it.elementId).findFirst() + if (rEntity != null) { show(rEntity!!) } if (it.classCode == DataCodeEnum.OMDB_LANEINFO.code) { @@ -565,7 +630,8 @@ class EvaluationResultViewModel @Inject constructor( .equalTo("linkPid", it.linkId).findFirst() if (r != null) { renderEntity = realm2.copyFromRealm(r) - laneInfoList = SignUtil.getLineInfoIcons(renderEntity!!) + if (!hisNowLanInfo) + laneInfoList.postValue(SignUtil.getLineInfoIcons(renderEntity!!)) } } realm2.close() @@ -778,7 +844,10 @@ class EvaluationResultViewModel @Inject constructor( * 增加车信 */ fun updateLaneInfo(index: Int, id: Int, type: Int) { - laneInfoList?.let { + if (laneInfoList.value == null) { + laneInfoList.value = mutableListOf() + } + laneInfoList.value?.let { val laneInfoItem = it[index] if (laneInfoItem.id != id || laneInfoItem.type != type) { laneInfoItem.id = id @@ -792,7 +861,10 @@ class EvaluationResultViewModel @Inject constructor( * 增加车信 */ fun addLaneInfo(id: Int, type: Int): Int { - laneInfoList?.let { + if (laneInfoList.value == null) { + laneInfoList.value = mutableListOf() + } + laneInfoList.value?.let { it.add(LaneInfoItem(id, type)) editLaneInfoProblem() return it.size @@ -804,7 +876,10 @@ class EvaluationResultViewModel @Inject constructor( * 删除车信 */ fun backspaceLaneInfo() { - laneInfoList?.let { + if (laneInfoList.value == null) { + laneInfoList.value = mutableListOf() + } + laneInfoList.value?.let { if (it.isNotEmpty()) { it.removeLast() editLaneInfoProblem() @@ -816,20 +891,76 @@ class EvaluationResultViewModel @Inject constructor( * 删除车信 */ fun removeAllLaneInfo() { - laneInfoList?.clear() + laneInfoList.value?.clear() } /** * 组织车信备注文字 */ private fun editLaneInfoProblem() { - laneInfoList?.let { + if (laneInfoList.value == null) { + laneInfoList.value = mutableListOf() + } + laneInfoList.value?.let { liveDataQsRecordBean.value?.let { bean -> - var strBuffer = StringBuffer() + val strBuffer = StringBuffer() if (bean.problemType == "遗漏") - strBuffer.append("车信缺失,车道从左到右分别是:") + strBuffer.append("车信缺失\n") else if (bean.problemType == "错误") - strBuffer.append("车信错误,车道从左到右分别是:") + strBuffer.append("车信错误\n") + + renderEntity?.let { + val oldList = SignUtil.getLineInfoIcons(it) + strBuffer.append("原车道:") + for (item in oldList) { + when (item.id) { + R.drawable.laneinfo_1 -> strBuffer.append("[直(1)") + R.drawable.laneinfo_2 -> strBuffer.append("[左(2)") + R.drawable.laneinfo_3 -> strBuffer.append("[右(3)") + R.drawable.laneinfo_5 -> strBuffer.append("[左斜前(5)") + R.drawable.laneinfo_6 -> strBuffer.append("[右斜前(6)") + R.drawable.laneinfo_4 -> strBuffer.append("[调(4)") + R.drawable.laneinfo_7 -> strBuffer.append("[反向调(7)") + R.drawable.laneinfo_1_2 -> strBuffer.append("[左直(1,2)") + R.drawable.laneinfo_1_5 -> strBuffer.append("[左斜前直(1,5)") + R.drawable.laneinfo_2_5 -> strBuffer.append("[左左斜前(2,5)") + R.drawable.laneinfo_2_6 -> strBuffer.append("[左右斜前(2,6)") + R.drawable.laneinfo_1_3 -> strBuffer.append("[直右(1,3)") + R.drawable.laneinfo_1_6 -> strBuffer.append("[右斜前直(1,6)") + R.drawable.laneinfo_3_5 -> strBuffer.append("[左斜前右(3,5)") + R.drawable.laneinfo_3_6 -> strBuffer.append("[右斜前右(3,6)") + R.drawable.laneinfo_2_3 -> strBuffer.append("[左右(2,3)") + R.drawable.laneinfo_5_6 -> strBuffer.append("[左斜前右斜前(5,6)") + R.drawable.laneinfo_1_4 -> strBuffer.append("[直调(1,4)") + R.drawable.laneinfo_4_5 -> strBuffer.append("[调左斜前(4,5)") + R.drawable.laneinfo_2_4 -> strBuffer.append("[左调(2,4)") + R.drawable.laneinfo_3_4 -> strBuffer.append("[右调(3,4)") + R.drawable.laneinfo_4_6 -> strBuffer.append("[调右斜前(4,6)") + R.drawable.laneinfo_1_7 -> strBuffer.append("[直反向调(1,7)") + R.drawable.laneinfo_1_2_3 -> strBuffer.append("[左直右(1,2,3)") + R.drawable.laneinfo_1_2_4 -> strBuffer.append("[调左直(1,2,4)") + R.drawable.laneinfo_1_2_5 -> strBuffer.append("[左左斜前直(1,2,5)") + R.drawable.laneinfo_1_2_6 -> strBuffer.append("[左直右斜前(1,2,6)") + R.drawable.laneinfo_1_3_4 -> strBuffer.append("[调直右(1,3,4)") + R.drawable.laneinfo_1_3_5 -> strBuffer.append("[左斜前直右(1,3,5)") + R.drawable.laneinfo_1_3_6 -> strBuffer.append("[直右斜前右(1,3,6)") + R.drawable.laneinfo_2_3_4 -> strBuffer.append("[调左右(2,3,4)") + R.drawable.laneinfo_0 -> strBuffer.append("[不允许存在(0)") + } + when (item.type) { + 1 -> { + strBuffer.append("(附加)]") + } + 2 -> { + strBuffer.append("(公交)]") + } + else -> { + strBuffer.append("]") + } + } + } + } + strBuffer.append("\n现车道:") for (item in it) { when (item.id) { R.drawable.laneinfo_1 -> strBuffer.append("[直(1)") @@ -865,12 +996,16 @@ class EvaluationResultViewModel @Inject constructor( R.drawable.laneinfo_2_3_4 -> strBuffer.append("[调左右(2,3,4)") R.drawable.laneinfo_0 -> strBuffer.append("[不允许存在(0)") } - if (item.type == 1) { - strBuffer.append("(附加)]") - } else if (item.type == 2) { - strBuffer.append("(公交)]") - } else { - strBuffer.append("]") + when (item.type) { + 1 -> { + strBuffer.append("(附加)]") + } + 2 -> { + strBuffer.append("(公交)]") + } + else -> { + strBuffer.append("]") + } } } liveDataQsRecordBean.value!!.description = strBuffer.toString() diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LaneInfoEditFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LaneInfoEditFragment.kt index 0de5dbdc..eb1513ce 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LaneInfoEditFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LaneInfoEditFragment.kt @@ -10,6 +10,7 @@ import android.widget.AdapterView import android.widget.ImageView import com.navinfo.omqs.R import com.navinfo.omqs.databinding.FragmentLineInfoEditBinding +import com.navinfo.omqs.ui.activity.map.LaneInfoItem import com.navinfo.omqs.ui.fragment.BaseFragment import com.navinfo.omqs.ui.other.shareViewModels @@ -37,7 +38,10 @@ class LaneInfoEditFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - initLaneInfo() + viewModel.laneInfoList.observe(viewLifecycleOwner){ + initLaneInfo(it) + viewModel.laneInfoList.removeObservers(viewLifecycleOwner) + } initFLowLayout() binding.laneInfoBackspace.setOnClickListener { @@ -271,61 +275,59 @@ class LaneInfoEditFragment : BaseFragment() { /** * 初始化车道信息 */ - private fun initLaneInfo() { - if (viewModel.laneInfoList != null) { - val container = binding.laneInfoTopContainer - container.removeAllViews() - val lineViewS = View(context) - lineViewS.layoutParams = ViewGroup.LayoutParams(24, 110) - lineViewS.background = - requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) - container.addView(lineViewS, lineViewS.layoutParams) - for (i in viewModel.laneInfoList!!.indices) { - val laneInfo = viewModel.laneInfoList!![i] - val imageView = ImageView(context) - val drawable = requireContext().getDrawable(laneInfo.id) - val color = when (laneInfo.type) { - 1 -> requireContext().resources.getColor(R.color.lane_info_1) - 2 -> requireContext().resources.getColor(R.color.lane_info_2) - else -> requireContext().resources.getColor(R.color.white) - } - // 创建 PorterDuffColorFilter 对象 - val colorFilter = PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN) - // 将 PorterDuffColorFilter 设置给 Drawable - drawable!!.colorFilter = colorFilter - // 将 Drawable 设置给 ImageView - imageView.scaleType = ImageView.ScaleType.FIT_XY - imageView.setColorFilter(color, PorterDuff.Mode.SRC_IN) - imageView.setImageDrawable(drawable) - // 将 ImageView 的颜色设置为红色 - imageView.layoutParams = ViewGroup.LayoutParams(45, 100) - container.addView(imageView, imageView.layoutParams) - if (i < viewModel.laneInfoList!!.size - 1) { - val lineView = View(context) - lineView.layoutParams = ViewGroup.LayoutParams(24, 110) - lineView.background = - requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) - container.addView(lineView, lineView.layoutParams) - } - imageView.tag = i - imageView.setOnClickListener { - selectView = if (selectView == it) { + private fun initLaneInfo(list:MutableList) { + val container = binding.laneInfoTopContainer + container.removeAllViews() + val lineViewS = View(context) + lineViewS.layoutParams = ViewGroup.LayoutParams(24, 110) + lineViewS.background = + requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) + container.addView(lineViewS, lineViewS.layoutParams) + for (i in list.indices) { + val laneInfo = list[i] + val imageView = ImageView(context) + val drawable = requireContext().getDrawable(laneInfo.id) + val color = when (laneInfo.type) { + 1 -> requireContext().resources.getColor(R.color.lane_info_1) + 2 -> requireContext().resources.getColor(R.color.lane_info_2) + else -> requireContext().resources.getColor(R.color.white) + } + // 创建 PorterDuffColorFilter 对象 + val colorFilter = PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN) + // 将 PorterDuffColorFilter 设置给 Drawable + drawable!!.colorFilter = colorFilter + // 将 Drawable 设置给 ImageView + imageView.scaleType = ImageView.ScaleType.FIT_XY + imageView.setColorFilter(color, PorterDuff.Mode.SRC_IN) + imageView.setImageDrawable(drawable) + // 将 ImageView 的颜色设置为红色 + imageView.layoutParams = ViewGroup.LayoutParams(45, 100) + container.addView(imageView, imageView.layoutParams) + if (i < list.size - 1) { + val lineView = View(context) + lineView.layoutParams = ViewGroup.LayoutParams(24, 110) + lineView.background = + requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) + container.addView(lineView, lineView.layoutParams) + } + imageView.tag = i + imageView.setOnClickListener { + selectView = if (selectView == it) { + selectView!!.setBackgroundColor(requireContext().resources.getColor(R.color.gray)) + null + } else { + if (selectView != null) { selectView!!.setBackgroundColor(requireContext().resources.getColor(R.color.gray)) - null - } else { - if (selectView != null) { - selectView!!.setBackgroundColor(requireContext().resources.getColor(R.color.gray)) - } - imageView.setBackgroundColor(requireContext().resources.getColor(R.color.lane_info_0)) - it as ImageView } + imageView.setBackgroundColor(requireContext().resources.getColor(R.color.lane_info_0)) + it as ImageView } } - val lineViewE = View(context) - lineViewE.layoutParams = ViewGroup.LayoutParams(24, 110) - lineViewE.background = - requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) - container.addView(lineViewE, lineViewE.layoutParams) } + val lineViewE = View(context) + lineViewE.layoutParams = ViewGroup.LayoutParams(24, 110) + lineViewE.background = + requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) + container.addView(lineViewE, lineViewE.layoutParams) } } \ No newline at end of file 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 853115d1..d0eb6560 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -24,6 +24,9 @@ import org.locationtech.jts.geom.Point import org.oscim.core.GeoPoint import java.lang.reflect.Field +/* +* 要素详情解析类及左侧提前显示内容解析说明 +* */ class SignUtil { companion object { @@ -82,7 +85,7 @@ class SignUtil { } //全封闭 DataCodeEnum.OMDB_CON_ACCESS.code -> { - if (data.properties["conAccess"] === "1") "全封闭" else "" + if (data.properties["conAccess"] == "1") "全封闭" else "" } //匝道 DataCodeEnum.OMDB_RAMP_1.code, @@ -175,9 +178,9 @@ class SignUtil { 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 -> "道路属性" - DataCodeEnum.OMDB_LINK_FORM1_1.code, DataCodeEnum.OMDB_LINK_FORM1_2.code, DataCodeEnum.OMDB_LINK_FORM1_3.code, DataCodeEnum.OMDB_LINK_FORM2_1.code, DataCodeEnum.OMDB_LINK_FORM2_2.code, DataCodeEnum.OMDB_LINK_FORM2_3.code, DataCodeEnum.OMDB_LINK_FORM2_4.code, DataCodeEnum.OMDB_LINK_FORM2_5.code, DataCodeEnum.OMDB_LINK_FORM2_6.code, DataCodeEnum.OMDB_LINK_FORM2_7.code, DataCodeEnum.OMDB_LINK_FORM2_8.code, DataCodeEnum.OMDB_LINK_FORM2_9.code, DataCodeEnum.OMDB_LINK_FORM2_10.code, DataCodeEnum.OMDB_LINK_FORM2_11.code, DataCodeEnum.OMDB_LINK_FORM2_12.code, DataCodeEnum.OMDB_LINK_FORM2_13.code -> "道路形态" + DataCodeEnum.OMDB_LINK_FORM1_1.code, DataCodeEnum.OMDB_LINK_FORM1_2.code, DataCodeEnum.OMDB_LINK_FORM1_3.code, DataCodeEnum.OMDB_LINK_FORM2_1.code, DataCodeEnum.OMDB_LINK_FORM2_2.code, DataCodeEnum.OMDB_LINK_FORM2_3.code, DataCodeEnum.OMDB_LINK_FORM2_4.code, DataCodeEnum.OMDB_LINK_FORM2_5.code, DataCodeEnum.OMDB_LINK_FORM2_6.code, DataCodeEnum.OMDB_LINK_FORM2_7.code, DataCodeEnum.OMDB_LINK_FORM2_8.code, DataCodeEnum.OMDB_LINK_FORM2_9.code, DataCodeEnum.OMDB_LINK_FORM2_10.code, DataCodeEnum.OMDB_LINK_FORM2_11.code, DataCodeEnum.OMDB_LINK_FORM2_12.code, DataCodeEnum.OMDB_LINK_FORM2_13.code -> "形态" - else -> DataCodeEnum.findTableNameByCode(data.code) + else -> DataCodeEnum.findTableSubNameByCode(data.code) } } @@ -790,12 +793,88 @@ class SignUtil { list.add(TwoItemAdapterItem(title = "起终点标识", text = "${data.properties["startEnd"]}")) list.add(TwoItemAdapterItem(title = "高度层次", text = "${data.properties["zlevel"]}")) } + //道路边界类型 + DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code -> { + list.add(TwoItemAdapterItem(title = "道路边界线ID", text = "${data.properties["roadBoundaryLinkPid"]}")) + list.add(TwoItemAdapterItem(title = "道路边界类型", text = when (data.properties["boundaryType"]?.toInt()) { + 0 -> "不应用" + 1 -> "无标线无可区分边界" + 2 -> "标线" + 3 -> "路牙" + 4 -> "护栏" + 5 -> "墙" + 6 -> "铺设路面边缘" + 7 -> "虚拟三角岛" + 8 -> "障碍物" + 9 -> "杆状障碍物" + else -> "" + })) + } //车道类型 DataCodeEnum.OMDB_LANE_TYPE_ACCESS.code -> { list.add(TwoItemAdapterItem(title = "车道中心线ID", text = "${data.properties["laneLinkPid"]}")) list.add(TwoItemAdapterItem(title = "车道类型", text = getLaneType(data))) } + //设施分离 + DataCodeEnum.OMDB_LINK_SEPARATION.code -> { + list.add(TwoItemAdapterItem(title = "设施分离", text = when (data.properties["separation"]) { + "1" -> "坚固护栏" + "2" -> "非坚固护栏" + else -> "" + })) + } + //中央隔离带 + DataCodeEnum.OMDB_LINK_MEDIAN.code -> { + list.add(TwoItemAdapterItem(title = "设施分离", text = when (data.properties["medianSurface"]) { + "0" -> "未铺设" + "1" -> "铺设" + "2" -> "混合" + else -> "" + })) + } + //路牙 + DataCodeEnum.OMDB_OBJECT_CURB.code -> { + list.add(TwoItemAdapterItem(title = "是否符合高精地图", text = when (data.properties["compliant"]) { + "0" -> "否" + "1" -> "是" + else -> "" + })) + } + //平行墙 + DataCodeEnum.OMDB_OBJECT_WALL.code -> { + list.add(TwoItemAdapterItem(title = "类型", text = when (data.properties["type"]) { + "1" -> "隧道墙" + "3" -> "其他墙" + else -> "" + })) + } + //警示区 + DataCodeEnum.OMDB_OBJECT_WARNING_AREA.code -> { + list.add(TwoItemAdapterItem(title = "颜色", text = when (data.properties["color"]) { + "0" -> "未验证" + "1" -> "白色" + "2" -> "黄色" + "3" -> "红色" + else -> "" + })) + list.add(TwoItemAdapterItem(title = "材质", text = when (data.properties["material"]) { + "1" -> "有突起的材质" + "2" -> "喷漆材质" + else -> "" + })) + } + //护栏 + DataCodeEnum.OMDB_OBJECT_BARRIER.code -> { + list.add(TwoItemAdapterItem(title = "护栏类型", text = when (data.properties["barrierType"]) { + "0" -> "护栏" + "1" -> "新泽西护栏" + "2" -> "安全护栏" + "3" -> "围栏" + "4" -> "其他护栏" + else -> "" + })) + } } adapter.data = list return adapter diff --git a/app/src/main/res/menu/personal_center_menu.xml b/app/src/main/res/menu/personal_center_menu.xml index d7252870..f98ddb5f 100644 --- a/app/src/main/res/menu/personal_center_menu.xml +++ b/app/src/main/res/menu/personal_center_menu.xml @@ -64,7 +64,7 @@ + android:title="版本:24QE1_V1.2.3_20231201_A" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8b897586..ccd482b8 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,7 +4,6 @@ #FF2271FF #FF00C800 #FFFFB400 - #FFFFFF #F1EBEB #4954ED @@ -12,7 +11,6 @@ #2631DD #C1C0C8 #FFF5F7FE - #dadade #f4f4fc #6c14c4 diff --git a/collect-library/libs/arm64-v8a/libAsr2Code.so b/collect-library/libs/arm64-v8a/libAsr2Code.so new file mode 100644 index 00000000..fa01878c Binary files /dev/null and b/collect-library/libs/arm64-v8a/libAsr2Code.so differ diff --git a/collect-library/libs/arm64-v8a/libBugly.so b/collect-library/libs/arm64-v8a/libBugly.so new file mode 100644 index 00000000..2dc98ed3 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libBugly.so differ diff --git a/collect-library/libs/arm64-v8a/libDecode.so b/collect-library/libs/arm64-v8a/libDecode.so new file mode 100644 index 00000000..8efb1d5f Binary files /dev/null and b/collect-library/libs/arm64-v8a/libDecode.so differ diff --git a/collect-library/libs/arm64-v8a/libNuanceVocalizer.so b/collect-library/libs/arm64-v8a/libNuanceVocalizer.so new file mode 100644 index 00000000..2791e318 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libNuanceVocalizer.so differ diff --git a/collect-library/libs/arm64-v8a/libSetWakeupJni.so b/collect-library/libs/arm64-v8a/libSetWakeupJni.so new file mode 100644 index 00000000..93811097 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libSetWakeupJni.so differ diff --git a/collect-library/libs/arm64-v8a/libejTTS.so b/collect-library/libs/arm64-v8a/libejTTS.so new file mode 100644 index 00000000..9575bccc Binary files /dev/null and b/collect-library/libs/arm64-v8a/libejTTS.so differ diff --git a/collect-library/libs/arm64-v8a/libgdalconstjni.so b/collect-library/libs/arm64-v8a/libgdalconstjni.so new file mode 100644 index 00000000..5c27e1f9 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libgdalconstjni.so differ diff --git a/collect-library/libs/arm64-v8a/libgdaljni.so b/collect-library/libs/arm64-v8a/libgdaljni.so new file mode 100644 index 00000000..4b959968 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libgdaljni.so differ diff --git a/collect-library/libs/arm64-v8a/libgnustl_shared.so b/collect-library/libs/arm64-v8a/libgnustl_shared.so new file mode 100644 index 00000000..96c22a25 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libgnustl_shared.so differ diff --git a/collect-library/libs/arm64-v8a/libindoor.so b/collect-library/libs/arm64-v8a/libindoor.so new file mode 100644 index 00000000..e14d583d Binary files /dev/null and b/collect-library/libs/arm64-v8a/libindoor.so differ diff --git a/collect-library/libs/arm64-v8a/libiomx-gingerbread.so b/collect-library/libs/arm64-v8a/libiomx-gingerbread.so new file mode 100644 index 00000000..6665608d Binary files /dev/null and b/collect-library/libs/arm64-v8a/libiomx-gingerbread.so differ diff --git a/collect-library/libs/arm64-v8a/libiomx-hc.so b/collect-library/libs/arm64-v8a/libiomx-hc.so new file mode 100644 index 00000000..77f02566 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libiomx-hc.so differ diff --git a/collect-library/libs/arm64-v8a/libiomx-ics.so b/collect-library/libs/arm64-v8a/libiomx-ics.so new file mode 100644 index 00000000..8b534a94 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libiomx-ics.so differ diff --git a/collect-library/libs/arm64-v8a/liblocSDK8b.so b/collect-library/libs/arm64-v8a/liblocSDK8b.so new file mode 100644 index 00000000..c14b9199 Binary files /dev/null and b/collect-library/libs/arm64-v8a/liblocSDK8b.so differ diff --git a/collect-library/libs/arm64-v8a/libogrjni.so b/collect-library/libs/arm64-v8a/libogrjni.so new file mode 100644 index 00000000..0ba3dc1b Binary files /dev/null and b/collect-library/libs/arm64-v8a/libogrjni.so differ diff --git a/collect-library/libs/arm64-v8a/libosrjni.so b/collect-library/libs/arm64-v8a/libosrjni.so new file mode 100644 index 00000000..eadc9eb2 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libosrjni.so differ diff --git a/collect-library/libs/arm64-v8a/libproj.so b/collect-library/libs/arm64-v8a/libproj.so new file mode 100644 index 00000000..50e76908 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libproj.so differ diff --git a/collect-library/libs/arm64-v8a/libsimpleconfiglib.so b/collect-library/libs/arm64-v8a/libsimpleconfiglib.so new file mode 100644 index 00000000..ac2258c6 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libsimpleconfiglib.so differ diff --git a/collect-library/libs/arm64-v8a/libtiny_magic.so b/collect-library/libs/arm64-v8a/libtiny_magic.so new file mode 100644 index 00000000..d9e77292 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libtiny_magic.so differ diff --git a/collect-library/libs/arm64-v8a/libvlcjni.so b/collect-library/libs/arm64-v8a/libvlcjni.so new file mode 100644 index 00000000..37d9ae53 Binary files /dev/null and b/collect-library/libs/arm64-v8a/libvlcjni.so differ diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 09903d8e..6da9f562 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1785,6 +1785,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1819,7 +1871,7 @@ - + @@ -1958,14 +2010,16 @@ - - + --> + - - + --> + - + + - + - + - + - + diff --git a/collect-library/src/main/assets/omdb/icon_2071_0.svg b/collect-library/src/main/assets/omdb/icon_2071_0.svg index 62b423df..4f9f7fc0 100644 --- a/collect-library/src/main/assets/omdb/icon_2071_0.svg +++ b/collect-library/src/main/assets/omdb/icon_2071_0.svg @@ -1 +1,9 @@ - \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg b/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg index 0dec78b2..dd758dd1 100644 --- a/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg +++ b/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg @@ -1 +1,24 @@ - \ No newline at end of file + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_0.svg b/collect-library/src/main/assets/omdb/icon_3007_0.svg new file mode 100644 index 00000000..5cd7a867 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_0.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_1.svg b/collect-library/src/main/assets/omdb/icon_3007_1.svg new file mode 100644 index 00000000..92b42e64 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_1.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_2.svg b/collect-library/src/main/assets/omdb/icon_3007_2.svg new file mode 100644 index 00000000..2ae3a4a2 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_2.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_3.svg b/collect-library/src/main/assets/omdb/icon_3007_3.svg new file mode 100644 index 00000000..80f04c4a --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_3.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3010_0.svg b/collect-library/src/main/assets/omdb/icon_3010_0.svg new file mode 100644 index 00000000..f8babad6 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3010_0.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3010_1.svg b/collect-library/src/main/assets/omdb/icon_3010_1.svg new file mode 100644 index 00000000..384bff2f --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3010_1.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_bike.svg b/collect-library/src/main/assets/omdb/icon_bike.svg new file mode 100644 index 00000000..3ad5d240 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_bike.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt index 60a0e0a5..39fb6c62 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt @@ -93,8 +93,11 @@ open class QsRecordBean @JvmOverloads constructor( * 显示坐标 */ var guideGeometry: String = "", - - ) : RealmObject() { + /** + * 备份数据 + */ + var remarks: String = "", +) : RealmObject() { fun copy(): QsRecordBean { val qs = QsRecordBean( @@ -115,6 +118,7 @@ open class QsRecordBean @JvmOverloads constructor( t_lifecycle = t_lifecycle, t_status = t_status, attachmentBeanList = attachmentBeanList, + remarks = remarks, ) qs.geometry = geometry return qs diff --git a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt index 95799a6c..6f94fe5b 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt @@ -3,92 +3,96 @@ package com.navinfo.collect.library.enums /* * 要素枚举定义 * */ -public enum class DataCodeEnum(var tableName: String, var code: String) { - OMDB_NODE_FORM("点形态", "1007-6"), - OMDB_NODE_PA("点形态PA", "1007-6"), - OMDB_CHECKPOINT("检查点", "1012"), - OMDB_RD_LINK("道路线", "2001"), - OMDB_RD_LINK_FUNCTION_CLASS("道路功能等级", "2002"), - OMDB_LINK_ATTRIBUTE("道路属性", "2004"), - OMDB_LINK_ATTRIBUTE_SA("道路属性-SA", "2004-1"), - OMDB_LINK_ATTRIBUTE_PA("道路属性-PA", "2004-2"), - OMDB_LINK_ATTRIBUTE_FORNTAGE("道路属性-辅路", "2004-3"), - OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS("道路属性-主辅路出入口", "2004-4"), - OMDB_RD_LINK_KIND("道路种别", "2008"), - OMDB_LINK_DIRECT("道路方向", "2010"), - OMDB_LINK_NAME("道路名", "2011"), - OMDB_LANE_MARK_BOUNDARYTYPE("车道边界类型", "2013"), - OMDB_LINK_CONSTRUCTION("道路施工", "2017"), - OMDB_LINK_SPEEDLIMIT("常规线限速", "2019"), - OMDB_LINK_SPEEDLIMIT_COND("条件线限速", "2020"), - OMDB_LINK_SPEEDLIMIT_VAR("可变线限速", "2021"), - OMDB_CON_ACCESS("全封闭", "2022"), - OMDB_RAMP("匝道", "2037"), - OMDB_RAMP_1("普通路连接匝道", "2037-1"), - OMDB_RAMP_2("高速入口匝道", "2037-2"), - OMDB_RAMP_3("高速出口匝道", "2037-3"), - OMDB_RAMP_4("高速连接匝道", "2037-4"), - OMDB_RAMP_5("高速直连入口匝道", "2037-5"), - OMDB_RAMP_6("高速直连出口匝道", "2037-6"), - OMDB_RAMP_7("高速直连出口匝道高速出入口匝道", "2037-7"), - OMDB_MULTI_DIGITIZED("上下线分离", "2040"), - OMDB_LANE_NUM("车道数", "2041"), - OMDB_PHY_LANENUM("物理车道数", "2097"), - OMDB_VIADUCT("高架", "2043"), - OMDB_LINK_SEPARATION("设施分离", "2070"), - OMDB_LINK_MEDIAN("中央隔离带", "2071"), - OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "2083"), - OMDB_LANE_CONSTRUCTION("车道施工", "2090"), - OMDB_LANE_TYPE_ACCESS("车道类型","2092"), - OMDB_BRIDGE("桥", "2201"), - OMDB_BRIDGE_1("固定桥", "2201-1"), - OMDB_BRIDGE_2("可移动桥", "2201-2"), - OMDB_BRIDGE_3("跨线天桥", "2201-2"), - OMDB_TUNNEL("隧道", "2202"), - OMDB_ROUNDABOUT("环岛", "2204"), - OMDB_LINK_FORM1("道路形态1", "2205"), - OMDB_LINK_FORM1_1("U-Turn", "2205-1"), - OMDB_LINK_FORM1_2("提前右转", "2205-2"), - OMDB_LINK_FORM1_3("提前左转", "2205-3"), - OMDB_LINK_FORM2("道路形态2", "2206"), - OMDB_LINK_FORM2_1("IC", "2206-1"), - OMDB_LINK_FORM2_2("JCT", "2206-2"), - OMDB_LINK_FORM2_3("跨线地道", "2206-3"), - OMDB_LINK_FORM2_4("私道", "2206-4"), - OMDB_LINK_FORM2_5("步行街", "2206-5"), - OMDB_LINK_FORM2_6("公交专用道", "2206-6"), - OMDB_LINK_FORM2_7("POI 连接路", "2206-7"), - OMDB_LINK_FORM2_8("区域内道路", "2206-8"), - OMDB_LINK_FORM2_9("停车场出入口连接路", "2206-9"), - OMDB_LINK_FORM2_10("停车场内部虚拟连接路", "2206-10"), - OMDB_LINK_FORM2_11("风景路线", "2206-11"), - OMDB_LINK_FORM2_12("车辆测试路段", "2206-12"), - OMDB_LINK_FORM2_13("驾照考试路段", "2206-13"), - OMDB_LANE_ACCESS("通行车辆类型Lane", "2638"), - OMDB_OBJECT_OH_STRUCT("上方障碍物","3001"), - OMDB_OBJECT_TEXT("文字", "3002"), - OMDB_OBJECT_SYMBOL("符号", "3003"), - OMDB_OBJECT_ARROW("箭头", "3004"), - OMDB_TRAFFIC_SIGN("交通标牌", "3005"), - OMDB_POLE("杆状物", "3006"), - OMDB_FILL_AREA("导流区", "3012"), - OMDB_CROSS_WALK("人行横道", "3014"), - OMDB_OBJECT_STOPLOCATION("停止位置", "3016"), - OMDB_OBJECT_REFUGE_ISLAND("路口内交通岛", "3027"), - OMDB_INTERSECTION("路口", "4001"), - OMDB_SPEEDLIMIT("常规点限速", "4002"), - OMDB_SPEEDLIMIT_COND("条件点限速", "4003"), - OMDB_SPEEDLIMIT_VAR("可变点限速", "4004"), - OMDB_LANE_SPEEDLIMIT("车道点限速", "4005"), - OMDB_RESTRICTION("普通交限", "4006"), - OMDB_WARNINGSIGN("警示信息", "4009"), - OMDB_ELECTRONICEYE("电子眼", "4010"), - OMDB_ZLEVEL("立交", "4016"), - OMDB_TRAFFICLIGHT("交通灯", "4022"), - OMDB_TOLLGATE("收费站", "4023"), - OMDB_LANEINFO("车信", "4601"), - OMDB_CLM_LANEINFO("车信CLM", "4602"), - OMDB_LANE_LINK_LG("车道中心线", "5001"); +public enum class DataCodeEnum(var tableName: String,var tableSubName: String, var code: String) { + OMDB_NODE_FORM("点形态","点形态", "1007-6"), + OMDB_NODE_PA("点形态PA","点形态PA", "1007-6"), + OMDB_CHECKPOINT("检查点","检查点", "1012"), + OMDB_RD_LINK("道路线","道路线", "2001"), + OMDB_RD_LINK_FUNCTION_CLASS("道路功能等级", "功能等级", "2002"), + OMDB_LINK_ATTRIBUTE("道路属性","道路属性", "2004"), + OMDB_LINK_ATTRIBUTE_SA("道路属性-SA","道路属性", "2004-1"), + OMDB_LINK_ATTRIBUTE_PA("道路属性-PA","道路属性", "2004-2"), + OMDB_LINK_ATTRIBUTE_FORNTAGE("道路属性-辅路","道路属性", "2004-3"), + OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS("道路属性-主辅路出入口","道路属性", "2004-4"), + OMDB_RD_LINK_KIND("道路种别","道路种别", "2008"), + OMDB_LINK_DIRECT("道路方向","道路方向", "2010"), + OMDB_LINK_NAME("道路名","道路名", "2011"), + OMDB_LANE_MARK_BOUNDARYTYPE("车道边界类型","车道边界", "2013"), + OMDB_LINK_CONSTRUCTION("道路施工","道路施工", "2017"), + OMDB_LINK_SPEEDLIMIT("常规线限速","常规线限速", "2019"), + OMDB_LINK_SPEEDLIMIT_COND("条件线限速","条件线限速", "2020"), + OMDB_LINK_SPEEDLIMIT_VAR("可变线限速","可变线限速", "2021"), + OMDB_CON_ACCESS("全封闭","全封闭", "2022"), + OMDB_RAMP("匝道","匝道", "2037"), + OMDB_RAMP_1("普通路连接匝道","匝道", "2037-1"), + OMDB_RAMP_2("高速入口匝道","匝道", "2037-2"), + OMDB_RAMP_3("高速出口匝道","匝道", "2037-3"), + OMDB_RAMP_4("高速连接匝道","匝道", "2037-4"), + OMDB_RAMP_5("高速直连入口匝道","匝道", "2037-5"), + OMDB_RAMP_6("高速直连出口匝道", "匝道","2037-6"), + OMDB_RAMP_7("高速直连出口匝道高速出入口匝道", "匝道","2037-7"), + OMDB_MULTI_DIGITIZED("上下线分离", "上下线分离","2040"), + OMDB_LANE_NUM("车道数", "车道数","2041"), + OMDB_PHY_LANENUM("物理车道数", "物理车道数","2097"), + OMDB_VIADUCT("高架", "高架","2043"), + OMDB_LINK_SEPARATION("设施分离","设施分离", "2070"), + OMDB_LINK_MEDIAN("中央隔离带", "中央隔离带","2071"), + OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "道路边界","2083"), + OMDB_LANE_CONSTRUCTION("车道施工", "车道施工","2090"), + OMDB_LANE_TYPE_ACCESS("车道类型","车道类型","2092"), + OMDB_BRIDGE("桥", "桥", "2201"), + OMDB_BRIDGE_1("固定桥", "固定桥","2201-1"), + OMDB_BRIDGE_2("可移动桥", "可移动桥", "2201-2"), + OMDB_BRIDGE_3("跨线天桥", "跨线天桥","2201-2"), + OMDB_TUNNEL("隧道","隧道", "2202"), + OMDB_ROUNDABOUT("环岛", "环岛", "2204"), + OMDB_LINK_FORM1("道路形态1","形态", "2205"), + OMDB_LINK_FORM1_1("U-Turn", "形态","2205-1"), + OMDB_LINK_FORM1_2("提前右转","形态", "2205-2"), + OMDB_LINK_FORM1_3("提前左转", "形态","2205-3"), + OMDB_LINK_FORM2("道路形态2", "形态","2206"), + OMDB_LINK_FORM2_1("IC", "形态","2206-1"), + OMDB_LINK_FORM2_2("JCT", "形态","2206-2"), + OMDB_LINK_FORM2_3("跨线地道", "形态","2206-3"), + OMDB_LINK_FORM2_4("私道", "形态","2206-4"), + OMDB_LINK_FORM2_5("步行街", "形态","2206-5"), + OMDB_LINK_FORM2_6("公交专用道", "形态","2206-6"), + OMDB_LINK_FORM2_7("POI 连接路", "形态","2206-7"), + OMDB_LINK_FORM2_8("区域内道路", "形态","2206-8"), + OMDB_LINK_FORM2_9("停车场出入口连接路", "形态","2206-9"), + OMDB_LINK_FORM2_10("停车场内部虚拟连接路","形态", "2206-10"), + OMDB_LINK_FORM2_11("风景路线", "形态","2206-11"), + OMDB_LINK_FORM2_12("车辆测试路段", "形态","2206-12"), + OMDB_LINK_FORM2_13("驾照考试路段", "形态","2206-13"), + OMDB_LANE_ACCESS("通行车辆类型Lane","通行车辆", "2638"), + OMDB_OBJECT_OH_STRUCT("上方障碍物","上方障碍物","3001"), + OMDB_OBJECT_TEXT("文字", "文字", "3002"), + OMDB_OBJECT_SYMBOL("符号", "符号", "3003"), + OMDB_OBJECT_ARROW("箭头", "箭头", "3004"), + OMDB_TRAFFIC_SIGN("交通标牌", "交通标牌","3005"), + OMDB_POLE("杆状物", "杆状物","3006"), + OMDB_OBJECT_WARNING_AREA("警示区","警示区", "3007"), + OMDB_OBJECT_BARRIER("护栏", "护栏","3009"), + OMDB_OBJECT_WALL("平行墙", "平行墙","3010"), + OMDB_FILL_AREA("导流区", "导流区","3012"), + OMDB_CROSS_WALK("人行横道", "人行横道","3014"), + OMDB_OBJECT_STOPLOCATION("停止位置", "停止位置", "3016"), + OMDB_OBJECT_CURB("路牙", "路牙","3019"), + OMDB_OBJECT_REFUGE_ISLAND("路口内交通岛", "交通岛", "3028"), + OMDB_INTERSECTION("路口", "路口","4001"), + OMDB_SPEEDLIMIT("常规点限速", "常规点限速","4002"), + OMDB_SPEEDLIMIT_COND("条件点限速", "条件点限速", "4003"), + OMDB_SPEEDLIMIT_VAR("可变点限速", "可变点限速","4004"), + OMDB_LANE_SPEEDLIMIT("车道点限速", "车道点限速", "4005"), + OMDB_RESTRICTION("普通交限", "普通交限", "4006"), + OMDB_WARNINGSIGN("警示信息", "警示信息", "4009"), + OMDB_ELECTRONICEYE("电子眼","电子眼", "4010"), + OMDB_ZLEVEL("立交", "立交", "4016"), + OMDB_TRAFFICLIGHT("交通灯", "交通灯","4022"), + OMDB_TOLLGATE("收费站", "收费站","4023"), + OMDB_LANEINFO("车信", "车信","4601"), + OMDB_CLM_LANEINFO("车信CLM", "车信CLM","4602"), + OMDB_LANE_LINK_LG("车道中心线", "车道中心线","5001"); companion object { fun findTableNameByCode(code: String): String { @@ -99,6 +103,14 @@ public enum class DataCodeEnum(var tableName: String, var code: String) { } return "" // 若未找到匹配的 code,则返回 null 或其他适当的默认值 } + fun findTableSubNameByCode(code: String): String { + for (enumInstance in DataCodeEnum.values()) { + if (enumInstance.code == code) { + return enumInstance.tableSubName + } + } + return "" // 若未找到匹配的 code,则返回 null 或其他适当的默认值 + } } } diff --git a/vtm b/vtm index 5a0e348e..c2d87b10 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 5a0e348ed88c388b931f038a602b3419a3e1a96a +Subproject commit c2d87b1095d493a70a6b3a7aa366f9e6042300db