feat: symbol添加背景、前景、内容显示区域设置
This commit is contained in:
@@ -65,8 +65,8 @@
|
||||
"table": "OMDB_LINK_NAME",
|
||||
"code": 2011,
|
||||
"name": "道路名",
|
||||
"zoomMin": 15,
|
||||
"zoomMax": 17,
|
||||
"zoomMin": 18,
|
||||
"zoomMax": 20,
|
||||
"checkLinkId": false,
|
||||
"transformer": [
|
||||
{
|
||||
@@ -110,14 +110,54 @@
|
||||
"code": 2019,
|
||||
"name": "常规线限速",
|
||||
"zoomMin": 15,
|
||||
"zoomMax": 17
|
||||
"zoomMax": 17,
|
||||
"transformer": [
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "translateRight()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateS2EReferenceLine()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateDirectReferenceLine()"
|
||||
}
|
||||
]
|
||||
},
|
||||
"2020": {
|
||||
"table": "OMDB_LINK_SPEEDLIMIT_COND",
|
||||
"code": 2020,
|
||||
"name": "条件线限速",
|
||||
"zoomMin": 15,
|
||||
"zoomMax": 17
|
||||
"zoomMax": 17,
|
||||
"transformer": [
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "translateRight()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateS2EReferenceLine()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateDirectReferenceLine()"
|
||||
}
|
||||
]
|
||||
},
|
||||
"2021": {
|
||||
"table": "OMDB_LINK_SPEEDLIMIT_VAR",
|
||||
@@ -134,7 +174,15 @@
|
||||
"filterData": true,
|
||||
"zoomMin": 18,
|
||||
"zoomMax": 20,
|
||||
"catch": true
|
||||
"catch": true,
|
||||
"transformer": [
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "dengfenLineString()"
|
||||
}
|
||||
]
|
||||
},
|
||||
"2090": {
|
||||
"table": "OMDB_LANE_CONSTRUCTION",
|
||||
@@ -388,6 +436,24 @@
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "translateRight()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateS2EReferenceLine()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateDirectReferenceLine()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "createSpeedLimitText()"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -404,6 +470,12 @@
|
||||
"v": "0|",
|
||||
"klib": "maxSpeed",
|
||||
"vlib": "限"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "createSpeedLimitText()"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -432,6 +504,12 @@
|
||||
"v": "3",
|
||||
"klib": "ref",
|
||||
"vlib": "上"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "createSpeedLimitText()"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -589,15 +667,10 @@
|
||||
"name": "车信",
|
||||
"catch": true,
|
||||
"isDependOnOtherTable": false,
|
||||
"checkLinkId": false,
|
||||
"zoomMin": 15,
|
||||
"zoomMax": 17,
|
||||
"transformer": [
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "translateBack()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
|
||||
@@ -455,7 +455,7 @@ class ImportOMDBHelper @AssistedInject constructor(
|
||||
val boundaryType = renderEntity.properties["boundaryType"]
|
||||
if (boundaryType != null) {
|
||||
when (boundaryType.toInt()) {
|
||||
0, 1, 6, 8, 9 -> {
|
||||
0, 1, 7, 8 -> {
|
||||
renderEntity.enable = 0
|
||||
line = bufferedReader.readLine()
|
||||
continue
|
||||
@@ -468,7 +468,7 @@ class ImportOMDBHelper @AssistedInject constructor(
|
||||
val boundaryType = renderEntity.properties["boundaryType"]
|
||||
if (boundaryType != null) {
|
||||
when (boundaryType.toInt()) {
|
||||
0, 1, 3, 4, 5, 7, 9 -> {
|
||||
0, 1, 2, 7, 8 -> {
|
||||
renderEntity.enable = 0
|
||||
line = bufferedReader.readLine()
|
||||
continue
|
||||
@@ -770,8 +770,8 @@ class ImportOMDBHelper @AssistedInject constructor(
|
||||
renderEntity.properties.remove("linkPid")
|
||||
}
|
||||
|
||||
//去掉暂用控件较大的字段多余属性字段
|
||||
if (renderEntity.properties.containsKey("shapeList")) {
|
||||
//去掉暂用控件较大的字段多余属性字段,保留道路名用于展示详情
|
||||
if (renderEntity.code!=DataCodeEnum.OMDB_LINK_NAME.code&&renderEntity.properties.containsKey("shapeList")) {
|
||||
renderEntity.properties.remove("shapeList")
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,6 @@ class ImportPreProcess {
|
||||
) != null
|
||||
) {
|
||||
// 带有angle字段的数据,也有可能是线,需要判断是否需要根据指定字段判断数据是否为逆向
|
||||
|
||||
var angle = renderEntity?.properties?.get("angle")?.toDouble()!!
|
||||
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||
angle = ((450 - angle) % 360)
|
||||
@@ -226,7 +225,6 @@ class ImportPreProcess {
|
||||
|
||||
// 将这个起终点的线记录在数据中
|
||||
val startEndReference = ReferenceEntity()
|
||||
// startEndReference.renderEntityId = renderEntity.id
|
||||
startEndReference.name = "${renderEntity.name}参考线"
|
||||
startEndReference.table = renderEntity.table
|
||||
startEndReference.code = renderEntity.code
|
||||
@@ -239,11 +237,8 @@ class ImportPreProcess {
|
||||
GeometryTools.createLineString(arrayOf<Coordinate>(pointStart, pointEnd)).toString()
|
||||
startEndReference.properties["qi_table"] = renderEntity.table
|
||||
startEndReference.properties["type"] = "s_2_e"
|
||||
val listResult = mutableListOf<ReferenceEntity>()
|
||||
startEndReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startEndReference.properties))
|
||||
renderEntity.referenceEntitys?.add(startEndReference)
|
||||
//listResult.add(startEndReference)
|
||||
//insertData(listResult)
|
||||
renderEntity.referenceEntitys.add(startEndReference)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -306,7 +301,7 @@ class ImportPreProcess {
|
||||
endReference.properties["qi_table"] = renderEntity.table
|
||||
endReference.properties["type"] = "e${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000)>0) "_dec" else "_acc"}"
|
||||
endReference.properties["geometry"] = endReference.geometry
|
||||
renderEntity.referenceEntitys?.add(endReference)
|
||||
renderEntity.referenceEntitys.add(endReference)
|
||||
//listResult.add(endReference)
|
||||
//insertData(listResult)
|
||||
}
|
||||
@@ -325,7 +320,6 @@ class ImportPreProcess {
|
||||
|
||||
// 将这个起终点的线记录在数据中
|
||||
val startReference = ReferenceEntity()
|
||||
// startReference.renderEntityId = renderEntity.id
|
||||
startReference.name = "${renderEntity.name}参考点"
|
||||
startReference.code = renderEntity.code
|
||||
startReference.table = renderEntity.table
|
||||
@@ -363,7 +357,6 @@ class ImportPreProcess {
|
||||
Log.e("qj", "generateS2EReferencePoint===1")
|
||||
|
||||
val endReference = ReferenceEntity()
|
||||
// endReference.renderEntityId = renderEntity.id
|
||||
endReference.name = "${renderEntity.name}参考点"
|
||||
endReference.code = renderEntity.code
|
||||
endReference.table = renderEntity.table
|
||||
@@ -393,10 +386,8 @@ class ImportPreProcess {
|
||||
}
|
||||
endReference.properties["geometry"] = endReference.geometry
|
||||
endReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(endReference.properties))
|
||||
renderEntity.referenceEntitys?.add(endReference)
|
||||
//listResult.add(endReference)
|
||||
renderEntity.referenceEntitys.add(endReference)
|
||||
Log.e("qj", "generateS2EReferencePoint===4")
|
||||
//insertData(listResult)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -407,6 +398,7 @@ class ImportPreProcess {
|
||||
direction: String = "",
|
||||
distance: String = ""
|
||||
) {
|
||||
Log.e("qj", "generateDirectReferenceLine===0==${renderEntity.code}")
|
||||
// 根据数据或angle计算方向对应的角度和偏移量
|
||||
val geometry = renderEntity.wkt
|
||||
var isReverse = false // 是否为逆向
|
||||
@@ -473,13 +465,11 @@ class ImportPreProcess {
|
||||
geometry?.coordinate?.y!!
|
||||
) * Math.sin(radian)
|
||||
}
|
||||
val listResult = mutableListOf<ReferenceEntity>()
|
||||
|
||||
for (pointStart in pointStartArray) {
|
||||
val coorEnd = Coordinate(pointStart.getX() + dx, pointStart.getY() + dy, pointStart.z)
|
||||
|
||||
val angleReference = ReferenceEntity()
|
||||
// angleReference.renderEntityId = renderEntity.id
|
||||
angleReference.name = "${renderEntity.name}参考方向"
|
||||
angleReference.table = renderEntity.table
|
||||
angleReference.code = renderEntity.code
|
||||
@@ -493,10 +483,9 @@ class ImportPreProcess {
|
||||
angleReference.properties["qi_table"] = renderEntity.table
|
||||
angleReference.properties["type"] = "angle"
|
||||
angleReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties))
|
||||
renderEntity.referenceEntitys?.add(angleReference)
|
||||
//listResult.add(angleReference)
|
||||
renderEntity.referenceEntitys.add(angleReference)
|
||||
}
|
||||
//insertData(listResult)
|
||||
Log.e("qj", "generateDirectReferenceLine===1")
|
||||
}
|
||||
|
||||
fun addAngleFromGeometry(renderEntity: RenderEntity): String {
|
||||
@@ -574,6 +563,8 @@ class ImportPreProcess {
|
||||
renderEntityTemp.zoomMax = renderEntity.zoomMax
|
||||
renderEntityTemp.enable = renderEntity.enable
|
||||
renderEntityTemp.taskId = renderEntity.taskId
|
||||
renderEntityTemp.linkPid = renderEntity.linkPid
|
||||
renderEntity.linkRelation = renderEntity.linkRelation
|
||||
renderEntityTemp.catchEnable = renderEntity.catchEnable
|
||||
var dis = -lateralOffset.toDouble() / 100000000
|
||||
//最小值取10厘米,否正渲染太近无法显示
|
||||
@@ -607,6 +598,37 @@ class ImportPreProcess {
|
||||
if (listResult.size > 0) {
|
||||
insertData(listResult)
|
||||
}
|
||||
}else if(boundaryType.toInt() == 9){//根据线型平分为点数据,用于渲染3D标
|
||||
dengfenLineString(renderEntity)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun dengfenLineString(renderEntity: RenderEntity){
|
||||
if (renderEntity.code == DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code||renderEntity.code == DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code){
|
||||
val boundaryType = renderEntity.properties["boundaryType"]
|
||||
if (boundaryType != null) {
|
||||
if(boundaryType.toInt()==9){
|
||||
Log.e("qj","杆状物转换开始")
|
||||
val geopointList = GeometryTools.getLineToDengGeoPints(renderEntity.wkt,5.0)
|
||||
geopointList.forEach{
|
||||
val referenceEntity = ReferenceEntity()
|
||||
referenceEntity.name = "${renderEntity.name}线转点坐标"
|
||||
referenceEntity.table = renderEntity.table
|
||||
referenceEntity.code = renderEntity.code
|
||||
referenceEntity.geometry = GeometryTools.createGeometry(it).toString()
|
||||
Log.e("jingo", "几何转换结束")
|
||||
referenceEntity.properties["qi_table"] = renderEntity.table
|
||||
referenceEntity.properties["boundaryType"] = "pole"
|
||||
referenceEntity.zoomMin = renderEntity.zoomMin
|
||||
referenceEntity.zoomMax = renderEntity.zoomMax
|
||||
referenceEntity.taskId = renderEntity.taskId
|
||||
referenceEntity.enable = renderEntity.enable
|
||||
referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties))
|
||||
renderEntity.referenceEntitys.add(referenceEntity)
|
||||
}
|
||||
Log.e("qj","杆状物转换结束")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -636,7 +658,7 @@ class ImportPreProcess {
|
||||
referenceEntity.zoomMin = renderEntity.zoomMin
|
||||
referenceEntity.zoomMax = renderEntity.zoomMax
|
||||
// 与原数据使用相同的geometry
|
||||
referenceEntity.geometry = renderEntity.geometry
|
||||
referenceEntity.geometry = GeometryTools.createGeometry(renderEntity.geometry).toString()
|
||||
referenceEntity.properties["qi_table"] = renderEntity.table
|
||||
referenceEntity.properties["symbol"] = "true"
|
||||
for (i in 0 until laneInfoDirectArray.length()) {
|
||||
@@ -650,30 +672,6 @@ class ImportPreProcess {
|
||||
"assets:omdb/4601/${type}/1301_${currentDirect}.svg"
|
||||
referenceEntity.properties["img-src"] = if(referenceEntity.properties["img-src"].isNullOrEmpty()) symbol else "${referenceEntity.properties["img-src"]}|${symbol}"
|
||||
|
||||
// // 根据后续的数据生成辅助表数据
|
||||
// val referenceEntity = ReferenceEntity()
|
||||
//// referenceEntity.renderEntityId = renderEntity.id
|
||||
// referenceEntity.name = "${renderEntity.name}参考方向"
|
||||
// referenceEntity.table = renderEntity.table
|
||||
// referenceEntity.enable = renderEntity.enable
|
||||
// referenceEntity.code = renderEntity.code
|
||||
// referenceEntity.taskId = renderEntity.taskId
|
||||
// referenceEntity.zoomMin = renderEntity.zoomMin
|
||||
// referenceEntity.zoomMax = renderEntity.zoomMax
|
||||
// // 与原数据使用相同的geometry
|
||||
// referenceEntity.geometry = renderEntity.geometry
|
||||
// referenceEntity.properties["qi_table"] = renderEntity.table
|
||||
// referenceEntity.properties["currentDirect"] =
|
||||
// laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_")
|
||||
// referenceEntity.properties["currentType"] =
|
||||
// laneInfoTypeArray[i].toString()
|
||||
// val type =
|
||||
// if (referenceEntity.properties["currentType"] == "0") "normal" else if (referenceEntity.properties["currentType"] == "1") "extend" else "bus"
|
||||
// referenceEntity.properties["symbol"] =
|
||||
// "assets:omdb/4601/${type}/1301_${referenceEntity.properties["currentDirect"]}.svg"
|
||||
// Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString())
|
||||
// referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties))
|
||||
// renderEntity.referenceEntitys?.add(referenceEntity)
|
||||
//listResult.add(referenceEntity)
|
||||
}
|
||||
referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties))
|
||||
@@ -796,7 +794,7 @@ class ImportPreProcess {
|
||||
angleReference.enable = renderEntity.enable
|
||||
val listResult = mutableListOf<ReferenceEntity>()
|
||||
angleReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties))
|
||||
renderEntity.referenceEntitys?.add(angleReference)
|
||||
renderEntity.referenceEntitys.add(angleReference)
|
||||
//listResult.add(angleReference)
|
||||
//insertData(listResult)
|
||||
}
|
||||
@@ -828,13 +826,28 @@ class ImportPreProcess {
|
||||
intersectionReference.properties["qi_table"] = renderEntity.table
|
||||
intersectionReference.properties["type"] = "node"
|
||||
intersectionReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(intersectionReference.properties))
|
||||
renderEntity.referenceEntitys?.add(intersectionReference)
|
||||
renderEntity.referenceEntitys.add(intersectionReference)
|
||||
//listResult.add(intersectionReference)
|
||||
}
|
||||
//insertData(listResult)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 几何方向排序
|
||||
* */
|
||||
fun sortGeometry(renderEntity: RenderEntity) {
|
||||
// 路口数据的其他点位,是保存在nodeList对应的数组下
|
||||
/* if (renderEntity.properties.containsKey("linkPid")) {
|
||||
val linkList = renderEntity.properties["linkPid"]?.split(",")
|
||||
//几何较少时需要判断是否要计算判断长短边
|
||||
if(linkList!=null&&linkList.size<3){
|
||||
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成默认路口数据的参考数据
|
||||
* */
|
||||
@@ -999,7 +1012,7 @@ class ImportPreProcess {
|
||||
val code = renderEntity.properties[codeName]
|
||||
dynamicSrcReference.properties["src"] = "${prefix}${code}${suffix}"
|
||||
dynamicSrcReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(dynamicSrcReference.properties))
|
||||
renderEntity.referenceEntitys?.add(dynamicSrcReference)
|
||||
renderEntity.referenceEntitys.add(dynamicSrcReference)
|
||||
//listResult.add(dynamicSrcReference)
|
||||
}
|
||||
//insertData(listResult)
|
||||
@@ -1260,4 +1273,13 @@ class ImportPreProcess {
|
||||
zLevelReference.properties["qi_table"] = renderEntity.table
|
||||
return zLevelReference
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建限速的文字动态数据,生成动态symbol
|
||||
* */
|
||||
fun createSpeedLimitText(renderEntity: RenderEntity) {
|
||||
if (renderEntity.properties.containsKey("maxSpeed")) {
|
||||
renderEntity.properties["text-src"] = "@text:${renderEntity.properties["maxSpeed"]}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -181,7 +181,7 @@ class RealmOperateHelper() {
|
||||
var nearLast: Double = 99999.99
|
||||
for (link in realmList) {
|
||||
if (polygon.intersects(GeometryTools.createGeometry(link.geometry))) {
|
||||
val near = point.distance(GeometryTools.createGeoPoint(link.geometry))
|
||||
val near = GeometryTools.createGeometry(link.geometry).distance(GeometryTools.createGeometry(point))
|
||||
if (near < nearLast) {
|
||||
nearLast = near
|
||||
linkBean = link
|
||||
@@ -302,6 +302,7 @@ class RealmOperateHelper() {
|
||||
// 将获取到的数据和查询的polygon做相交,只返回相交的数据
|
||||
val queryResult = realmList?.stream()?.filter {
|
||||
if (Constant.MapCatchLine) {
|
||||
Log.e("qj",it.code+"捕捉要素编码"+it.enable+"==="+it.catchEnable)
|
||||
polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase()
|
||||
.equals("LINESTRING") || it.wkt?.geometryType?.uppercase().equals("POLYGON")
|
||||
} else {
|
||||
|
||||
@@ -127,6 +127,7 @@ class LoginActivity : CheckPermissionsActivity() {
|
||||
private fun initView() {
|
||||
//登录校验,初始化成功
|
||||
viewModel.loginStatus.observe(this, loginObserve)
|
||||
viewModel.lastLoginUserInfo(this)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,16 +8,8 @@ import android.widget.Toast
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.room.migration.Migration
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import com.blankj.utilcode.util.FileIOUtils
|
||||
import com.blankj.utilcode.util.ResourceUtils
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.navinfo.collect.library.data.entity.LinkRelation
|
||||
import com.navinfo.collect.library.data.entity.RenderEntity
|
||||
import com.navinfo.collect.library.data.entity.TaskBean
|
||||
import com.navinfo.collect.library.utils.GeometryTools
|
||||
import com.navinfo.omqs.Constant
|
||||
import com.navinfo.omqs.bean.LoginUserBean
|
||||
import com.navinfo.omqs.bean.SysUserBean
|
||||
@@ -94,13 +86,18 @@ class LoginViewModel @Inject constructor(
|
||||
|
||||
var sharedPreferences: SharedPreferences? = null
|
||||
|
||||
var dataIndex = 0
|
||||
|
||||
init {
|
||||
loginUser.value = LoginUserBean(userCode = "haofuyue00213", passWord = "123456")
|
||||
}
|
||||
|
||||
|
||||
fun lastLoginUserInfo(context: Context){
|
||||
sharedPreferences =
|
||||
context.getSharedPreferences("USER_SHAREDPREFERENCES", Context.MODE_PRIVATE)
|
||||
val userNameCache = sharedPreferences?.getString("userName", "lixiaoming00427")
|
||||
val passwordCache = sharedPreferences?.getString("passWord", "123456")
|
||||
loginUser.value = LoginUserBean(userCode = "$userNameCache", passWord = "$passwordCache")
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理注册按钮
|
||||
*/
|
||||
@@ -270,130 +267,97 @@ class LoginViewModel @Inject constructor(
|
||||
* 获取任务列表
|
||||
*/
|
||||
private suspend fun getTaskList(context: Context) {
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_NET_GET_TASK_LIST)
|
||||
when (val result = networkService.getTaskList(Constant.USER_ID)) {
|
||||
is NetResult.Success -> {
|
||||
if (result.data != null) {
|
||||
val realm = Realm.getDefaultInstance()
|
||||
realm.executeTransaction {
|
||||
result.data.obj?.let { list ->
|
||||
for (index in list.indices) {
|
||||
var inSertData = true
|
||||
val task = list[index]
|
||||
val item = realm.where(TaskBean::class.java).equalTo(
|
||||
"id", task.id
|
||||
).findFirst()
|
||||
if (item != null) {
|
||||
task.fileSize = item.fileSize
|
||||
task.status = item.status
|
||||
task.currentSize = item.currentSize
|
||||
//增加mesh==null兼容性处理
|
||||
for (hadLink in item.hadLinkDvoList) {
|
||||
if(hadLink.mesh==null){
|
||||
hadLink.mesh = ""
|
||||
|
||||
//每天主动请求一次,其他情况列表内自己手动请求
|
||||
val questToday = sharedPreferences?.getBoolean(DateTimeUtil.getYYYYMMDDDate()+"getTaskList",false)
|
||||
|
||||
if(!questToday!!){
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_NET_GET_TASK_LIST)
|
||||
Log.e("qj","获取任务请求开始==")
|
||||
when (val result = networkService.getTaskList(Constant.USER_ID)) {
|
||||
is NetResult.Success -> {
|
||||
if (result.data != null) {
|
||||
Log.e("qj","获取任务返回成功==")
|
||||
val realm = Realm.getDefaultInstance()
|
||||
realm.executeTransaction {
|
||||
result.data.obj?.let { list ->
|
||||
for (index in list.indices) {
|
||||
var inSertData = true
|
||||
val task = list[index]
|
||||
val item = realm.where(TaskBean::class.java).equalTo(
|
||||
"id", task.id
|
||||
).findFirst()
|
||||
if (item != null) {
|
||||
task.fileSize = item.fileSize
|
||||
task.status = item.status
|
||||
task.currentSize = item.currentSize
|
||||
//增加mesh==null兼容性处理
|
||||
for (hadLink in item.hadLinkDvoList) {
|
||||
if(hadLink.mesh==null){
|
||||
hadLink.mesh = ""
|
||||
}
|
||||
}
|
||||
task.hadLinkDvoList = item.hadLinkDvoList
|
||||
task.syncStatus = item.syncStatus
|
||||
//已上传后不在更新操作时间
|
||||
if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
||||
//赋值时间,用于查询过滤
|
||||
task.operationTime = DateTimeUtil.getNowDate().time
|
||||
}else{
|
||||
continue
|
||||
}
|
||||
} else {
|
||||
for (hadLink in task.hadLinkDvoList) {
|
||||
if(hadLink.geometry==null){
|
||||
inSertData = false
|
||||
}else if(hadLink.mesh==null){
|
||||
hadLink.mesh = ""
|
||||
}else{
|
||||
hadLink.taskId = task.id
|
||||
}
|
||||
Log.e("qj","mesh==${hadLink.mesh}")
|
||||
}
|
||||
}
|
||||
task.hadLinkDvoList = item.hadLinkDvoList
|
||||
task.syncStatus = item.syncStatus
|
||||
//已上传后不在更新操作时间
|
||||
if (task.syncStatus != FileManager.Companion.FileUploadStatus.DONE) {
|
||||
//赋值时间,用于查询过滤
|
||||
task.operationTime = DateTimeUtil.getNowDate().time
|
||||
}else{
|
||||
continue
|
||||
}
|
||||
} else {
|
||||
for (hadLink in task.hadLinkDvoList) {
|
||||
if(hadLink.geometry==null){
|
||||
inSertData = false
|
||||
}else if(hadLink.mesh==null){
|
||||
hadLink.mesh = ""
|
||||
}else{
|
||||
hadLink.taskId = task.id
|
||||
}
|
||||
Log.e("qj","mesh==${hadLink.mesh}")
|
||||
Log.e("qj","task==${task.id}")
|
||||
if(inSertData){
|
||||
realm.copyToRealmOrUpdate(task)
|
||||
}
|
||||
//赋值时间,用于查询过滤
|
||||
task.operationTime = DateTimeUtil.getNowDate().time
|
||||
}
|
||||
Log.e("qj","task==${task.id}")
|
||||
if(inSertData){
|
||||
realm.copyToRealmOrUpdate(task)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
realm.close()
|
||||
}
|
||||
//测试代码
|
||||
/* viewModelScope.launch(Dispatchers.IO) {
|
||||
|
||||
|
||||
val userTaskFolder = File(Constant.USER_DATA_PATH + "/4")
|
||||
if (!userTaskFolder.exists()) userTaskFolder.mkdirs()
|
||||
val password = "encryp".encodeToByteArray().copyInto(ByteArray(64))
|
||||
val config = RealmConfiguration.Builder()
|
||||
.directory(userTaskFolder)
|
||||
.name("OMQS.realm")
|
||||
.encryptionKey(password)
|
||||
.allowQueriesOnUiThread(true)
|
||||
.schemaVersion(2)
|
||||
.build()
|
||||
|
||||
var realm = Realm.getInstance(config)
|
||||
var time = System.currentTimeMillis()
|
||||
Log.e("qj", "test===开始安装")
|
||||
Realm.compactRealm(config)
|
||||
realm.beginTransaction()
|
||||
|
||||
val txtFile = File(Constant.USER_DATA_PATH + "/OMDB_LANE_MARK_BOUNDARYTYPE")
|
||||
// 将list数据转换为map
|
||||
var gson = Gson();
|
||||
val type = object : TypeToken<RenderEntity>() {}.type
|
||||
val list = FileIOUtils.readFile2List(txtFile, "UTF-8")
|
||||
val count = 12
|
||||
if (list != null) {
|
||||
for (i in 0 until count) {
|
||||
for ((index, line) in list.withIndex()) {
|
||||
if (line == null || line.trim() == "") {
|
||||
continue
|
||||
}
|
||||
val renderEntity = gson.fromJson<RenderEntity>(line, type)
|
||||
realm.insert(renderEntity)
|
||||
}
|
||||
}
|
||||
Log.e("qj", "test===总数===${list.size*count}")
|
||||
realm.close()
|
||||
//增加当天请求过标识
|
||||
sharedPreferences?.edit()
|
||||
?.putBoolean(DateTimeUtil.getYYYYMMDDDate()+"getTaskList",true)
|
||||
Log.e("qj","获取任务结束==")
|
||||
}
|
||||
|
||||
Log.e("qj", "test===提交===${System.currentTimeMillis() - time}")
|
||||
realm.commitTransaction()
|
||||
Log.e("qj", "test===提交===${System.currentTimeMillis() - time}")
|
||||
realm.close()
|
||||
|
||||
Log.e("qj", "test===结束===${System.currentTimeMillis() - time}")
|
||||
}*/
|
||||
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
|
||||
}
|
||||
|
||||
is NetResult.Error<*> -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
|
||||
}
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
|
||||
}
|
||||
|
||||
is NetResult.Failure<*> -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
is NetResult.Error<*> -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
}
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
|
||||
}
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
|
||||
}
|
||||
|
||||
is NetResult.Loading -> {}
|
||||
is NetResult.Failure<*> -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
}
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
|
||||
}
|
||||
|
||||
is NetResult.Loading -> {}
|
||||
}
|
||||
}else{
|
||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_SUCCESS)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,6 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import com.blankj.utilcode.util.ClipboardUtils
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.navinfo.collect.library.data.entity.RenderEntity
|
||||
import com.navinfo.collect.library.enums.DataCodeEnum
|
||||
import com.navinfo.collect.library.map.NIMapController
|
||||
import com.navinfo.collect.library.map.handler.MeasureLayerHandler
|
||||
import com.navinfo.collect.library.utils.DeflaterUtil
|
||||
@@ -688,7 +686,7 @@ class MainActivity : BaseActivity() {
|
||||
index = p0.position
|
||||
editText.text = null
|
||||
//清理已绘制线
|
||||
mapController.lineHandler.removeLine()
|
||||
mapController.lineHandler.removeAllLine()
|
||||
mapController.markerHandle.removeMarker("location")
|
||||
when (p0.position) {
|
||||
0 -> editText.hint = "请输入LinkPid例如:12345678"
|
||||
@@ -819,25 +817,15 @@ class MainActivity : BaseActivity() {
|
||||
* zoomOut
|
||||
*/
|
||||
fun zoomOutOnclick(view: View) {
|
||||
val result = mutableListOf<RenderEntity>()
|
||||
for (i in 0 until 10) {
|
||||
var renderEntity: RenderEntity = RenderEntity()
|
||||
renderEntity.geometry = "POINT(116.2694${i}13016946 40.0844${i}5791644373 0)"
|
||||
result.add(renderEntity)
|
||||
val lineString =
|
||||
"LINESTRING(115.92708317758513 40.42230758745775 0, 115.9272990153405 40.422317981061205 0, 115.92750895192124 40.42232797132084 0, 115.9277199918031 40.422337964543026 0)"
|
||||
val geometry = GeometryTools.createGeometry(lineString)
|
||||
//定位
|
||||
mapController.animationHandler.animationByLatLon(geometry.centroid.y,geometry.centroid.x,500)
|
||||
GeometryTools.getLineToDengGeoPints(geometry, 5.0)?.forEach {
|
||||
mapController.markerHandle.addMarker(it, it.toString())
|
||||
}
|
||||
//计算后
|
||||
var index = 0
|
||||
Log.e("qj","====计算开始")
|
||||
var lastRender:RenderEntity = RenderEntity()
|
||||
GeometryTools.groupByDistance(DataCodeEnum.OMDB_TRAFFIC_SIGN.code,result, 5.0)?.forEach {
|
||||
if(lastRender!=null&&lastRender.geometry!=null&& lastRender.geometry != ""){
|
||||
if(it.geometry!=lastRender.geometry){
|
||||
Log.e("qj","${index++}====计算后"+it.geometry)
|
||||
}
|
||||
}
|
||||
lastRender = it
|
||||
}
|
||||
Log.e("qj","====计算结束")
|
||||
mapController.lineHandler.showLine(geometry.toString())
|
||||
mapController.animationHandler.zoomOut()
|
||||
}
|
||||
|
||||
|
||||
@@ -719,9 +719,9 @@ class MainViewModel @Inject constructor(
|
||||
*/
|
||||
private suspend fun captureItem(point: GeoPoint) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
var buffer = 8.0
|
||||
var buffer = 10.0
|
||||
if (mapController.mMapView.mapLevel >= 18) {
|
||||
buffer = 2.0
|
||||
buffer = 2.2
|
||||
}
|
||||
val itemList = realmOperateHelper.queryElement(
|
||||
GeometryTools.createPoint(
|
||||
@@ -1340,9 +1340,9 @@ class MainViewModel @Inject constructor(
|
||||
)
|
||||
}
|
||||
|
||||
if (data.wkt != null) {
|
||||
/* if (data.wkt != null) {
|
||||
mapController.markerHandle.removeMarker("moreInfo")
|
||||
mapController.lineHandler.removeLine()
|
||||
mapController.lineHandler.removeAllLine()
|
||||
when (data.wkt!!.geometryType) {
|
||||
Geometry.TYPENAME_POINT -> {
|
||||
val geoPoint = GeometryTools.createGeoPoint(data.wkt!!.toText())
|
||||
@@ -1350,10 +1350,10 @@ class MainViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
Geometry.TYPENAME_LINESTRING -> {
|
||||
mapController.lineHandler.showLine(data.wkt!!.toText())
|
||||
mapController.lineHandler.showSubLine(data.wkt!!.toText())
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
fun sendServerCommand(
|
||||
|
||||
@@ -12,6 +12,7 @@ import android.widget.Toast
|
||||
import androidx.activity.result.ActivityResult
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.navigation.NavOptions
|
||||
import androidx.navigation.findNavController
|
||||
@@ -75,6 +76,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
//// 设置 RecyclerView 的固定大小,避免在滚动时重新计算视图大小和布局,提高性能
|
||||
@@ -178,6 +180,8 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
|
||||
try {
|
||||
signBean = it.getParcelable("SignBean")
|
||||
autoSave = it.getBoolean("AutoSave")
|
||||
//高亮数据几何
|
||||
signBean?.let { it1 -> viewModel.show(it1.renderEntity) }
|
||||
} catch (_: java.lang.Exception) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,9 @@ import io.realm.RealmList
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.locationtech.jts.geom.Geometry
|
||||
import org.oscim.core.GeoPoint
|
||||
import org.oscim.core.GeometryBuffer.GeometryType
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.util.*
|
||||
@@ -73,6 +75,8 @@ class EvaluationResultViewModel @Inject constructor(
|
||||
|
||||
private val TAG = "点选marker"
|
||||
|
||||
private val ELEMENT_MARKER = "elementMarker"
|
||||
|
||||
/**
|
||||
* 操作结束,销毁页面
|
||||
*/
|
||||
@@ -155,8 +159,10 @@ class EvaluationResultViewModel @Inject constructor(
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
mapController.mMapView.removeOnNIMapClickListener(TAG)
|
||||
//移除要素marker
|
||||
mapController.markerHandle.removeMarker(ELEMENT_MARKER)
|
||||
mapController.markerHandle.removeMarker()
|
||||
mapController.lineHandler.removeLine()
|
||||
mapController.lineHandler.removeAllLine()
|
||||
}
|
||||
|
||||
|
||||
@@ -204,7 +210,7 @@ class EvaluationResultViewModel @Inject constructor(
|
||||
}
|
||||
} else {
|
||||
liveDataQsRecordBean.value?.run {
|
||||
elementId = bean.renderEntity.code
|
||||
elementId = bean.renderEntity.id
|
||||
linkId = bean.linkId
|
||||
if (linkId.isNotEmpty()) {
|
||||
viewModelScope.launch {
|
||||
@@ -495,6 +501,7 @@ class EvaluationResultViewModel @Inject constructor(
|
||||
* 根据数据id,查询数据
|
||||
*/
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
fun initData(id: String) {
|
||||
Log.e("jingo", "捕捉到的要素 id = $id")
|
||||
viewModelScope.launch(Dispatchers.Main) {
|
||||
@@ -545,14 +552,21 @@ class EvaluationResultViewModel @Inject constructor(
|
||||
// 显示语音数据到界面
|
||||
getChatMsgEntityList()
|
||||
realm.close()
|
||||
if (it.elementId == DataCodeEnum.OMDB_LANEINFO.code) {
|
||||
//增加要素高亮
|
||||
if(it.elementId!=null){
|
||||
val realm2 = realmOperateHelper.getSelectTaskRealmInstance()
|
||||
val r = realm2.where(RenderEntity::class.java)
|
||||
.equalTo("table", DataCodeEnum.OMDB_LANEINFO.name)
|
||||
.equalTo("linkPid", it.linkId).findFirst()
|
||||
if (r != null) {
|
||||
renderEntity = realm2.copyFromRealm(r)
|
||||
laneInfoList = SignUtil.getLineInfoIcons(renderEntity!!)
|
||||
val rEntity = realm2.where(RenderEntity::class.java).equalTo("id",it.elementId).findFirst()
|
||||
if(rEntity!=null){
|
||||
show(rEntity!!)
|
||||
}
|
||||
if (it.classCode == DataCodeEnum.OMDB_LANEINFO.code) {
|
||||
val r = realm2.where(RenderEntity::class.java)
|
||||
.equalTo("table", DataCodeEnum.OMDB_LANEINFO.name)
|
||||
.equalTo("linkPid", it.linkId).findFirst()
|
||||
if (r != null) {
|
||||
renderEntity = realm2.copyFromRealm(r)
|
||||
laneInfoList = SignUtil.getLineInfoIcons(renderEntity!!)
|
||||
}
|
||||
}
|
||||
realm2.close()
|
||||
}
|
||||
@@ -561,8 +575,27 @@ class EvaluationResultViewModel @Inject constructor(
|
||||
liveDataToastMessage.postValue("数据读取失败")
|
||||
realm.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun show(renderEntity: RenderEntity) {
|
||||
if (renderEntity != null) {
|
||||
if (renderEntity.wkt != null) {
|
||||
mapController.markerHandle.removeMarker(ELEMENT_MARKER)
|
||||
mapController.lineHandler.removeElementLine()
|
||||
when (renderEntity.wkt!!.geometryType) {
|
||||
Geometry.TYPENAME_POINT -> {
|
||||
val geoPoint = GeometryTools.createGeoPoint(renderEntity.wkt!!.toText())
|
||||
mapController.markerHandle.addMarker(geoPoint, ELEMENT_MARKER)
|
||||
}
|
||||
Geometry.TYPENAME_LINESTRING -> {
|
||||
mapController.lineHandler.showElementLine(renderEntity.wkt!!.toText())
|
||||
}
|
||||
Geometry.TYPENAME_POLYGON -> {
|
||||
mapController.lineHandler.showElementLine(renderEntity.wkt!!.toText())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -444,7 +444,7 @@ class TaskViewModel @Inject constructor(
|
||||
|
||||
override fun onCleared() {
|
||||
mapController.mMapView.removeOnNIMapClickListener(TAG)
|
||||
mapController.lineHandler.removeLine()
|
||||
mapController.lineHandler.removeAllLine()
|
||||
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
|
||||
super.onCleared()
|
||||
}
|
||||
|
||||
@@ -1858,7 +1858,7 @@ class SignUtil {
|
||||
"3" -> "三角形"
|
||||
"4" -> "圆形"
|
||||
"5" -> "菱形"
|
||||
"6" -> "到三角形"
|
||||
"6" -> "倒三角形"
|
||||
"7" -> "正方形"
|
||||
"8" -> "八角形"
|
||||
else -> ""
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
<item
|
||||
android:id="@+id/personal_center_menu_version"
|
||||
android:icon="@drawable/ic_baseline_layers_24"
|
||||
android:title="版本:23QE4_V1.5.8_20231103_A" />
|
||||
android:title="版本:24QE1_V1.1.1_20231115_A" />
|
||||
</group>
|
||||
<group android:checkableBehavior="single">
|
||||
<item android:title="小标题">
|
||||
|
||||
Reference in New Issue
Block a user