Merge branch 'master' of gitlab.navinfo.com:CollectVehicle/OneMapQS

This commit is contained in:
2023-12-04 11:02:46 +08:00
43 changed files with 715 additions and 207 deletions

View File

@@ -17,7 +17,7 @@ android {
compileSdk 33 compileSdk 33
defaultConfig { defaultConfig {
applicationId "com.navinfo.omqs" // applicationId "com.navinfo.omqs"
minSdk 21 minSdk 21
targetSdk 21 targetSdk 21
versionCode 1 versionCode 1
@@ -26,7 +26,7 @@ android {
multiDexEnabled true multiDexEnabled true
ndk { ndk {
abiFilters "armeabi-v7a", "armeabi", "mips" abiFilters "arm64-v8a", "armeabi-v7a", "armeabi", "mips"
} }
} }

View File

@@ -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": { "3012": {
"table": "OMDB_FILL_AREA", "table": "OMDB_FILL_AREA",
"code": 3012, "code": 3012,
@@ -418,9 +464,19 @@
"catch": true, "catch": true,
"zoomMax": 20 "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", "table": "OMDB_OBJECT_REFUGE_ISLAND",
"code": 3027, "code": 3028,
"name": "路口内交通岛", "name": "路口内交通岛",
"catch": true, "catch": true,
"checkLinkId": true, "checkLinkId": true,

View File

@@ -286,10 +286,10 @@ class ImportPreProcess {
startReference.properties["type"] = startReference.properties["type"] =
"s${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}" "s${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}"
startReference.properties["geometry"] = startReference.geometry startReference.properties["geometry"] = startReference.geometry
listResult.add(startReference) startReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startReference.properties))
renderEntity.referenceEntitys.add(startReference)
val endReference = ReferenceEntity() val endReference = ReferenceEntity()
// endReference.renderEntityId = renderEntity.id
endReference.name = "${renderEntity.name}参考点" endReference.name = "${renderEntity.name}参考点"
endReference.code = renderEntity.code endReference.code = renderEntity.code
endReference.table = renderEntity.table endReference.table = renderEntity.table
@@ -305,9 +305,8 @@ class ImportPreProcess {
endReference.properties["type"] = endReference.properties["type"] =
"e${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}" "e${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}"
endReference.properties["geometry"] = endReference.geometry endReference.properties["geometry"] = endReference.geometry
endReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(endReference.properties))
renderEntity.referenceEntitys.add(endReference) renderEntity.referenceEntitys.add(endReference)
//listResult.add(endReference)
//insertData(listResult)
} }
} }
@@ -1373,4 +1372,16 @@ class ImportPreProcess {
renderEntity.properties["text-src"] = "@text:${renderEntity.properties["maxSpeed"]}" 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()
}
}
}
} }

View File

@@ -177,6 +177,8 @@ class TaskDownloadScope(
override fun onComplete() { override fun onComplete() {
taskBean.status = FileDownloadStatus.DONE taskBean.status = FileDownloadStatus.DONE
downloadData.postValue(taskBean) downloadData.postValue(taskBean)
//移除当前任务,进行下一个任务下载逻辑
downloadManager.launchNext(taskBean.id)
//任务与当前一致,需要更新渲染图层 //任务与当前一致,需要更新渲染图层
if (MapParamUtils.getTaskId() == taskBean.id) { if (MapParamUtils.getTaskId() == taskBean.id) {
downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer() downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer()

View File

@@ -127,10 +127,10 @@ class LoginViewModel @Inject constructor(
if (userNameCache == userName && passwordCache == password) { if (userNameCache == userName && passwordCache == password) {
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
createUserFolder(context, userCodeCache, userRealName) createUserFolder(context, userCodeCache, userRealName)
getOfflineCityList(context) // getOfflineCityList(context)
// loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS) // loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
} }
return // return
} }
} }
//不指定IO会在主线程里运行 //不指定IO会在主线程里运行

View File

@@ -20,6 +20,7 @@ import androidx.annotation.RequiresApi
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.alibaba.fastjson.JSON
import com.blankj.utilcode.util.ToastUtils import com.blankj.utilcode.util.ToastUtils
import com.navinfo.collect.library.data.entity.* import com.navinfo.collect.library.data.entity.*
import com.navinfo.collect.library.enums.DataCodeEnum import com.navinfo.collect.library.enums.DataCodeEnum
@@ -45,6 +46,8 @@ import io.realm.RealmList
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.json.JSONArray
import org.json.JSONObject
import org.locationtech.jts.geom.Geometry import org.locationtech.jts.geom.Geometry
import org.oscim.core.GeoPoint import org.oscim.core.GeoPoint
import org.oscim.core.GeometryBuffer.GeometryType import org.oscim.core.GeometryBuffer.GeometryType
@@ -69,7 +72,7 @@ class EvaluationResultViewModel @Inject constructor(
/** /**
* 车信列表 * 车信列表
*/ */
var laneInfoList: MutableList<LaneInfoItem>? = null val laneInfoList = MutableLiveData<MutableList<LaneInfoItem>>()
var liveDataLanInfoChange = MutableLiveData<String>() var liveDataLanInfoChange = MutableLiveData<String>()
@@ -139,7 +142,7 @@ class EvaluationResultViewModel @Inject constructor(
init { init {
mapController.mMapView.addOnNIMapClickListener(TAG, object : OnGeoPointClickListener { 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) { if (tag == TAG) {
liveDataQsRecordBean.value!!.geometry = liveDataQsRecordBean.value!!.geometry =
GeometryTools.createGeometry(point).toText() GeometryTools.createGeometry(point).toText()
@@ -174,7 +177,7 @@ class EvaluationResultViewModel @Inject constructor(
if (bean != null) { if (bean != null) {
renderEntity = bean.renderEntity renderEntity = bean.renderEntity
if (renderEntity!!.code == DataCodeEnum.OMDB_LANEINFO.code) { 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) { if (bean != null) {
renderEntity = bean.renderEntity renderEntity = bean.renderEntity
if (renderEntity!!.code == DataCodeEnum.OMDB_LANEINFO.code) { 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请选择") liveDataToastMessage.postValue("没有绑定到任何link请选择")
return@launch 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() val realm = realmOperateHelper.getRealmDefaultInstance()
liveDataQsRecordBean.value!!.taskId = liveDataTaskBean.value!!.id liveDataQsRecordBean.value!!.taskId = liveDataTaskBean.value!!.id
liveDataQsRecordBean.value!!.checkTime = DateTimeUtil.getDataTime() liveDataQsRecordBean.value!!.checkTime = DateTimeUtil.getDataTime()
@@ -504,7 +542,7 @@ class EvaluationResultViewModel @Inject constructor(
@RequiresApi(Build.VERSION_CODES.N) @RequiresApi(Build.VERSION_CODES.N)
fun initData(id: String) { fun initData(id: String) {
Log.e("jingo", "捕捉到的要素 id = $id") Log.e("jingo", "捕捉到的要素 id = $id")
viewModelScope.launch(Dispatchers.Main) { viewModelScope.launch(Dispatchers.IO) {
val realm = realmOperateHelper.getRealmDefaultInstance() val realm = realmOperateHelper.getRealmDefaultInstance()
@@ -523,16 +561,43 @@ class EvaluationResultViewModel @Inject constructor(
} }
liveDataQsRecordBean.postValue(it.copy()) liveDataQsRecordBean.postValue(it.copy())
val p = GeometryTools.createGeoPoint(it.geometry) var hisNowLanInfo = false
mapController.markerHandle.addMarker( if (it.classCode == DataCodeEnum.OMDB_LANEINFO.code) {
GeoPoint( try {
p.latitude, p.longitude val jsonObject = JSONObject(it.remarks)
), TAG, "", null if (jsonObject.has("now")) {
) val jsonArray = jsonObject.getJSONArray("now")
//定位 val list = mutableListOf<LaneInfoItem>()
val mapPosition = mapController.mMapView.vtmMap.mapPosition for (i in 0 until jsonArray.length()) {
mapPosition.setPosition(p.latitude, p.longitude) val itemObject = jsonArray[i] as JSONObject
mapController.mMapView.vtmMap.animator().animateTo(300, mapPosition) 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 //获取linkid
if (it.linkId.isNotEmpty()) { if (it.linkId.isNotEmpty()) {
val link = realmOperateHelper.queryLink(it.linkId) val link = realmOperateHelper.queryLink(it.linkId)
@@ -548,15 +613,15 @@ class EvaluationResultViewModel @Inject constructor(
} }
} }
liveDataQsRecordBean.value?.attachmentBeanList = it.attachmentBeanList liveDataQsRecordBean.value?.attachmentBeanList = it.attachmentBeanList
liveDataLanInfoChange.value = it.description liveDataLanInfoChange.postValue(it.description)
// 显示语音数据到界面 // 显示语音数据到界面
getChatMsgEntityList() getChatMsgEntityList()
realm.close() realm.close()
//增加要素高亮 //增加要素高亮
if(it.elementId!=null){ if (it.elementId != null) {
val realm2 = realmOperateHelper.getSelectTaskRealmInstance() val realm2 = realmOperateHelper.getSelectTaskRealmInstance()
val rEntity = realm2.where(RenderEntity::class.java).equalTo("id",it.elementId).findFirst() val rEntity = realm2.where(RenderEntity::class.java).equalTo("id", it.elementId).findFirst()
if(rEntity!=null){ if (rEntity != null) {
show(rEntity!!) show(rEntity!!)
} }
if (it.classCode == DataCodeEnum.OMDB_LANEINFO.code) { if (it.classCode == DataCodeEnum.OMDB_LANEINFO.code) {
@@ -565,7 +630,8 @@ class EvaluationResultViewModel @Inject constructor(
.equalTo("linkPid", it.linkId).findFirst() .equalTo("linkPid", it.linkId).findFirst()
if (r != null) { if (r != null) {
renderEntity = realm2.copyFromRealm(r) renderEntity = realm2.copyFromRealm(r)
laneInfoList = SignUtil.getLineInfoIcons(renderEntity!!) if (!hisNowLanInfo)
laneInfoList.postValue(SignUtil.getLineInfoIcons(renderEntity!!))
} }
} }
realm2.close() realm2.close()
@@ -778,7 +844,10 @@ class EvaluationResultViewModel @Inject constructor(
* 增加车信 * 增加车信
*/ */
fun updateLaneInfo(index: Int, id: Int, type: Int) { fun updateLaneInfo(index: Int, id: Int, type: Int) {
laneInfoList?.let { if (laneInfoList.value == null) {
laneInfoList.value = mutableListOf<LaneInfoItem>()
}
laneInfoList.value?.let {
val laneInfoItem = it[index] val laneInfoItem = it[index]
if (laneInfoItem.id != id || laneInfoItem.type != type) { if (laneInfoItem.id != id || laneInfoItem.type != type) {
laneInfoItem.id = id laneInfoItem.id = id
@@ -792,7 +861,10 @@ class EvaluationResultViewModel @Inject constructor(
* 增加车信 * 增加车信
*/ */
fun addLaneInfo(id: Int, type: Int): Int { fun addLaneInfo(id: Int, type: Int): Int {
laneInfoList?.let { if (laneInfoList.value == null) {
laneInfoList.value = mutableListOf<LaneInfoItem>()
}
laneInfoList.value?.let {
it.add(LaneInfoItem(id, type)) it.add(LaneInfoItem(id, type))
editLaneInfoProblem() editLaneInfoProblem()
return it.size return it.size
@@ -804,7 +876,10 @@ class EvaluationResultViewModel @Inject constructor(
* 删除车信 * 删除车信
*/ */
fun backspaceLaneInfo() { fun backspaceLaneInfo() {
laneInfoList?.let { if (laneInfoList.value == null) {
laneInfoList.value = mutableListOf<LaneInfoItem>()
}
laneInfoList.value?.let {
if (it.isNotEmpty()) { if (it.isNotEmpty()) {
it.removeLast() it.removeLast()
editLaneInfoProblem() editLaneInfoProblem()
@@ -816,20 +891,76 @@ class EvaluationResultViewModel @Inject constructor(
* 删除车信 * 删除车信
*/ */
fun removeAllLaneInfo() { fun removeAllLaneInfo() {
laneInfoList?.clear() laneInfoList.value?.clear()
} }
/** /**
* 组织车信备注文字 * 组织车信备注文字
*/ */
private fun editLaneInfoProblem() { private fun editLaneInfoProblem() {
laneInfoList?.let { if (laneInfoList.value == null) {
laneInfoList.value = mutableListOf<LaneInfoItem>()
}
laneInfoList.value?.let {
liveDataQsRecordBean.value?.let { bean -> liveDataQsRecordBean.value?.let { bean ->
var strBuffer = StringBuffer() val strBuffer = StringBuffer()
if (bean.problemType == "遗漏") if (bean.problemType == "遗漏")
strBuffer.append("车信缺失,车道从左到右分别是:") strBuffer.append("车信缺失\n")
else if (bean.problemType == "错误") 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) { for (item in it) {
when (item.id) { when (item.id) {
R.drawable.laneinfo_1 -> strBuffer.append("[直(1)") 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_2_3_4 -> strBuffer.append("[调左右(2,3,4)")
R.drawable.laneinfo_0 -> strBuffer.append("[不允许存在(0)") R.drawable.laneinfo_0 -> strBuffer.append("[不允许存在(0)")
} }
if (item.type == 1) { when (item.type) {
strBuffer.append("(附加)]") 1 -> {
} else if (item.type == 2) { strBuffer.append("(附加)]")
strBuffer.append("(公交)]") }
} else { 2 -> {
strBuffer.append("]") strBuffer.append("(公交)]")
}
else -> {
strBuffer.append("]")
}
} }
} }
liveDataQsRecordBean.value!!.description = strBuffer.toString() liveDataQsRecordBean.value!!.description = strBuffer.toString()

View File

@@ -10,6 +10,7 @@ import android.widget.AdapterView
import android.widget.ImageView import android.widget.ImageView
import com.navinfo.omqs.R import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.FragmentLineInfoEditBinding 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.fragment.BaseFragment
import com.navinfo.omqs.ui.other.shareViewModels import com.navinfo.omqs.ui.other.shareViewModels
@@ -37,7 +38,10 @@ class LaneInfoEditFragment : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initLaneInfo() viewModel.laneInfoList.observe(viewLifecycleOwner){
initLaneInfo(it)
viewModel.laneInfoList.removeObservers(viewLifecycleOwner)
}
initFLowLayout() initFLowLayout()
binding.laneInfoBackspace.setOnClickListener { binding.laneInfoBackspace.setOnClickListener {
@@ -271,61 +275,59 @@ class LaneInfoEditFragment : BaseFragment() {
/** /**
* 初始化车道信息 * 初始化车道信息
*/ */
private fun initLaneInfo() { private fun initLaneInfo(list:MutableList<LaneInfoItem>) {
if (viewModel.laneInfoList != null) { val container = binding.laneInfoTopContainer
val container = binding.laneInfoTopContainer container.removeAllViews()
container.removeAllViews() val lineViewS = View(context)
val lineViewS = View(context) lineViewS.layoutParams = ViewGroup.LayoutParams(24, 110)
lineViewS.layoutParams = ViewGroup.LayoutParams(24, 110) lineViewS.background =
lineViewS.background = requireContext().getDrawable(R.drawable.shape_vertical_dashed_line)
requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) container.addView(lineViewS, lineViewS.layoutParams)
container.addView(lineViewS, lineViewS.layoutParams) for (i in list.indices) {
for (i in viewModel.laneInfoList!!.indices) { val laneInfo = list[i]
val laneInfo = viewModel.laneInfoList!![i] val imageView = ImageView(context)
val imageView = ImageView(context) val drawable = requireContext().getDrawable(laneInfo.id)
val drawable = requireContext().getDrawable(laneInfo.id) val color = when (laneInfo.type) {
val color = when (laneInfo.type) { 1 -> requireContext().resources.getColor(R.color.lane_info_1)
1 -> requireContext().resources.getColor(R.color.lane_info_1) 2 -> requireContext().resources.getColor(R.color.lane_info_2)
2 -> requireContext().resources.getColor(R.color.lane_info_2) else -> requireContext().resources.getColor(R.color.white)
else -> requireContext().resources.getColor(R.color.white) }
} // 创建 PorterDuffColorFilter 对象
// 创建 PorterDuffColorFilter 对象 val colorFilter = PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN)
val colorFilter = PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN) // 将 PorterDuffColorFilter 设置给 Drawable
// 将 PorterDuffColorFilter 设置给 Drawable drawable!!.colorFilter = colorFilter
drawable!!.colorFilter = colorFilter // 将 Drawable 设置给 ImageView
// 将 Drawable 设置给 ImageView imageView.scaleType = ImageView.ScaleType.FIT_XY
imageView.scaleType = ImageView.ScaleType.FIT_XY imageView.setColorFilter(color, PorterDuff.Mode.SRC_IN)
imageView.setColorFilter(color, PorterDuff.Mode.SRC_IN) imageView.setImageDrawable(drawable)
imageView.setImageDrawable(drawable) // 将 ImageView 的颜色设置为红色
// 将 ImageView 的颜色设置为红色 imageView.layoutParams = ViewGroup.LayoutParams(45, 100)
imageView.layoutParams = ViewGroup.LayoutParams(45, 100) container.addView(imageView, imageView.layoutParams)
container.addView(imageView, imageView.layoutParams) if (i < list.size - 1) {
if (i < viewModel.laneInfoList!!.size - 1) { val lineView = View(context)
val lineView = View(context) lineView.layoutParams = ViewGroup.LayoutParams(24, 110)
lineView.layoutParams = ViewGroup.LayoutParams(24, 110) lineView.background =
lineView.background = requireContext().getDrawable(R.drawable.shape_vertical_dashed_line)
requireContext().getDrawable(R.drawable.shape_vertical_dashed_line) container.addView(lineView, lineView.layoutParams)
container.addView(lineView, lineView.layoutParams) }
} imageView.tag = i
imageView.tag = i imageView.setOnClickListener {
imageView.setOnClickListener { selectView = if (selectView == it) {
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)) 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)
} }
} }

View File

@@ -24,6 +24,9 @@ import org.locationtech.jts.geom.Point
import org.oscim.core.GeoPoint import org.oscim.core.GeoPoint
import java.lang.reflect.Field import java.lang.reflect.Field
/*
* 要素详情解析类及左侧提前显示内容解析说明
* */
class SignUtil { class SignUtil {
companion object { companion object {
@@ -82,7 +85,7 @@ class SignUtil {
} }
//全封闭 //全封闭
DataCodeEnum.OMDB_CON_ACCESS.code -> { DataCodeEnum.OMDB_CON_ACCESS.code -> {
if (data.properties["conAccess"] === "1") "全封闭" else "" if (data.properties["conAccess"] == "1") "全封闭" else ""
} }
//匝道 //匝道
DataCodeEnum.OMDB_RAMP_1.code, 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_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["startEnd"]}"))
list.add(TwoItemAdapterItem(title = "高度层次", text = "${data.properties["zlevel"]}")) 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 -> { DataCodeEnum.OMDB_LANE_TYPE_ACCESS.code -> {
list.add(TwoItemAdapterItem(title = "车道中心线ID", text = "${data.properties["laneLinkPid"]}")) list.add(TwoItemAdapterItem(title = "车道中心线ID", text = "${data.properties["laneLinkPid"]}"))
list.add(TwoItemAdapterItem(title = "车道类型", text = getLaneType(data))) 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 adapter.data = list
return adapter return adapter

View File

@@ -64,7 +64,7 @@
<item <item
android:id="@+id/personal_center_menu_version" android:id="@+id/personal_center_menu_version"
android:icon="@drawable/ic_baseline_layers_24" android:icon="@drawable/ic_baseline_layers_24"
android:title="版本24QE1_V1.2.1_20231124_A" /> android:title="版本24QE1_V1.2.3_20231201_A" />
</group> </group>
<group android:checkableBehavior="single"> <group android:checkableBehavior="single">
<item android:title="小标题"> <item android:title="小标题">

View File

@@ -4,7 +4,6 @@
<color name="lane_info_0" comment="车信普通道路">#FF2271FF</color> <color name="lane_info_0" comment="车信普通道路">#FF2271FF</color>
<color name="lane_info_1" comment="车信附加道路">#FF00C800</color> <color name="lane_info_1" comment="车信附加道路">#FF00C800</color>
<color name="lane_info_2" comment="车信公交道路">#FFFFB400</color> <color name="lane_info_2" comment="车信公交道路">#FFFFB400</color>
<color name="white" comment="主要按钮,背景等颜色">#FFFFFF</color> <!--白色 --> <color name="white" comment="主要按钮,背景等颜色">#FFFFFF</color> <!--白色 -->
<color name="button_press_color" comment="默认的按钮按下去时的背景颜色">#F1EBEB</color> <color name="button_press_color" comment="默认的按钮按下去时的背景颜色">#F1EBEB</color>
<color name="default_button_blue_color" comment="蓝色到紫色的渐变开始颜色">#4954ED</color> <color name="default_button_blue_color" comment="蓝色到紫色的渐变开始颜色">#4954ED</color>
@@ -12,7 +11,6 @@
<color name="default_blue_text_color" comment="蓝色字体的默认颜色">#2631DD</color> <color name="default_blue_text_color" comment="蓝色字体的默认颜色">#2631DD</color>
<color name="input_edit_hint_color" comment="输入框hint文字icon的颜色">#C1C0C8</color> <color name="input_edit_hint_color" comment="输入框hint文字icon的颜色">#C1C0C8</color>
<color name="high_item_color" comment="选中高亮的颜色">#FFF5F7FE</color> <color name="high_item_color" comment="选中高亮的颜色">#FFF5F7FE</color>
<color name="line_gray" comment="轻度灰色,一般用于下划线,不可点击按钮的边框">#dadade</color> <color name="line_gray" comment="轻度灰色,一般用于下划线,不可点击按钮的边框">#dadade</color>
<color name="bg_left_pannel" comment="左侧弹出框背景颜色">#f4f4fc</color> <color name="bg_left_pannel" comment="左侧弹出框背景颜色">#f4f4fc</color>
<color name="colorPrimary">#6c14c4</color> <color name="colorPrimary">#6c14c4</color>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1785,6 +1785,58 @@
</m> </m>
</m> </m>
<!-- 路牙 -->
<m v="OMDB_OBJECT_CURB">
<symbol repeat="true" gland="true" repeat-gap="12" repeat-start="0.01" src="assets:omdb/icon_2013_3.svg" symbol-width="16" symbol-height="10"></symbol>
</m>
<!-- 护栏 -->
<m v="OMDB_OBJECT_BARRIER">
<symbol repeat="true" repeat-gap="36" gland="true" repeat-start="5" src="assets:omdb/icon_2013_4.svg" symbol-width="56" symbol-height="56"></symbol>
</m>
<!-- 平行墙 -->
<m v="OMDB_OBJECT_WALL">
<m k="type" v="-|1">
<symbol repeat="true" gland="true" repeat-gap="12" repeat-start="0.01" src="assets:omdb/icon_3010_0.svg" symbol-width="16" symbol-height="10"></symbol>
</m>
<m k="type" v="1">
<symbol repeat="true" gland="true" repeat-gap="12" repeat-start="0.01" src="assets:omdb/icon_3010_1.svg" symbol-width="16" symbol-height="10"></symbol>
</m>
</m>
<!-- 警示区 -->
<m v="OMDB_OBJECT_WARNING_AREA">
<m k="material" v="1">
<m k="color" v="0">
<area use="obj-area" stroke="#FF00C800" stroke-width="1" src="assets:omdb/icon_3007_0.svg"></area>
</m>
<m k="color" v="1">
<area use="obj-area" stroke="#FF00C800" stroke-width="1" src="assets:omdb/icon_3007_1.svg"></area>
</m>
<m k="color" v="2">
<area use="obj-area" stroke="#FF00C800" stroke-width="1" src="assets:omdb/icon_3007_2.svg"></area>
</m>
<m k="color" v="3">
<area use="obj-area" stroke="#FF00C800" stroke-width="1" src="assets:omdb/icon_3007_3.svg"></area>
</m>
</m>
<m k="material" v="2">
<m k="color" v="0">
<area use="obj-area" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_3007_0.svg"></area>
</m>
<m k="color" v="1">
<area use="obj-area" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_3007_1.svg"></area>
</m>
<m k="color" v="2">
<area use="obj-area" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_3007_2.svg"></area>
</m>
<m k="color" v="3">
<area use="obj-area" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_3007_3.svg"></area>
</m>
</m>
</m>
<!-- 道路属性 --> <!-- 道路属性 -->
<m v="OMDB_LINK_ATTRIBUTE"> <m v="OMDB_LINK_ATTRIBUTE">
@@ -1819,7 +1871,7 @@
</m> </m>
<!-- 全封闭 --> <!-- 全封闭 -->
<m v="OMDB_CON_ACESS"> <m v="OMDB_CON_ACCESS">
<line use="road_morphology" /> <line use="road_morphology" />
</m> </m>
@@ -1958,14 +2010,16 @@
<!--条件点限速--> <!--条件点限速-->
<m v="OMDB_SPEEDLIMIT_COND"> <m v="OMDB_SPEEDLIMIT_COND">
<m k="speedFlag" v="0"> <m k="speedFlag" v="0">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff" <!-- <caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption> stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4003_0.svg" symbol-width="24" symbol-height="48"></symbol> <symbol src="assets:omdb/icon_4003_0.svg" symbol-width="24" symbol-height="48"></symbol>-->
<symbol background="assets:omdb/icon_4003_0.png" symbol-width="24" content-rect="20,80,32,80" src="@text-src"></symbol>
</m> </m>
<m k="speedFlag" v="1"> <m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff" <!--<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption> stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4003_1.svg" symbol-width="24" symbol-height="48"></symbol> <symbol src="assets:omdb/icon_4003_1.svg" symbol-width="24" symbol-height="48"></symbol>-->
<symbol background="assets:omdb/icon_4003_1.png" symbol-width="24" content-rect="20,80,32,80" src="@text-src"></symbol>
</m> </m>
<m k="type" v="angle"> <m k="type" v="angle">
<symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true" symbol-width="24" <symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true" symbol-width="24"
@@ -2130,23 +2184,24 @@
<!-- 车道类型 --> <!-- 车道类型 -->
<m v="OMDB_LANE_TYPE_ACCESS"> <m v="OMDB_LANE_TYPE_ACCESS">
<m k="bike"> <m k="bike">
<line fix="true" width="3" stroke="#cccccc"></line> <line fix="true" width="3" stroke="#e6e6e6"></line>
<symbol repeat-start="0" repeat="true" repeat-gap="128" src="assets:omdb/icon_bike.svg"></symbol>
</m> </m>
<m k="type" v="s_acc"> <m k="type" v="s_acc">
<symbol src="assets:omdb/icon_2092_acc_s.svg" symbol-height="26" <symbol src="assets:omdb/icon_2092_acc_s.svg"
symbol-width="26" gland="true"></symbol> symbol-width="24" gland="true"></symbol>
</m> </m>
<m k="type" v="e_acc"> <m k="type" v="e_acc">
<symbol src="assets:omdb/icon_2092_acc_e.svg" symbol-height="26" <symbol src="assets:omdb/icon_2092_acc_e.svg"
symbol-width="26" gland="true"></symbol> symbol-width="24" gland="true"></symbol>
</m> </m>
<m k="type" v="s_dec"> <m k="type" v="s_dec">
<symbol src="assets:omdb/icon_2092_dec_s.svg" symbol-height="26" <symbol src="assets:omdb/icon_2092_dec_s.svg"
symbol-width="26" gland="true"></symbol> symbol-width="24" gland="true"></symbol>
</m> </m>
<m k="type" v="e_dec"> <m k="type" v="e_dec">
<symbol src="assets:omdb/icon_2092_dec_e.svg" symbol-height="26" <symbol src="assets:omdb/icon_2092_dec_e.svg"
symbol-width="26" gland="true"></symbol> symbol-width="24" gland="true"></symbol>
</m> </m>
</m> </m>

View File

@@ -1 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><defs><style>.d{fill:#889b86;stroke-width:0px;}</style></defs><g id="c"><rect class="d" width="18" height="18"/></g></svg> <?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<defs>
<style>.d{fill:#889b86;stroke-width:0px;}</style>
</defs>
<g id="c">
<rect class="d" width="18" height="18" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -1 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" width="51" height="51" viewBox="0 0 51 51"><g id="c"><circle cx="25.5" cy="25.5" r="24.5" style="fill:#0e992b; stroke-width:0px;"/><path d="m25.5,2c13,0,23.5,10.5,23.5,23.5s-10.5,23.5-23.5,23.5S2,38.5,2,25.5,12.5,2,25.5,2m0-2h0C11.4,0,0,11.4,0,25.5h0c0,14.1,11.4,25.5,25.5,25.5h0c14.1,0,25.5-11.4,25.5-25.5h0C51,11.4,39.6,0,25.5,0h0Z" style="fill:#02441e; stroke-width:0px;"/><path d="m6.4,16.1c.2.1.7.6,1.1.9l1.2-1.4,4,3.6c.7.7.6,1,0,1.8l-.3.4-.9-.4.3-.4c.3-.4.3-.6-.1-1-.3-.3-2.7-2.5-3-2.7l-.7.8c2.1,2,2.8,3,3.6,5l-.9.3c-.6-1.8-1.3-2.8-3.3-4.6l-.6.8-.7-.6.7-.8c-.4-.4-.9-.8-1.1-1l.6-.6Zm4.3-3.6l5.4,4.6-.6.6-.5-.4-.9,1.1.5.4-.6.7-5.4-4.6,2-2.4Zm3.7,4.3l-3.6-3-.9,1.1,3.6,3,.9-1.1Z" style="fill:#fff; stroke-width:0px;"/><path d="m17.1,10.6c-.3-.4-1.1-1.1-1.5-1.4l.5-.6c.4.3,1.1.9,1.5,1.3l-.5.7Zm7.4,2.8v.9c-1.2.4-2.4.7-3.6,1-1.1.3-1.7.2-2.5-.4-.2.5-.5,1-.7,1.4l-.7-.6c.3-.5.6-.9.8-1.4l-.6-2.3-.9.2-.2-.9,1.7-.5.8,3.1c.7.6,1.2.7,2.3.4,1.3-.3,2.5-.7,3.7-1.1Zm-5.8.4c.6-.5,1.2-1.3,1.5-2l-1.5.4-.6-2.3,1.8-.5-.2-.6-2,.5-.2-.8,2-.5-.2-.8.8-.2.2.7,2.1-.5.2.8-2.1.5.2.6,1.8-.5.6,2.3-1.8.5v.5c.1,0,.3-.5.3-.5.5.2,1.5.6,2.2.8l-.2.9c-.6-.3-1.5-.7-2.1-.9l.4,1.6-.8.2-.4-1.6c-.3.7-.8,1.3-1.3,1.8l-.7-.6Zm.6-2.5l1-.3-.2-.8-1,.3.2.8Zm1.6-1.3l.2.8,1.1-.3-.2-.8-1.1.3Z" style="fill:#fff; stroke-width:0px;"/><path d="m33.4,15.9l-2.9-1.1-.5,1.4-.8-.3.5-1.4-3.3-1.2.3-.8,3.3,1.2.4-1.1-2.4-.9.3-.8c.4-.3,1-.8,1.6-1.3l-1.4-.5.3-.8,1.8.7c.4-.4.7-.8.9-1.1l.8.6c-.2.3-.5.6-.7.8l3.6,1.4-.3.8-4-1.5c-.5.5-1.1,1-1.5,1.3l1.4.5.5-1.3.8.4-.5,1.2,2.2.8-.3.8-2.2-.8-.4,1.1,2.9,1.1-.3.8Z" style="fill:#fff; stroke-width:0px;"/><path d="m39.2,23.6l-.8.3c-.8-1-1.5-2-2.3-3.1-.6-1-.8-1.5-.5-2.5-.5,0-1,0-1.5-.2l.3-.9c.5,0,1.1.2,1.7.2l1.9-1.3-.5-.7.8-.5,1,1.4-2.6,1.8c-.4.9-.2,1.4.4,2.3.7,1.1,1.5,2.1,2.3,3.2Zm2.4-5.9l-1.2-1.7.6-.4.8,1.1c0-.3.2-.6.3-.9l.8.2c0,.4-.2.7-.3,1.1h-.5c0,0,.6.8.6.8.5,0,1.2,0,1.5,0v.9c-.2,0-.5,0-.9,0l.8,1.2-.6.4-1.4-2c-.2,0-.4.1-.5.2l1.1,1.6-3.5,2.5-2.5-3.5,3.5-2.5.8,1.2.6-.2Zm-2.4,3.9l.4-.3-1.5-2.1-.4.3,1.5,2.1Zm-.5-2.8l1.5,2.1.4-.3-1.5-2.1-.4.3Zm.6-3.1c.2-.5.6-1.4.8-2l.8.3c-.1.5-.5,1.4-.7,1.9l-.9-.2Zm2.3,4.2l-1.5-2.1-.4.3,1.5,2.1.4-.3Z" style="fill:#fff; stroke-width:0px;"/><path d="m23.4,37.1v.9c-.8.1-5.1.9-6,1.1v-1.7c.7-.1,5-.9,6-1.1v.8Zm-5.5-6.6l-.4-1.7c.3-.1.5-.3.6-.5.4-.5,1.6-2.7,2.3-4.7l1.5.6c-.6,1.5-1.7,3.5-2.4,4.5.3,0,1.1,0,1.7-.1.5-.9.9-1.7,1.2-2.4l1.4.6c-.9,2-2.6,4.9-3.4,6.2.6-.1,2-.4,2.4-.5v1.7c-.3,0-2.4.4-3.3.6-.4,0-.8.2-1.1.2l-.4-1.8c.6-.2.6-.3.9-.7.5-.6,1-1.5,1.5-2.4-.6,0-1.3,0-1.6.1-.3,0-.5,0-.8.1Zm16.1,2.2l-.6,1.8c-2.1-.8-3.7-1.7-5.1-2.8-.6.5-1.3,1-2.2,1.4,1.2.3,3.5,1.2,4.8,1.7l-.6,1.7c-1.1-.5-3.5-1.3-4.9-1.7l.4-1.4c-.7.4-1.4.7-2.2,1.1l-.8-1.6c1.8-.7,3.1-1.4,4.2-2.2-.6-.6-1.2-1.3-1.7-2.1-.4.7-1,1.3-1.5,1.9l-.9-1.2c1.4-1.5,2.8-4,3.4-5.7l1.5.4c-.2.4-.3.8-.5,1.3h5.2v1.7c-.9,1.5-1.7,2.6-2.8,3.8,1.2.8,2.6,1.5,4.4,2.1Zm-9.5,3.6c1.8.5,5.3,1.7,7.1,2.4l-.5,1.7c-1.8-.7-5.2-2-7.1-2.4l.5-1.7Zm1.7-9.2c.6.9,1.2,1.7,2,2.5.9-.8,1.6-1.7,2.2-2.7h-4.1v.3Z" style="fill:#fff; stroke-width:0px;"/></g></svg> <?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="51" height="51" viewBox="0 0 51 51">
<g id="c">
<circle cx="25.5" cy="25.5" r="24.5" style="fill:#0e992b; stroke-width:0px;" />
<path
d="m25.5,2c13,0,23.5,10.5,23.5,23.5s-10.5,23.5-23.5,23.5S2,38.5,2,25.5,12.5,2,25.5,2m0-2h0C11.4,0,0,11.4,0,25.5h0c0,14.1,11.4,25.5,25.5,25.5h0c14.1,0,25.5-11.4,25.5-25.5h0C51,11.4,39.6,0,25.5,0h0Z"
style="fill:#02441e; stroke-width:0px;" />
<path
d="m6.4,16.1c.2.1.7.6,1.1.9l1.2-1.4,4,3.6c.7.7.6,1,0,1.8l-.3.4-.9-.4.3-.4c.3-.4.3-.6-.1-1-.3-.3-2.7-2.5-3-2.7l-.7.8c2.1,2,2.8,3,3.6,5l-.9.3c-.6-1.8-1.3-2.8-3.3-4.6l-.6.8-.7-.6.7-.8c-.4-.4-.9-.8-1.1-1l.6-.6Zm4.3-3.6l5.4,4.6-.6.6-.5-.4-.9,1.1.5.4-.6.7-5.4-4.6,2-2.4Zm3.7,4.3l-3.6-3-.9,1.1,3.6,3,.9-1.1Z"
style="fill:#fff; stroke-width:0px;" />
<path
d="m17.1,10.6c-.3-.4-1.1-1.1-1.5-1.4l.5-.6c.4.3,1.1.9,1.5,1.3l-.5.7Zm7.4,2.8v.9c-1.2.4-2.4.7-3.6,1-1.1.3-1.7.2-2.5-.4-.2.5-.5,1-.7,1.4l-.7-.6c.3-.5.6-.9.8-1.4l-.6-2.3-.9.2-.2-.9,1.7-.5.8,3.1c.7.6,1.2.7,2.3.4,1.3-.3,2.5-.7,3.7-1.1Zm-5.8.4c.6-.5,1.2-1.3,1.5-2l-1.5.4-.6-2.3,1.8-.5-.2-.6-2,.5-.2-.8,2-.5-.2-.8.8-.2.2.7,2.1-.5.2.8-2.1.5.2.6,1.8-.5.6,2.3-1.8.5v.5c.1,0,.3-.5.3-.5.5.2,1.5.6,2.2.8l-.2.9c-.6-.3-1.5-.7-2.1-.9l.4,1.6-.8.2-.4-1.6c-.3.7-.8,1.3-1.3,1.8l-.7-.6Zm.6-2.5l1-.3-.2-.8-1,.3.2.8Zm1.6-1.3l.2.8,1.1-.3-.2-.8-1.1.3Z"
style="fill:#fff; stroke-width:0px;" />
<path
d="m33.4,15.9l-2.9-1.1-.5,1.4-.8-.3.5-1.4-3.3-1.2.3-.8,3.3,1.2.4-1.1-2.4-.9.3-.8c.4-.3,1-.8,1.6-1.3l-1.4-.5.3-.8,1.8.7c.4-.4.7-.8.9-1.1l.8.6c-.2.3-.5.6-.7.8l3.6,1.4-.3.8-4-1.5c-.5.5-1.1,1-1.5,1.3l1.4.5.5-1.3.8.4-.5,1.2,2.2.8-.3.8-2.2-.8-.4,1.1,2.9,1.1-.3.8Z"
style="fill:#fff; stroke-width:0px;" />
<path
d="m39.2,23.6l-.8.3c-.8-1-1.5-2-2.3-3.1-.6-1-.8-1.5-.5-2.5-.5,0-1,0-1.5-.2l.3-.9c.5,0,1.1.2,1.7.2l1.9-1.3-.5-.7.8-.5,1,1.4-2.6,1.8c-.4.9-.2,1.4.4,2.3.7,1.1,1.5,2.1,2.3,3.2Zm2.4-5.9l-1.2-1.7.6-.4.8,1.1c0-.3.2-.6.3-.9l.8.2c0,.4-.2.7-.3,1.1h-.5c0,0,.6.8.6.8.5,0,1.2,0,1.5,0v.9c-.2,0-.5,0-.9,0l.8,1.2-.6.4-1.4-2c-.2,0-.4.1-.5.2l1.1,1.6-3.5,2.5-2.5-3.5,3.5-2.5.8,1.2.6-.2Zm-2.4,3.9l.4-.3-1.5-2.1-.4.3,1.5,2.1Zm-.5-2.8l1.5,2.1.4-.3-1.5-2.1-.4.3Zm.6-3.1c.2-.5.6-1.4.8-2l.8.3c-.1.5-.5,1.4-.7,1.9l-.9-.2Zm2.3,4.2l-1.5-2.1-.4.3,1.5,2.1.4-.3Z"
style="fill:#fff; stroke-width:0px;" />
<path
d="m23.4,37.1v.9c-.8.1-5.1.9-6,1.1v-1.7c.7-.1,5-.9,6-1.1v.8Zm-5.5-6.6l-.4-1.7c.3-.1.5-.3.6-.5.4-.5,1.6-2.7,2.3-4.7l1.5.6c-.6,1.5-1.7,3.5-2.4,4.5.3,0,1.1,0,1.7-.1.5-.9.9-1.7,1.2-2.4l1.4.6c-.9,2-2.6,4.9-3.4,6.2.6-.1,2-.4,2.4-.5v1.7c-.3,0-2.4.4-3.3.6-.4,0-.8.2-1.1.2l-.4-1.8c.6-.2.6-.3.9-.7.5-.6,1-1.5,1.5-2.4-.6,0-1.3,0-1.6.1-.3,0-.5,0-.8.1Zm16.1,2.2l-.6,1.8c-2.1-.8-3.7-1.7-5.1-2.8-.6.5-1.3,1-2.2,1.4,1.2.3,3.5,1.2,4.8,1.7l-.6,1.7c-1.1-.5-3.5-1.3-4.9-1.7l.4-1.4c-.7.4-1.4.7-2.2,1.1l-.8-1.6c1.8-.7,3.1-1.4,4.2-2.2-.6-.6-1.2-1.3-1.7-2.1-.4.7-1,1.3-1.5,1.9l-.9-1.2c1.4-1.5,2.8-4,3.4-5.7l1.5.4c-.2.4-.3.8-.5,1.3h5.2v1.7c-.9,1.5-1.7,2.6-2.8,3.8,1.2.8,2.6,1.5,4.4,2.1Zm-9.5,3.6c1.8.5,5.3,1.7,7.1,2.4l-.5,1.7c-1.8-.7-5.2-2-7.1-2.4l.5-1.7Zm1.7-9.2c.6.9,1.2,1.7,2,2.5.9-.8,1.6-1.7,2.2-2.7h-4.1v.3Z"
style="fill:#fff; stroke-width:0px;" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<defs>
<style>.d{fill:#cccccc;stroke-width:0px;}</style>
</defs>
<g id="c">
<rect class="d" width="18" height="18" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<defs>
<style>.d{fill:#ffffff;stroke-width:0px;}</style>
</defs>
<g id="c">
<rect class="d" width="18" height="18" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<defs>
<style>.d{fill:#FFB400;stroke-width:0px;}</style>
</defs>
<g id="c">
<rect class="d" width="18" height="18" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
<defs>
<style>.d{fill:#FF0000;stroke-width:0px;}</style>
</defs>
<g id="c">
<rect class="d" width="18" height="18" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 291 B

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="90" height="100"
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 90 100">
<defs>
<style>
.e{fill:none;}.e,.f,.g,.h{stroke-width:0px;}.i{clip-path:url(#d);}.f{fill:#a28d92;}.g{fill:#f1eae9;}.h{fill:#fff;}
</style>
<clipPath id="d">
<rect class="e" width="90" height="100" />
</clipPath>
</defs>
<g id="c">
<g class="i">
<rect class="h" width="90" height="100" />
<path class="g"
d="m-10.8.2H29c.8,0,1.4.6,1.4,1.4,0,.4-.1.7-.4,1l-8.2,8.2c-.3.3-.6.4-1,.4H-19c-.8,0-1.4-.6-1.4-1.4,0-.4.1-.7.4-1L-11.8.6c.3-.3.6-.4,1-.4Z" />
<path class="g"
d="m35,.2h39.9c.8,0,1.4.6,1.4,1.4,0,.4-.1.7-.4,1l-8.2,8.2c-.3.3-.6.4-1,.4H26.8c-.8,0-1.4-.6-1.4-1.4,0-.4.1-.7.4-1L34.1.6c.3-.3.6-.4,1-.4Z" />
<path class="f"
d="m19.7,13.1c.7,0,1.3.6,1.3,1.4v17.1c0,.8-.6,1.4-1.3,1.4H-19.4c-.7,0-1.3-.6-1.3-1.4h0V14.5c0-.8.6-1.4,1.3-1.4H19.7Z" />
<path class="f"
d="m65,13.1c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H25.7c-.7,0-1.4-.6-1.4-1.4h0V14.5c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="g"
d="m80.9.2h39.9c.8,0,1.4.6,1.4,1.4,0,.4-.1.7-.4,1l-8.2,8.2c-.3.3-.6.4-1,.4h-39.9c-.8,0-1.4-.6-1.4-1.4,0-.4.1-.7.4-1L79.9.6c.3-.3.6-.4,1-.4Z" />
<path class="f"
d="m110,13.1c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0V14.5c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m42.5,35.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H3.2c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m87.5,35.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m22.3,57.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H-17c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4H22.3Z" />
<path class="f"
d="m67.5,57.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H28.2c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m112.5,57.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m42.5,80c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H3.2c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m87.6,79.9c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="90" height="100"
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 90 100">
<defs>
<style>
.e{fill:none;}.e,.f,.g,.h{stroke-width:0px;}.i{clip-path:url(#d);}.f{fill:#ff822e;}.g{fill:#fff;}.h{fill:#ffda9f;}
</style>
<clipPath id="d">
<rect class="e" width="90" height="100" />
</clipPath>
</defs>
<g id="c">
<g class="i">
<rect class="g" width="90" height="100" />
<path class="h"
d="m-10.8.2H29c.8,0,1.4.6,1.4,1.4,0,.4-.1.7-.4,1l-8.2,8.2c-.3.3-.6.4-1,.4H-19c-.8,0-1.4-.6-1.4-1.4,0-.4.1-.7.4-1L-11.8.6c.3-.3.6-.4,1-.4Z" />
<path class="h"
d="m35,.2h39.9c.8,0,1.4.6,1.4,1.4,0,.4-.1.7-.4,1l-8.2,8.2c-.3.3-.6.4-1,.4H26.8c-.8,0-1.4-.6-1.4-1.4,0-.4.1-.7.4-1L34.1.6c.3-.3.6-.4,1-.4Z" />
<path class="f"
d="m19.7,13.1c.7,0,1.3.6,1.3,1.4v17.1c0,.8-.6,1.4-1.3,1.4H-19.4c-.7,0-1.3-.6-1.3-1.4h0V14.5c0-.8.6-1.4,1.3-1.4H19.7Z" />
<path class="f"
d="m65,13.1c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H25.7c-.7,0-1.4-.6-1.4-1.4h0V14.5c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="h"
d="m80.9.2h39.9c.8,0,1.4.6,1.4,1.4,0,.4-.1.7-.4,1l-8.2,8.2c-.3.3-.6.4-1,.4h-39.9c-.8,0-1.4-.6-1.4-1.4,0-.4.1-.7.4-1L79.9.6c.3-.3.6-.4,1-.4Z" />
<path class="f"
d="m110,13.1c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0V14.5c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m42.5,35.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H3.2c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m87.5,35.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m22.3,57.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H-17c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4H22.3Z" />
<path class="f"
d="m67.5,57.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H28.2c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m112.5,57.4c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m42.5,80c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4H3.2c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
<path class="f"
d="m87.6,79.9c.7,0,1.4.6,1.4,1.4v17.1c0,.8-.6,1.4-1.4,1.4h-39.3c-.7,0-1.4-.6-1.4-1.4h0v-17.1c0-.8.6-1.4,1.4-1.4h39.3Z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1701228237519" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5562" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M810.666667 512c117.333333 0 213.333333 96 213.333333 213.333333s-96 213.333333-213.333333 213.333334-213.333333-96-213.333334-213.333334c0-87.466667 53.333333-162.133333 128-196.266666l-23.466666-113.066667-294.4 219.733333c12.8 27.733333 19.2 57.6 19.2 89.6 0 117.333333-96 213.333333-213.333334 213.333334S0 842.666667 0 725.333333s96-213.333333 213.333333-213.333333c19.2 0 36.266667 2.133333 53.333334 6.4L238.933333 320H192c-23.466667 0-42.666667-19.2-42.666667-42.666667s19.2-42.666667 42.666667-42.666666h170.666667c23.466667 0 42.666667 19.2 42.666666 42.666666s-19.2 42.666667-42.666666 42.666667h-36.266667l32 245.333333 322.133333-238.933333L648.533333 170.666667H554.666667c-23.466667 0-42.666667-19.2-42.666667-42.666667s19.2-42.666667 42.666667-42.666667h128c19.2 0 38.4 14.933333 42.666666 34.133334l44.8 213.333333v2.133333L810.666667 512c-2.133333 0 0 0 0 0z m0 341.333333c70.4 0 128-57.6 128-128 0-64-49.066667-119.466667-110.933334-125.866666l25.6 117.333333c4.266667 23.466667-10.666667 44.8-32 51.2h-8.533333c-19.2 0-38.4-12.8-42.666667-34.133333l-25.6-117.333334C706.133333 640 682.666667 678.4 682.666667 725.333333c0 70.4 57.6 128 128 128z m-597.333334 0c70.4 0 128-57.6 128-128 0-12.8-2.133333-25.6-6.4-38.4l-96 72.533334c-8.533333 6.4-17.066667 8.533333-25.6 8.533333-12.8 0-25.6-6.4-34.133333-17.066667-14.933333-19.2-10.666667-44.8 8.533333-59.733333l96-72.533333c-21.333333-12.8-44.8-21.333333-72.533333-21.333334-70.4 0-128 57.6-128 128s59.733333 128 130.133333 128z" fill="#1296db" p-id="5563" data-spm-anchor-id="a313x.search_index.0.i12.313a3a814L2WEQ" class="selected"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -93,8 +93,11 @@ open class QsRecordBean @JvmOverloads constructor(
* 显示坐标 * 显示坐标
*/ */
var guideGeometry: String = "", var guideGeometry: String = "",
/**
) : RealmObject() { * 备份数据
*/
var remarks: String = "",
) : RealmObject() {
fun copy(): QsRecordBean { fun copy(): QsRecordBean {
val qs = QsRecordBean( val qs = QsRecordBean(
@@ -115,6 +118,7 @@ open class QsRecordBean @JvmOverloads constructor(
t_lifecycle = t_lifecycle, t_lifecycle = t_lifecycle,
t_status = t_status, t_status = t_status,
attachmentBeanList = attachmentBeanList, attachmentBeanList = attachmentBeanList,
remarks = remarks,
) )
qs.geometry = geometry qs.geometry = geometry
return qs return qs

View File

@@ -3,92 +3,96 @@ package com.navinfo.collect.library.enums
/* /*
* 要素枚举定义 * 要素枚举定义
* */ * */
public enum class DataCodeEnum(var tableName: String, var code: String) { public enum class DataCodeEnum(var tableName: String,var tableSubName: String, var code: String) {
OMDB_NODE_FORM("点形态", "1007-6"), OMDB_NODE_FORM("点形态","点形态", "1007-6"),
OMDB_NODE_PA("点形态PA", "1007-6"), OMDB_NODE_PA("点形态PA","点形态PA", "1007-6"),
OMDB_CHECKPOINT("检查点", "1012"), OMDB_CHECKPOINT("检查点","检查点", "1012"),
OMDB_RD_LINK("道路线", "2001"), OMDB_RD_LINK("道路线","道路线", "2001"),
OMDB_RD_LINK_FUNCTION_CLASS("道路功能等级", "2002"), OMDB_RD_LINK_FUNCTION_CLASS("道路功能等级", "功能等级", "2002"),
OMDB_LINK_ATTRIBUTE("道路属性", "2004"), OMDB_LINK_ATTRIBUTE("道路属性","道路属性", "2004"),
OMDB_LINK_ATTRIBUTE_SA("道路属性-SA", "2004-1"), OMDB_LINK_ATTRIBUTE_SA("道路属性-SA","道路属性", "2004-1"),
OMDB_LINK_ATTRIBUTE_PA("道路属性-PA", "2004-2"), OMDB_LINK_ATTRIBUTE_PA("道路属性-PA","道路属性", "2004-2"),
OMDB_LINK_ATTRIBUTE_FORNTAGE("道路属性-辅路", "2004-3"), OMDB_LINK_ATTRIBUTE_FORNTAGE("道路属性-辅路","道路属性", "2004-3"),
OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS("道路属性-主辅路出入口", "2004-4"), OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS("道路属性-主辅路出入口","道路属性", "2004-4"),
OMDB_RD_LINK_KIND("道路种别", "2008"), OMDB_RD_LINK_KIND("道路种别","道路种别", "2008"),
OMDB_LINK_DIRECT("道路方向", "2010"), OMDB_LINK_DIRECT("道路方向","道路方向", "2010"),
OMDB_LINK_NAME("道路名", "2011"), OMDB_LINK_NAME("道路名","道路名", "2011"),
OMDB_LANE_MARK_BOUNDARYTYPE("车道边界类型", "2013"), OMDB_LANE_MARK_BOUNDARYTYPE("车道边界类型","车道边界", "2013"),
OMDB_LINK_CONSTRUCTION("道路施工", "2017"), OMDB_LINK_CONSTRUCTION("道路施工","道路施工", "2017"),
OMDB_LINK_SPEEDLIMIT("常规线限速", "2019"), OMDB_LINK_SPEEDLIMIT("常规线限速","常规线限速", "2019"),
OMDB_LINK_SPEEDLIMIT_COND("条件线限速", "2020"), OMDB_LINK_SPEEDLIMIT_COND("条件线限速","条件线限速", "2020"),
OMDB_LINK_SPEEDLIMIT_VAR("可变线限速", "2021"), OMDB_LINK_SPEEDLIMIT_VAR("可变线限速","可变线限速", "2021"),
OMDB_CON_ACCESS("全封闭", "2022"), OMDB_CON_ACCESS("全封闭","全封闭", "2022"),
OMDB_RAMP("匝道", "2037"), OMDB_RAMP("匝道","匝道", "2037"),
OMDB_RAMP_1("普通路连接匝道", "2037-1"), OMDB_RAMP_1("普通路连接匝道","匝道", "2037-1"),
OMDB_RAMP_2("高速入口匝道", "2037-2"), OMDB_RAMP_2("高速入口匝道","匝道", "2037-2"),
OMDB_RAMP_3("高速出口匝道", "2037-3"), OMDB_RAMP_3("高速出口匝道","匝道", "2037-3"),
OMDB_RAMP_4("高速连接匝道", "2037-4"), OMDB_RAMP_4("高速连接匝道","匝道", "2037-4"),
OMDB_RAMP_5("高速直连入口匝道", "2037-5"), OMDB_RAMP_5("高速直连入口匝道","匝道", "2037-5"),
OMDB_RAMP_6("高速直连出口匝道", "2037-6"), OMDB_RAMP_6("高速直连出口匝道", "匝道","2037-6"),
OMDB_RAMP_7("高速直连出口匝道高速出入口匝道", "2037-7"), OMDB_RAMP_7("高速直连出口匝道高速出入口匝道", "匝道","2037-7"),
OMDB_MULTI_DIGITIZED("上下线分离", "2040"), OMDB_MULTI_DIGITIZED("上下线分离", "上下线分离","2040"),
OMDB_LANE_NUM("车道数", "2041"), OMDB_LANE_NUM("车道数", "车道数","2041"),
OMDB_PHY_LANENUM("物理车道数", "2097"), OMDB_PHY_LANENUM("物理车道数", "物理车道数","2097"),
OMDB_VIADUCT("高架", "2043"), OMDB_VIADUCT("高架", "高架","2043"),
OMDB_LINK_SEPARATION("设施分离", "2070"), OMDB_LINK_SEPARATION("设施分离","设施分离", "2070"),
OMDB_LINK_MEDIAN("中央隔离带", "2071"), OMDB_LINK_MEDIAN("中央隔离带", "中央隔离带","2071"),
OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "2083"), OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "道路边界","2083"),
OMDB_LANE_CONSTRUCTION("车道施工", "2090"), OMDB_LANE_CONSTRUCTION("车道施工", "车道施工","2090"),
OMDB_LANE_TYPE_ACCESS("车道类型","2092"), OMDB_LANE_TYPE_ACCESS("车道类型","车道类型","2092"),
OMDB_BRIDGE("", "2201"), OMDB_BRIDGE("", "", "2201"),
OMDB_BRIDGE_1("固定桥", "2201-1"), OMDB_BRIDGE_1("固定桥", "固定桥","2201-1"),
OMDB_BRIDGE_2("可移动桥", "2201-2"), OMDB_BRIDGE_2("可移动桥", "可移动桥", "2201-2"),
OMDB_BRIDGE_3("跨线天桥", "2201-2"), OMDB_BRIDGE_3("跨线天桥", "跨线天桥","2201-2"),
OMDB_TUNNEL("隧道", "2202"), OMDB_TUNNEL("隧道","隧道", "2202"),
OMDB_ROUNDABOUT("环岛", "2204"), OMDB_ROUNDABOUT("环岛", "环岛", "2204"),
OMDB_LINK_FORM1("道路形态1", "2205"), OMDB_LINK_FORM1("道路形态1","形态", "2205"),
OMDB_LINK_FORM1_1("U-Turn", "2205-1"), OMDB_LINK_FORM1_1("U-Turn", "形态","2205-1"),
OMDB_LINK_FORM1_2("提前右转", "2205-2"), OMDB_LINK_FORM1_2("提前右转","形态", "2205-2"),
OMDB_LINK_FORM1_3("提前左转", "2205-3"), OMDB_LINK_FORM1_3("提前左转", "形态","2205-3"),
OMDB_LINK_FORM2("道路形态2", "2206"), OMDB_LINK_FORM2("道路形态2", "形态","2206"),
OMDB_LINK_FORM2_1("IC", "2206-1"), OMDB_LINK_FORM2_1("IC", "形态","2206-1"),
OMDB_LINK_FORM2_2("JCT", "2206-2"), OMDB_LINK_FORM2_2("JCT", "形态","2206-2"),
OMDB_LINK_FORM2_3("跨线地道", "2206-3"), OMDB_LINK_FORM2_3("跨线地道", "形态","2206-3"),
OMDB_LINK_FORM2_4("私道", "2206-4"), OMDB_LINK_FORM2_4("私道", "形态","2206-4"),
OMDB_LINK_FORM2_5("步行街", "2206-5"), OMDB_LINK_FORM2_5("步行街", "形态","2206-5"),
OMDB_LINK_FORM2_6("公交专用道", "2206-6"), OMDB_LINK_FORM2_6("公交专用道", "形态","2206-6"),
OMDB_LINK_FORM2_7("POI 连接路", "2206-7"), OMDB_LINK_FORM2_7("POI 连接路", "形态","2206-7"),
OMDB_LINK_FORM2_8("区域内道路", "2206-8"), OMDB_LINK_FORM2_8("区域内道路", "形态","2206-8"),
OMDB_LINK_FORM2_9("停车场出入口连接路", "2206-9"), OMDB_LINK_FORM2_9("停车场出入口连接路", "形态","2206-9"),
OMDB_LINK_FORM2_10("停车场内部虚拟连接路", "2206-10"), OMDB_LINK_FORM2_10("停车场内部虚拟连接路","形态", "2206-10"),
OMDB_LINK_FORM2_11("风景路线", "2206-11"), OMDB_LINK_FORM2_11("风景路线", "形态","2206-11"),
OMDB_LINK_FORM2_12("车辆测试路段", "2206-12"), OMDB_LINK_FORM2_12("车辆测试路段", "形态","2206-12"),
OMDB_LINK_FORM2_13("驾照考试路段", "2206-13"), OMDB_LINK_FORM2_13("驾照考试路段", "形态","2206-13"),
OMDB_LANE_ACCESS("通行车辆类型Lane", "2638"), OMDB_LANE_ACCESS("通行车辆类型Lane","通行车辆", "2638"),
OMDB_OBJECT_OH_STRUCT("上方障碍物","3001"), OMDB_OBJECT_OH_STRUCT("上方障碍物","上方障碍物","3001"),
OMDB_OBJECT_TEXT("文字", "3002"), OMDB_OBJECT_TEXT("文字", "文字", "3002"),
OMDB_OBJECT_SYMBOL("符号", "3003"), OMDB_OBJECT_SYMBOL("符号", "符号", "3003"),
OMDB_OBJECT_ARROW("箭头", "3004"), OMDB_OBJECT_ARROW("箭头", "箭头", "3004"),
OMDB_TRAFFIC_SIGN("交通标牌", "3005"), OMDB_TRAFFIC_SIGN("交通标牌", "交通标牌","3005"),
OMDB_POLE("杆状物", "3006"), OMDB_POLE("杆状物", "杆状物","3006"),
OMDB_FILL_AREA("导流", "3012"), OMDB_OBJECT_WARNING_AREA("警示区","警示", "3007"),
OMDB_CROSS_WALK("人行横道", "3014"), OMDB_OBJECT_BARRIER("护栏", "护栏","3009"),
OMDB_OBJECT_STOPLOCATION("停止位置", "3016"), OMDB_OBJECT_WALL("平行墙", "平行墙","3010"),
OMDB_OBJECT_REFUGE_ISLAND("路口内交通岛", "3027"), OMDB_FILL_AREA("导流区", "导流区","3012"),
OMDB_INTERSECTION("路口", "4001"), OMDB_CROSS_WALK("人行横道", "人行横道","3014"),
OMDB_SPEEDLIMIT("常规点限速", "4002"), OMDB_OBJECT_STOPLOCATION("停止位置", "停止位置", "3016"),
OMDB_SPEEDLIMIT_COND("条件点限速", "4003"), OMDB_OBJECT_CURB("路牙", "路牙","3019"),
OMDB_SPEEDLIMIT_VAR("可变点限速", "4004"), OMDB_OBJECT_REFUGE_ISLAND("路口内交通岛", "交通岛", "3028"),
OMDB_LANE_SPEEDLIMIT("车道点限速", "4005"), OMDB_INTERSECTION("路口", "路口","4001"),
OMDB_RESTRICTION("普通交限", "4006"), OMDB_SPEEDLIMIT("常规点限速", "常规点限速","4002"),
OMDB_WARNINGSIGN("警示信息", "4009"), OMDB_SPEEDLIMIT_COND("条件点限速", "条件点限速", "4003"),
OMDB_ELECTRONICEYE("电子眼", "4010"), OMDB_SPEEDLIMIT_VAR("可变点限速", "可变点限速","4004"),
OMDB_ZLEVEL("立交", "4016"), OMDB_LANE_SPEEDLIMIT("车道点限速", "车道点限速", "4005"),
OMDB_TRAFFICLIGHT("交通灯", "4022"), OMDB_RESTRICTION("普通交限", "普通交限", "4006"),
OMDB_TOLLGATE("收费站", "4023"), OMDB_WARNINGSIGN("警示信息", "警示信息", "4009"),
OMDB_LANEINFO("车信", "4601"), OMDB_ELECTRONICEYE("电子眼","电子眼", "4010"),
OMDB_CLM_LANEINFO("车信CLM", "4602"), OMDB_ZLEVEL("立交", "立交", "4016"),
OMDB_LANE_LINK_LG("车道中心线", "5001"); OMDB_TRAFFICLIGHT("交通灯", "交通灯","4022"),
OMDB_TOLLGATE("收费站", "收费站","4023"),
OMDB_LANEINFO("车信", "车信","4601"),
OMDB_CLM_LANEINFO("车信CLM", "车信CLM","4602"),
OMDB_LANE_LINK_LG("车道中心线", "车道中心线","5001");
companion object { companion object {
fun findTableNameByCode(code: String): String { fun findTableNameByCode(code: String): String {
@@ -99,6 +103,14 @@ public enum class DataCodeEnum(var tableName: String, var code: String) {
} }
return "" // 若未找到匹配的 code则返回 null 或其他适当的默认值 return "" // 若未找到匹配的 code则返回 null 或其他适当的默认值
} }
fun findTableSubNameByCode(code: String): String {
for (enumInstance in DataCodeEnum.values()) {
if (enumInstance.code == code) {
return enumInstance.tableSubName
}
}
return "" // 若未找到匹配的 code则返回 null 或其他适当的默认值
}
} }
} }

2
vtm

Submodule vtm updated: 5a0e348ed8...c2d87b1095