diff --git a/app/build.gradle b/app/build.gradle
index 027eb8ae..ab7fa750 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -115,6 +115,18 @@ dependencies {
//kotlin反射
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.7.0"
implementation "org.jetbrains.kotlin:kotlin-reflect:1.7.0"
+
+ implementation 'com.permissionx.guolindev:permissionx:1.4.0'
+ def camerax_version = "1.1.0-alpha04"
+ // The following line is optional, as the core library is included indirectly by camera-camera2
+ implementation "androidx.camera:camera-core:${camerax_version}"
+ implementation "androidx.camera:camera-camera2:${camerax_version}"
+ // If you want to additionally use the CameraX Lifecycle library
+ implementation "androidx.camera:camera-lifecycle:${camerax_version}"
+ // If you want to additionally use the CameraX View class
+ implementation "androidx.camera:camera-view:1.0.0-alpha24"
+
+ implementation 'com.google.mlkit:barcode-scanning:16.1.1'
}
//允许引用生成的代码
kapt {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 449d6cf9..d84e4a52 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,6 +4,11 @@
android:versionCode="3"
android:versionName="1.4"
package="com.navinfo.omqs">
+
+
+
@@ -31,7 +36,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt
index 328830fe..a885a6ea 100644
--- a/app/src/main/java/com/navinfo/omqs/Constant.kt
+++ b/app/src/main/java/com/navinfo/omqs/Constant.kt
@@ -52,6 +52,11 @@ class Constant {
* */
var LAYER_CONFIG_LIST: List? = null
+ /**
+ * 室内整理工具IP
+ */
+ lateinit var INDOOR_IP: String
+
const val DEBUG = true
var IS_VIDEO_SPEED by kotlin.properties.Delegates.notNull()
diff --git a/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt b/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt
index 7f257d6e..b1418d1d 100644
--- a/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt
+++ b/app/src/main/java/com/navinfo/omqs/bean/EvaluationInfo.kt
@@ -38,8 +38,8 @@ data class EvaluationInfo(
@SerializedName("problemLink")
val problemLink: String = "",//问题环节
- @SerializedName("problemReason")
- val problemReason: String = "",//问题原因
+ @SerializedName("preliminaryAnalysis")
+ val preliminaryAnalysis: String = "",//初步分析
@SerializedName("evaluatorName")
val evaluatorName: String = "",//测评人名称
diff --git a/app/src/main/java/com/navinfo/omqs/bean/IndoorConnectionInfoBean.kt b/app/src/main/java/com/navinfo/omqs/bean/IndoorConnectionInfoBean.kt
new file mode 100644
index 00000000..3cc05594
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/bean/IndoorConnectionInfoBean.kt
@@ -0,0 +1,11 @@
+package com.navinfo.omqs.bean
+
+data class IndoorConnectionInfoBean(
+ var username: String = "",
+ var uname: String = "",
+ var userid: String = "",
+ var token: String = "",
+ var baseurl: String = "",
+ var plate: String = "",
+ var platform: String = "Android",
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/bean/QRCodeBean.kt b/app/src/main/java/com/navinfo/omqs/bean/QRCodeBean.kt
new file mode 100644
index 00000000..4790dd17
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/bean/QRCodeBean.kt
@@ -0,0 +1,6 @@
+package com.navinfo.omqs.bean
+
+data class QRCodeBean(
+ var errcode: Int = -1,
+ var msg: String = ""
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/bean/RoadNameBean.kt b/app/src/main/java/com/navinfo/omqs/bean/RoadNameBean.kt
new file mode 100644
index 00000000..db19a444
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/bean/RoadNameBean.kt
@@ -0,0 +1,49 @@
+package com.navinfo.omqs.bean
+
+data class RoadNameBean(
+ /**
+ * 道路名称
+ */
+ val name: String = "",
+ /**
+ * 0 普通
+ * 1 立交桥名(连接路)
+ * 2 立交桥名 (主路)
+ * 3 风景线路
+ * 5 隧道
+ * 6 虚拟名称
+ */
+ val type: Int = 0,
+ /**
+ * 1 不论“名称分类”是官方名,别名还是曾用名都统一从1开始递增
+ * 2 若取第一官方名时,需判断“名称”分类 [nameClass]=="官方名",且[seqNum] 最小的
+ */
+ val seqNum: Int = 1,
+ /**
+ * 1 官方名
+ * 2 别名
+ * 3 曾用名
+ */
+ val nameClass: Int = 1,
+) {
+ fun getNameClassStr(): String {
+ when (nameClass) {
+ 1 -> return "官方名"
+ 2 -> return "别名"
+ 3 -> return "曾用名"
+ }
+ return ""
+ }
+
+ fun getTypeStr(): String {
+ when (type) {
+ 0 -> return "普通"
+ 1 -> return "立交桥名(连接路)"
+ 2 -> return "立交桥名(主路)"
+ 3 -> return "风景线路"
+ 5 -> return "隧道"
+ 6 -> return "虚拟名称"
+ }
+ return ""
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt b/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt
index b5faa214..745cc0fb 100644
--- a/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt
+++ b/app/src/main/java/com/navinfo/omqs/bean/SignBean.kt
@@ -1,6 +1,7 @@
package com.navinfo.omqs.bean
import android.os.Parcelable
+import com.navinfo.collect.library.data.entity.RenderEntity
import kotlinx.parcelize.Parcelize
@Parcelize
@@ -11,20 +12,16 @@ data class SignBean(
val distance: Int = 0,
//左上图标中的文字
val iconText: String = "",
- //绑定的要素id
- val elementId: String = "",
//绑定的linkid
val linkId: String,
- //坐标
- val geometry: String,
//名称
val name: String,
+ //是否要展示详细信息
+ val isMoreInfo: Boolean = false,
//底部右侧文字
val bottomRightText: String = "",
- //要素code类型
- val elementCode: Int,
- //需要展示更多的内容
- val moreText: String = "",
- //左上角信息
- val topRightText: String = ""
+ //捕捉数据
+ val renderEntity: RenderEntity,
+ //道路信息排序用的字段
+ val index: Int = 0
) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
index 556bb376..a5f70604 100644
--- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
+++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
@@ -27,9 +27,9 @@ class ImportPreProcess {
Log.d("checkCircleRoad", "LinkInEntity: ${linkInId}- ${linkInEntity?.properties?.get("snodePid")},LinkOutEntity: ${linkOutId}- ${linkOutEntity?.properties?.get("enodePid")}")
// 查询linkIn的sNode和linkOut的eNode是否相同,如果相同,认为数据是环形路口,返回false
if (linkInEntity!=null&&linkOutEntity!=null) {
- if (linkInEntity.properties["snodePid"] == linkOutEntity.properties["enodePid"] || linkInEntity.properties["enodePid"] == linkOutEntity.properties["snodePid"]
- || linkInEntity.properties["snodePid"] == linkOutEntity.properties["snodePid"]|| linkInEntity.properties["enodePid"] == linkOutEntity.properties["enodePid"])
- return false
+ if (linkInEntity.properties["snodePid"] == linkOutEntity.properties["enodePid"] || linkInEntity.properties["enodePid"] == linkOutEntity.properties["snodePid"] || linkInEntity.properties["snodePid"] == linkOutEntity.properties["snodePid"]|| linkInEntity.properties["enodePid"] == linkOutEntity.properties["enodePid"]) {
+ return false
+ }
}
return true
}
@@ -290,6 +290,8 @@ class ImportPreProcess {
referenceEntity.properties["qi_table"] = renderEntity.table
referenceEntity.properties["currentDirect"] = laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_")
referenceEntity.properties["currentType"] = laneInfoTypeArray[i].toString().split(",").distinct().joinToString("_")
+ referenceEntity.properties["symbol"] = "assets:omdb/4601/bus/1301_"+referenceEntity.properties["currentDirect"]+".svg"
+ Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString())
Realm.getDefaultInstance().insert(referenceEntity)
}
}
diff --git a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt
index 30aef395..8edb79c4 100644
--- a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt
+++ b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt
@@ -44,7 +44,7 @@ class RealmOperateHelper() {
)
// 根据polygon查询相交的tile号
val tileXSet = mutableSetOf()
- tileXSet.toString()
+
GeometryToolsKt.getTileXByGeometry(polygon.toString(), tileXSet)
val tileYSet = mutableSetOf()
GeometryToolsKt.getTileYByGeometry(polygon.toString(), tileYSet)
diff --git a/app/src/main/java/com/navinfo/omqs/db/dao/ScProblemTypeDao.kt b/app/src/main/java/com/navinfo/omqs/db/dao/ScProblemTypeDao.kt
index b1e163d2..3940ed99 100644
--- a/app/src/main/java/com/navinfo/omqs/db/dao/ScProblemTypeDao.kt
+++ b/app/src/main/java/com/navinfo/omqs/db/dao/ScProblemTypeDao.kt
@@ -30,8 +30,8 @@ interface ScProblemTypeDao {
/**
* 获取问题分类,并去重
*/
- @Query("select DISTINCT CLASS_TYPE from ScProblemType order by CLASS_TYPE")
- suspend fun findClassTypeList(): List?
+ @Query("select * from ScProblemType group by CLASS_TYPE")
+ suspend fun findClassTypeList(): List?
@Query("select DISTINCT CLASS_TYPE from ScProblemType where ELEMENT_CODE=:code")
suspend fun findClassTypeByCode(code: Int): String?
diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt
index 5fe4dd2d..beca12b6 100644
--- a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt
+++ b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt
@@ -2,7 +2,9 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.collect.library.data.entity.TaskBean
+import com.navinfo.omqs.bean.IndoorConnectionInfoBean
import com.navinfo.omqs.bean.LoginUserBean
+import com.navinfo.omqs.bean.QRCodeBean
import com.navinfo.omqs.bean.SysUserBean
import okhttp3.ResponseBody
import retrofit2.Response
@@ -15,14 +17,25 @@ interface NetworkService {
/**
* 获取离线地图城市列表
*/
- suspend fun getOfflineMapCityList():NetResult>
+ suspend fun getOfflineMapCityList(): NetResult>
+
/**
* 获取任务列表
*/
- suspend fun getTaskList(evaluatorNo:String): NetResult>>
+ suspend fun getTaskList(evaluatorNo: String): NetResult>>
/**
* 登录接口
*/
suspend fun loginUser(loginUserBean: LoginUserBean): NetResult>
+
+ /**
+ * 连接室内整理工具
+ */
+ suspend fun connectIndoorTools(url: String): NetResult
+
+ /**
+ * 更新用户信息
+ */
+ suspend fun updateServerInfo(url: String,indoorConnectionInfoBean: IndoorConnectionInfoBean): NetResult
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt
index 374bd7e6..5bcd2782 100644
--- a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt
+++ b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt
@@ -2,7 +2,9 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.collect.library.data.entity.TaskBean
+import com.navinfo.omqs.bean.IndoorConnectionInfoBean
import com.navinfo.omqs.bean.LoginUserBean
+import com.navinfo.omqs.bean.QRCodeBean
import com.navinfo.omqs.bean.SysUserBean
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -75,4 +77,42 @@ class NetworkServiceImpl @Inject constructor(
NetResult.Error(e)
}
}
+
+ override suspend fun connectIndoorTools(url: String): NetResult =
+ //在IO线程中运行
+ withContext(Dispatchers.IO) {
+ return@withContext try {
+ val result = netApi.retrofitConnectIndoorTools(url = url)
+ if (result.isSuccessful) {
+ if (result.code() == 200) {
+ NetResult.Success(result.body())
+ } else {
+ NetResult.Failure(result.code(), result.message())
+ }
+ } else {
+ NetResult.Failure(result.code(), result.message())
+ }
+ } catch (e: Exception) {
+ NetResult.Error(e)
+ }
+ }
+
+ override suspend fun updateServerInfo(url: String,indoorConnectionInfoBean: IndoorConnectionInfoBean): NetResult =
+ //在IO线程中运行
+ withContext(Dispatchers.IO) {
+ return@withContext try {
+ val result = netApi.retrofitUpdateServerInfo(url,indoorConnectionInfoBean)
+ if (result.isSuccessful) {
+ if (result.code() == 200) {
+ NetResult.Success(result.body())
+ } else {
+ NetResult.Failure(result.code(), result.message())
+ }
+ } else {
+ NetResult.Failure(result.code(), result.message())
+ }
+ } catch (e: Exception) {
+ NetResult.Error(e)
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt
index 67136348..2f56bbab 100644
--- a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt
+++ b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt
@@ -3,7 +3,9 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.collect.library.data.entity.TaskBean
+import com.navinfo.omqs.bean.IndoorConnectionInfoBean
import com.navinfo.omqs.bean.LoginUserBean
+import com.navinfo.omqs.bean.QRCodeBean
import com.navinfo.omqs.bean.SysUserBean
import okhttp3.ResponseBody
import retrofit2.Response
@@ -64,6 +66,22 @@ interface RetrofitNetworkServiceAPI {
@Query("evaluatorNo") evaluatorNo: String,
): Response>>
+
+
+ /**
+ * 连接室内整理工具
+ */
+ @Streaming
+ @GET
+ suspend fun retrofitConnectIndoorTools(@Url url: String): Response
+
+ /**
+ * 登录接口
+ */
+ @Headers("Content-Type: application/json")
+ @POST
+ suspend fun retrofitUpdateServerInfo(@Url url: String,@Body indoorConnectionInfoBean: IndoorConnectionInfoBean): Response
+
@Headers("Content-Type: application/json")
@POST("/devcp/uploadSceneProblem")
suspend fun postRequest(@Body listEvaluationInfo: List?): Response>
diff --git a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt
index e7534861..78101d7a 100644
--- a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt
+++ b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt
@@ -146,12 +146,12 @@ class TaskUploadScope(
markId = hadLinkDvoBean.mesh,//"20065597"
trackPhotoNumber = "",
markGeometry = it.geometry,
- featureName = it.classType,
+ featureName = it.classCode,
problemType = problemType,
problemPhenomenon = it.phenomenon,
problemDesc = it.description,
problemLink = it.problemLink,
- problemReason = it.cause,
+ preliminaryAnalysis = it.cause,
evaluatorName = it.checkUserId,
evaluationDate = it.checkTime,
evaluationWay = evaluationWay,
@@ -166,10 +166,17 @@ class TaskUploadScope(
bodyList.add(evaluationInfo)
}
}else{
+ val linkStatus = 1
+ //存在原因标记未测评
+ if(hadLinkDvoBean.reason.isNotEmpty()){
+ val linkStatus = 0
+ }else{
+ val linkStatus = 1
+ }
val evaluationInfo = EvaluationInfo(
evaluationTaskId = taskBean.id.toString(),
linkPid = hadLinkDvoBean.linkPid,//"84207223282277331"
- linkStatus = 0,
+ linkStatus = linkStatus,
markId = hadLinkDvoBean.mesh,//"20065597"
trackPhotoNumber = "",
markGeometry = "",
@@ -178,13 +185,13 @@ class TaskUploadScope(
problemPhenomenon = "",
problemDesc = "",
problemLink = "",
- problemReason = "",
+ preliminaryAnalysis = "",
evaluatorName = "",
evaluationDate = "",
evaluationWay = 2,
roadClassfcation = "",
roadFunctionGrade = "",
- noEvaluationreason = "",
+ noEvaluationreason = hadLinkDvoBean.reason,
linkLength = 0.0,
dataLevel = "",
linstringLength = 0.0,
diff --git a/app/src/main/java/com/navinfo/omqs/server/TimeTask.kt b/app/src/main/java/com/navinfo/omqs/server/TimeTask.kt
new file mode 100644
index 00000000..1ccdbb02
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/server/TimeTask.kt
@@ -0,0 +1,131 @@
+package com.navinfo.omqs.server
+
+import android.annotation.SuppressLint
+import android.app.AlarmManager
+import android.app.PendingIntent
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.os.Build
+import android.os.SystemClock
+
+/**
+ * date:2023/6/18
+ * author:qj
+ * description:定时器
+ */
+class TimeTask(context: Context, actionName: String, task: T) {
+
+ private var mContext: Context?
+ private val mActionName: String
+ private var mReceiver: TimeTaskReceiver? = null
+ private val mTask: T?
+
+ companion object {
+ private var mPendingIntent: PendingIntent? = null
+ }
+
+ init {
+ mContext = context
+ mActionName = actionName
+ mTask = task
+ initReceiver(context, actionName)
+ }
+
+ fun startLooperTask() {
+ if (null != mTask) {
+ mTask.exeTask()
+ configureAlarmManager(mTask.period())
+ }
+ }
+
+ fun stopLooperTask() {
+ cancelAlarmManager()
+ }
+
+ fun onClose() {
+ mContext!!.unregisterReceiver(mReceiver)
+ mContext = null
+ }
+
+ @SuppressLint("ObsoleteSdkInt")
+ private fun configureAlarmManager(time: Long) {
+ val manager = mContext!!.getSystemService(Context.ALARM_SERVICE) as AlarmManager
+ val pendIntent = pendingIntent
+ when {
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> {
+ manager.setExactAndAllowWhileIdle(
+ AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ SystemClock.elapsedRealtime() + time,
+ pendIntent
+ )
+ }
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT -> {
+ manager.setExact(
+ AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ SystemClock.elapsedRealtime() + time,
+ pendIntent
+ )
+ }
+ else -> {
+ manager[AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ SystemClock.elapsedRealtime() + time] = pendIntent
+ }
+ }
+ }
+
+ @get:SuppressLint("UnspecifiedImmutableFlag")
+ private val pendingIntent: PendingIntent?
+ get() {
+ if (mPendingIntent == null) {
+ val requestCode = 0
+ val intent = Intent()
+ intent.action = mActionName
+ when {
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
+ mPendingIntent = PendingIntent.getBroadcast(
+ mContext, requestCode, intent,
+ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
+ )
+ }
+ else -> {
+ mPendingIntent = PendingIntent.getBroadcast(
+ mContext,
+ requestCode,
+ intent,
+ PendingIntent.FLAG_UPDATE_CURRENT
+ )
+ }
+ }
+ }
+ return mPendingIntent
+ }
+
+ private fun cancelAlarmManager() {
+ val manager = mContext!!.getSystemService(Context.ALARM_SERVICE) as AlarmManager
+ manager.cancel(pendingIntent)
+ }
+
+ private fun initReceiver(context: Context, actionName: String) {
+ mReceiver = TimeTaskReceiver()
+ val intentFilter = IntentFilter()
+ intentFilter.addAction(actionName)
+ context.registerReceiver(mReceiver, intentFilter)
+ }
+
+ internal inner class TimeTaskReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: Intent) {
+ startLooperTask()
+ }
+ }
+
+ interface Task {
+ fun period(): Long {
+ // 默认时间5S
+ return 5000L
+ }
+
+ fun exeTask()
+ }
+}
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/CheckPermissionsActivity.java b/app/src/main/java/com/navinfo/omqs/ui/activity/CheckPermissionsActivity.java
index 6690ea72..00150288 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/CheckPermissionsActivity.java
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/CheckPermissionsActivity.java
@@ -37,7 +37,8 @@ public class CheckPermissionsActivity extends BaseActivity {
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.RECORD_AUDIO
+ Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
};
private static final int PERMISSON_REQUESTCODE = 0;
@@ -53,6 +54,7 @@ public class CheckPermissionsActivity extends BaseActivity {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
BACKGROUND_LOCATION_PERMISSION
};
}
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt
index d1a82fbd..e9d14e89 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt
@@ -31,6 +31,7 @@ import com.navinfo.omqs.ui.activity.BaseActivity
import com.navinfo.omqs.ui.fragment.console.ConsoleFragment
import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapFragment
import com.navinfo.omqs.ui.fragment.qsrecordlist.QsRecordListFragment
+import com.navinfo.omqs.ui.fragment.signMoreInfo.SignMoreInfoFragment
import com.navinfo.omqs.ui.fragment.tasklist.TaskManagerFragment
import com.navinfo.omqs.ui.widget.RecyclerViewSpacesItemDecoration
import com.navinfo.omqs.util.FlowEventBus
@@ -56,10 +57,11 @@ class MainActivity : BaseActivity() {
*/
private var leftFragment: Fragment? = null
+
/**
* 是否开启右侧面板
*/
- var switchFragment = false
+ private var switchFragment = false
/**
* 检测是否含有tts插件
@@ -88,6 +90,7 @@ class MainActivity : BaseActivity() {
*/
private val signAdapter by lazy {
SignAdapter(object : OnSignAdapterClickListener {
+ //点击看板进去问题反馈面板
override fun onItemClick(signBean: SignBean) {
rightController.currentDestination?.let {
if (it.id == R.id.RightEmptyFragment) {
@@ -99,14 +102,15 @@ class MainActivity : BaseActivity() {
}
}
+ //点击详细信息
override fun onMoreInfoClick(selectTag: String, tag: String, signBean: SignBean) {
- if (binding.mainActivitySignMoreInfoGroup.visibility != View.VISIBLE || selectTag != tag) {
- binding.mainActivitySignMoreInfoGroup.visibility = View.VISIBLE
- binding.mainActivitySignMoreInfoTitle.text = signBean.name
- binding.mainActivitySignMoreInfoText1.text = signBean.bottomRightText
- binding.mainActivitySignMoreInfoText2.text = signBean.moreText
- } else {
- binding.mainActivitySignMoreInfoGroup.visibility = View.GONE
+ viewModel.showSignMoreInfo(signBean.renderEntity)
+ val fragment =
+ supportFragmentManager.findFragmentById(R.id.main_activity_sign_more_info_fragment)
+ if (fragment == null) {
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment())
+ .commit()
}
}
@@ -120,10 +124,6 @@ class MainActivity : BaseActivity() {
}
}
}
-
- override fun onHideMoreInfoView() {
- binding.mainActivitySignMoreInfoGroup.visibility = View.GONE
- }
})
}
@@ -150,8 +150,6 @@ class MainActivity : BaseActivity() {
checkIntent.action = TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
someActivityResultLauncher.launch(checkIntent)
-
-
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
//初始化地图
@@ -184,12 +182,12 @@ class MainActivity : BaseActivity() {
}
v?.onTouchEvent(event) ?: true
}
-
+ //捕捉列表变化回调
viewModel.liveDataQsRecordIdList.observe(this) {
//处理页面跳转
viewModel.navigationRightFragment(this, it)
}
-
+ //右上角菜单是否被点击
viewModel.liveDataMenuState.observe(this) {
binding.mainActivityMenu.isSelected = it
if (it == true) {
@@ -198,6 +196,17 @@ class MainActivity : BaseActivity() {
binding.mainActivityMenuGroup.visibility = View.INVISIBLE
}
}
+ //道路绑定,名称变化
+ viewModel.liveDataRoadName.observe(this) {
+ if (it != null) {
+ binding.mainActivityRoadName.text = it.properties["name"]
+ if (binding.mainActivityRoadName.visibility != View.VISIBLE) binding.mainActivityRoadName.visibility =
+ View.VISIBLE
+ } else {
+ if (binding.mainActivityRoadName.visibility != View.GONE) binding.mainActivityRoadName.visibility =
+ View.GONE
+ }
+ }
//道路属性面板
binding.mainActivityTopSignRecyclerview.layoutManager = LinearLayoutManager(
@@ -228,15 +237,14 @@ class MainActivity : BaseActivity() {
viewModel.liveDataTopSignList.observe(this) {
topSignAdapter.refreshData(it)
}
+
//监听地图中点变化
viewModel.liveDataCenterPoint.observe(this) {
-// Log.e("qj", "${it.longitude}")
try {
if (it != null && it.longitude != null && it.latitude != null) {
binding.mainActivityGeometry.text = "经纬度:${
BigDecimal(it.longitude).setScale(
- 7,
- RoundingMode.HALF_UP
+ 7, RoundingMode.HALF_UP
)
},${BigDecimal(it.latitude).setScale(7, RoundingMode.HALF_UP)}"
}
@@ -245,6 +253,16 @@ class MainActivity : BaseActivity() {
}
}
+ viewModel.liveDataSignMoreInfo.observe(this){
+ val fragment =
+ supportFragmentManager.findFragmentById(R.id.main_activity_sign_more_info_fragment)
+ if (fragment == null) {
+ supportFragmentManager.beginTransaction()
+ .replace(R.id.main_activity_sign_more_info_fragment, SignMoreInfoFragment())
+ .commit()
+ }
+ }
+
lifecycleScope.launch {
// 初始化地图图层控制接收器
FlowEventBus.subscribe>(
@@ -475,8 +493,7 @@ class MainActivity : BaseActivity() {
}
leftFragment = TaskManagerFragment {
binding.mainActivityLeftFragment.visibility = View.GONE
- supportFragmentManager.beginTransaction()
- .remove(leftFragment!!).commit()
+ supportFragmentManager.beginTransaction().remove(leftFragment!!).commit()
leftFragment = null
null
}
@@ -496,8 +513,7 @@ class MainActivity : BaseActivity() {
}
leftFragment = QsRecordListFragment {
binding.mainActivityLeftFragment.visibility = View.GONE
- supportFragmentManager.beginTransaction()
- .remove(leftFragment!!).commit()
+ supportFragmentManager.beginTransaction().remove(leftFragment!!).commit()
leftFragment = null
null
}
@@ -524,8 +540,7 @@ class MainActivity : BaseActivity() {
}
leftFragment = OfflineMapFragment {
binding.mainActivityLeftFragment.visibility = View.GONE
- supportFragmentManager.beginTransaction()
- .remove(leftFragment!!).commit()
+ supportFragmentManager.beginTransaction().remove(leftFragment!!).commit()
leftFragment = null
null
}
@@ -533,4 +548,13 @@ class MainActivity : BaseActivity() {
.replace(R.id.main_activity_left_fragment, leftFragment!!).commit()
}
}
+
+ /**
+ * 打开道路名称属性看板,选择的道路在viewmodel里记录,不用
+ */
+ fun openRoadNameFragment() {
+ if (viewModel.liveDataRoadName.value != null) {
+ viewModel.showSignMoreInfo(viewModel.liveDataRoadName.value!!)
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt
index 78e29e3f..b456f1b1 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt
@@ -31,6 +31,7 @@ import com.navinfo.collect.library.utils.GeometryToolsKt
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig
+import com.navinfo.omqs.bean.RoadNameBean
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.ui.dialog.CommonDialog
@@ -76,6 +77,14 @@ class MainViewModel @Inject constructor(
//顶部看板数据
val liveDataTopSignList = MutableLiveData>()
+ //道路名
+ val liveDataRoadName = MutableLiveData()
+
+ /**
+ * 当前选中的要展示的详细信息的要素
+ */
+ val liveDataSignMoreInfo = MutableLiveData()
+
// var testPoint = GeoPoint(0, 0)
//uuid标识,用于记录轨迹组
@@ -93,6 +102,7 @@ class MainViewModel @Inject constructor(
var menuState: Boolean = false
+
val liveDataMenuState = MutableLiveData()
val liveDataCenterPoint = MutableLiveData()
@@ -107,8 +117,8 @@ class MainViewModel @Inject constructor(
init {
mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition ->
when (e) {
- Map.SCALE_EVENT, Map.MOVE_EVENT, Map.ROTATE_EVENT ->
- liveDataCenterPoint.value = mapPosition
+ Map.SCALE_EVENT, Map.MOVE_EVENT, Map.ROTATE_EVENT -> liveDataCenterPoint.value =
+ mapPosition
}
})
@@ -213,6 +223,7 @@ class MainViewModel @Inject constructor(
val linkList = realmOperateHelper.queryLink(
point = point,
)
+ var hisRoadName = false
if (linkList.isNotEmpty()) {
//看板数据
val signList = mutableListOf()
@@ -225,11 +236,17 @@ class MainViewModel @Inject constructor(
if (linkIdCache != linkId) {
- Log.e("jingo", "捕捉到的linkid $linkId ${link.geometry}")
mapController.lineHandler.showLine(link.geometry)
linkId?.let {
var elementList = realmOperateHelper.queryLinkByLinkPid(it)
for (element in elementList) {
+
+ if (element.code == 2011) {
+ hisRoadName = true
+ liveDataRoadName.postValue(element)
+ continue
+ }
+
val distance = GeometryTools.distanceToDouble(
point, GeometryTools.createGeoPoint(element.geometry)
)
@@ -238,20 +255,20 @@ class MainViewModel @Inject constructor(
iconId = SignUtil.getSignIcon(element),
iconText = SignUtil.getSignIconText(element),
distance = distance.toInt(),
- elementId = element.id,
linkId = linkId,
- geometry = element.geometry,
name = SignUtil.getSignNameText(element),
bottomRightText = SignUtil.getSignBottomRightText(element),
- elementCode = element.code,
- moreText = SignUtil.getMoreInfoText(element)
+ renderEntity = element,
+ isMoreInfo = SignUtil.isMoreInfo(element),
+ index = SignUtil.getRoadInfoIndex(element)
)
-
+ Log.e("jingo", "捕捉到的数据code ${element.code}")
when (element.code) {
- 2002, 2008, 2010, 2041 -> topSignList.add(
+ //车道数,种别,功能等级,线限速,道路方向
+ 2041, 2008, 2002, 2019, 2010 -> topSignList.add(
signBean
)
- 4002, 4003, 4004, 4022 -> signList.add(
+ 4002, 4003, 4004, 4010, 4022, 4601 -> signList.add(
signBean
)
}
@@ -260,33 +277,27 @@ class MainViewModel @Inject constructor(
val realm = Realm.getDefaultInstance()
val entity = realm.where(RenderEntity::class.java)
- .equalTo("table", "OMDB_RESTRICTION")
- .and()
- .equalTo(
- "properties['linkIn']",
- it
+ .equalTo("table", "OMDB_RESTRICTION").and().equalTo(
+ "properties['linkIn']", it
).findFirst()
if (entity != null) {
val outLink = entity.properties["linkOut"]
val linkOutEntity = realm.where(RenderEntity::class.java)
- .equalTo("table", "OMDB_RD_LINK")
- .and()
- .equalTo(
+ .equalTo("table", "OMDB_RD_LINK").and().equalTo(
"properties['${RenderEntity.Companion.LinkTable.linkPid}']",
outLink
).findFirst()
if (linkOutEntity != null) {
mapController.lineHandler.linksLayer.addLine(
- linkOutEntity.geometry,
- 0x7DFF0000
+ linkOutEntity.geometry, 0x7DFF0000
)
- Log.e("jingo", "捕捉到的linkid $outLink ${linkOutEntity.geometry}")
}
}
}
- liveDataTopSignList.postValue(topSignList.distinctBy { it.elementCode })
- liveDataSignList.postValue(signList.distinctBy { it.elementCode })
+ liveDataTopSignList.postValue(topSignList.distinctBy { it.name }.sortedBy { it.index })
+
+ liveDataSignList.postValue(signList.sortedBy { it.distance })
val speechText = SignUtil.getRoadSpeechText(topSignList)
withContext(Dispatchers.Main) {
speakMode?.speakText(speechText)
@@ -297,6 +308,10 @@ class MainViewModel @Inject constructor(
mapController.lineHandler.removeLine()
linkIdCache = ""
}
+ //如果没有捕捉到道路名
+ if (!hisRoadName) {
+ liveDataRoadName.postValue(null)
+ }
}
}
@@ -488,8 +503,19 @@ class MainViewModel @Inject constructor(
}
}
+ /**
+ * 是否开启了线选择
+ */
fun isSelectRoad(): Boolean {
return bSelectRoad
}
+ /**
+ * 要展示的要素详细信息
+ */
+
+ fun showSignMoreInfo(data: RenderEntity) {
+ liveDataSignMoreInfo.value = data
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt
index 3bb31f38..5ba63474 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt
@@ -1,63 +1,137 @@
package com.navinfo.omqs.ui.activity.map
+import android.graphics.PorterDuff
+import android.graphics.PorterDuffColorFilter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ImageView
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.AdapterSignBinding
+import com.navinfo.omqs.databinding.AdapterSignLaneinfoBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
+import com.navinfo.omqs.ui.widget.SignUtil
interface OnSignAdapterClickListener {
fun onItemClick(signBean: SignBean)
fun onMoreInfoClick(selectTag: String, tag: String, signBean: SignBean)
fun onErrorClick(signBean: SignBean)
- fun onHideMoreInfoView()
}
+data class LaneInfoItem(val id: Int, val type: Int)
+
class SignAdapter(private var listener: OnSignAdapterClickListener?) :
BaseRecyclerViewAdapter() {
/**
* 选中的详细信息按钮的tag标签
*/
private var selectMoreInfoTag: String = ""
- override fun getItemViewRes(position: Int): Int {
- return R.layout.adapter_sign
+
+ override fun getItemViewType(position: Int): Int {
+ if (data.isNotEmpty() && data[position].renderEntity.code == 4601) {
+ return 4601
+ }
+ return 0
}
+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
- val viewBinding =
- AdapterSignBinding.inflate(LayoutInflater.from(parent.context), parent, false)
- return BaseViewHolder(viewBinding)
+ return if (viewType == 4601) {
+ val viewBinding =
+ AdapterSignLaneinfoBinding.inflate(
+ LayoutInflater.from(parent.context),
+ parent,
+ false
+ )
+ BaseViewHolder(viewBinding)
+ } else {
+ val viewBinding =
+ AdapterSignBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ BaseViewHolder(viewBinding)
+ }
}
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
- val bd = holder.viewBinding as AdapterSignBinding
-
+ val context = holder.viewBinding.root.context
val item = data[position]
- if (item.iconId != 0) bd.signMainIconBg.setImageResource(item.iconId)
- bd.signMainIcon.text = item.iconText
- bd.signBottomText.text = item.name
- holder.tag = item.name + position
- //点击错误按钮
- bd.signMainFastError.setOnClickListener {
- listener?.onErrorClick(item)
- }
- bd.signBottomRightText.text = item.bottomRightText
+ if (holder.viewBinding is AdapterSignBinding) {
+ val bd = holder.viewBinding
- bd.root.setOnClickListener {
- listener?.onItemClick(item)
- }
- if (item.moreText.isNotEmpty()) {
- bd.signMainInfo.visibility = View.VISIBLE
- //点击更多信息按钮
- bd.signMainInfo.setOnClickListener {
- listener?.onMoreInfoClick(selectMoreInfoTag, holder.tag, item)
- selectMoreInfoTag = holder.tag
+ if (item.iconId != 0) bd.signMainIconBg.setImageResource(item.iconId)
+ bd.signMainIcon.text = item.iconText
+ bd.signBottomText.text = item.name
+ //点击错误按钮
+ bd.signMainFastError.setOnClickListener {
+ listener?.onErrorClick(item)
}
- } else bd.signMainInfo.visibility = View.GONE
+ bd.signBottomRightText.text = item.bottomRightText
+ if (item.isMoreInfo) {
+ bd.signMainInfo.visibility = View.VISIBLE
+ bd.signMainInfo.setOnClickListener {
+ listener?.onMoreInfoClick(selectMoreInfoTag, holder.tag, item)
+ selectMoreInfoTag = holder.tag
+ }
+ } else {
+ bd.signMainInfo.visibility = View.GONE
+ }
+ bd.signSecondIcon.text = ""
+ if (item.renderEntity.code == 4002) {
+ val minSpeed = SignUtil.getSpeedLimitMinText(item.renderEntity)
+ if (minSpeed != "0") {
+ bd.signSecondIcon.text = minSpeed
+ }
+ }
+ bd.signMainBg.setOnClickListener {
+ listener?.onItemClick(item)
+ }
+ } else if (holder.viewBinding is AdapterSignLaneinfoBinding) {
+ val bd = holder.viewBinding
+ bd.signMoreIconsLayout.removeAllViews()
+ bd.signBottomText.text = item.name
+ bd.signBottomRightText.text = item.distance.toString()
+ val list = SignUtil.getLineInfoIcons(item.renderEntity)
+ val lineViewS = View(context)
+ lineViewS.layoutParams = ViewGroup.LayoutParams(24, 80)
+ lineViewS.background = context.getDrawable(R.drawable.shape_vertical_dashed_line)
+ bd.signMoreIconsLayout.addView(lineViewS, lineViewS.layoutParams)
+ for (i in list.indices) {
+ val laneInfo = list[i]
+ val imageView = ImageView(context)
+ val drawable = context.getDrawable(laneInfo.id)
+ var color = when (laneInfo.type) {
+ 1 -> bd.root.resources.getColor(R.color.lane_info_1)
+ 2 -> bd.root.resources.getColor(R.color.lane_info_2)
+ else -> bd.root.resources.getColor(R.color.white)
+ }
+ // 创建 PorterDuffColorFilter 对象
+ val colorFilter = PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN)
+ // 将 PorterDuffColorFilter 设置给 Drawable
+ drawable!!.colorFilter = colorFilter
+ // 将 Drawable 设置给 ImageView
+ imageView.background = drawable
+ // 将 ImageView 的颜色设置为红色
+ imageView.setColorFilter(color, PorterDuff.Mode.SRC_IN)
+ imageView.layoutParams = ViewGroup.LayoutParams(35, 100)
+ bd.signMoreIconsLayout.addView(imageView, imageView.layoutParams)
+ if (i < list.size - 1) {
+ val lineView = View(context)
+ lineView.layoutParams = ViewGroup.LayoutParams(24, 80)
+ lineView.background = context.getDrawable(R.drawable.shape_vertical_dashed_line)
+ bd.signMoreIconsLayout.addView(lineView, lineView.layoutParams)
+ }
+ }
+ val lineViewE = View(context)
+ lineViewE.layoutParams = ViewGroup.LayoutParams(24, 80)
+ lineViewE.background = context.getDrawable(R.drawable.shape_vertical_dashed_line)
+ bd.signMoreIconsLayout.addView(lineViewE, lineViewE.layoutParams)
+ bd.root.setOnClickListener {
+ listener?.onItemClick(item)
+ }
+ }
+ holder.tag = item.name + position
}
override fun refreshData(newData: List) {
@@ -67,7 +141,6 @@ class SignAdapter(private var listener: OnSignAdapterClickListener?) :
return
}
}
- listener?.onHideMoreInfoView()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/TopSignAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/TopSignAdapter.kt
index 0ed1ba72..1e01ed5d 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/TopSignAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/TopSignAdapter.kt
@@ -11,9 +11,6 @@ import com.navinfo.omqs.ui.other.BaseViewHolder
class TopSignAdapter(private var itemListener: ((Int, SignBean) -> Unit?)? = null) :
BaseRecyclerViewAdapter() {
- override fun getItemViewRes(position: Int): Int {
- return R.layout.adapter_top_sign
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt
new file mode 100644
index 00000000..36921971
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt
@@ -0,0 +1,256 @@
+package com.navinfo.omqs.ui.activity.scan
+
+import android.content.Context
+import android.text.TextUtils
+import android.widget.Toast
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import com.navinfo.omqs.Constant
+import com.navinfo.omqs.bean.IndoorConnectionInfoBean
+import com.navinfo.omqs.bean.QRCodeBean
+import com.navinfo.omqs.bean.SysUserBean
+import com.navinfo.omqs.http.DefaultResponse
+import com.navinfo.omqs.http.NetResult
+import com.navinfo.omqs.http.NetworkService
+import com.navinfo.omqs.ui.activity.login.LoginStatus
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+import java.io.IOException
+import javax.inject.Inject
+
+enum class QrCodeStatus {
+ /**
+ * 网络访问失败
+ */
+ QR_CODE_STATUS_NET_FAILURE,
+
+ /**
+ * 成功
+ */
+ QR_CODE_STATUS_SUCCESS,
+
+ /**
+ * 信息更新成功
+ */
+ QR_CODE_STATUS_SERVER_INFO_SUCCESS,
+}
+
+@HiltViewModel
+class QrCodeViewModel @Inject constructor(
+ private val networkService: NetworkService
+) : ViewModel() {
+ //用户信息
+ val qrCodeBean: MutableLiveData = MutableLiveData()
+
+ //是不是连接成功
+ val qrCodeStatus: MutableLiveData = MutableLiveData()
+
+
+ init {
+ qrCodeBean.value = QRCodeBean()
+ }
+
+
+ /**
+ * 扫一扫按钮
+ */
+ fun connect(context: Context, ips: String) {
+
+ if (TextUtils.isEmpty(ips)) {
+ Toast.makeText(context, "获取ip失败!", Toast.LENGTH_LONG).show()
+ return
+ }
+
+ val ipArray = ips.split(";".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
+ //测试代码
+ //final String[] ipArray = new String[]{"172.21.2.137"};
+ if (ipArray.isEmpty()) {
+ Toast.makeText(context, "获取ip失败!", Toast.LENGTH_SHORT).show()
+ return
+ }
+
+ ipArray.forEach { ip ->
+ if (!TextUtils.isEmpty(ip)) {
+ viewModelScope.launch(Dispatchers.Default) {
+ val ipTemp: String = ip
+ val url = "http://$ipTemp:8080/sensor/service/keepalive"
+ when (val result = networkService.connectIndoorTools(url)) {
+ is NetResult.Success<*> -> {
+
+ if (result.data != null) {
+ try {
+
+ val defaultUserResponse = result.data as QRCodeBean
+
+ if (defaultUserResponse.errcode == 0) {
+
+ Constant.INDOOR_IP = ipTemp
+
+ qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_SUCCESS)
+
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "连接室内整理工具成功。",
+ Toast.LENGTH_LONG
+ ).show()
+ }
+ } else {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${defaultUserResponse.msg}",
+ Toast.LENGTH_SHORT
+ )
+ .show()
+ }
+ }
+
+ } catch (e: IOException) {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${e.message}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ }
+ }
+
+ is NetResult.Error<*> -> {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${result.exception.message}",
+ Toast.LENGTH_SHORT
+ )
+ .show()
+ }
+ qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE)
+ }
+
+ is NetResult.Failure<*> -> {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${result.code}:${result.msg}",
+ Toast.LENGTH_SHORT
+ )
+ .show()
+ }
+ qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE)
+ }
+
+ else -> {}
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 扫一扫按钮
+ */
+ fun updateServerInfo(context: Context) {
+
+ if (TextUtils.isEmpty(Constant.INDOOR_IP)) {
+ Toast.makeText(context, "获取ip失败!", Toast.LENGTH_LONG).show()
+ return
+ }
+
+ viewModelScope.launch(Dispatchers.Default) {
+ val url = "http://${Constant.INDOOR_IP}:8080/sensor/service/connection"
+ when (val result = networkService.updateServerInfo(
+ url = url,
+ indoorConnectionInfoBean = IndoorConnectionInfoBean(
+ Constant.USER_ID,
+ Constant.USER_ID,
+ Constant.USER_ID,
+ Constant.USER_ID,
+ com.navinfo.collect.library.system.Constant.SERVER_ADDRESS,
+ Constant.USER_ID,
+ "Android"
+ )
+ )) {
+ is NetResult.Success<*> -> {
+
+ if (result.data != null) {
+ try {
+
+ val defaultUserResponse = result.data as QRCodeBean
+
+ if (defaultUserResponse.errcode == 0) {
+
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "信息更新成功。",
+ Toast.LENGTH_LONG
+ ).show()
+ qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_SERVER_INFO_SUCCESS)
+ }
+ } else {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${defaultUserResponse.msg}",
+ Toast.LENGTH_SHORT
+ )
+ .show()
+ }
+ }
+
+ } catch (e: IOException) {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${e.message}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ }
+ }
+
+ is NetResult.Error<*> -> {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${result.exception.message}",
+ Toast.LENGTH_SHORT
+ )
+ .show()
+ }
+ qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE)
+ }
+
+ is NetResult.Failure<*> -> {
+ withContext(Dispatchers.Main) {
+ Toast.makeText(
+ context,
+ "${result.code}:${result.msg}",
+ Toast.LENGTH_SHORT
+ )
+ .show()
+ }
+ qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE)
+ }
+
+ else -> {}
+ }
+
+ }
+
+ }
+
+
+ override fun onCleared() {
+ super.onCleared()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt
new file mode 100644
index 00000000..12706f25
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt
@@ -0,0 +1,147 @@
+package com.navinfo.omqs.ui.activity.scan
+
+import android.annotation.SuppressLint
+import android.graphics.Rect
+import android.graphics.RectF
+import android.os.Bundle
+import android.util.Log
+import androidx.activity.viewModels
+import androidx.camera.core.ImageCapture
+import androidx.camera.view.LifecycleCameraController
+import androidx.databinding.DataBindingUtil
+import com.navinfo.omqs.R
+import com.navinfo.omqs.databinding.ActivityQrCodeBinding
+import com.navinfo.omqs.ui.activity.BaseActivity
+import com.navinfo.omqs.ui.listener.QRCodeAnalyser
+import dagger.hilt.android.AndroidEntryPoint
+import java.util.concurrent.ExecutorService
+import java.util.concurrent.Executors
+import androidx.lifecycle.Observer
+import com.navinfo.omqs.ui.activity.login.LoginStatus
+
+/**
+ * date:2023/6/18
+ * author:qj
+ * description:二维码扫描
+ */
+@AndroidEntryPoint
+class QrCodeActivity : BaseActivity() {
+ private lateinit var binding: ActivityQrCodeBinding
+ private lateinit var lifecycleCameraController: LifecycleCameraController
+ private lateinit var cameraExecutor: ExecutorService
+ private val viewModel by viewModels()
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ binding = DataBindingUtil.setContentView(this, R.layout.activity_qr_code)
+
+ binding.qrCodeModel = viewModel
+ binding.lifecycleOwner = this
+ binding.activity = this
+
+ initView()
+ initController()
+ }
+
+ private fun initView() {
+ //登录校验,初始化成功
+ viewModel.qrCodeStatus.observe(this, qrCodeObserve)
+ }
+
+ /*
+ * 监听扫描结果
+ * */
+ private val qrCodeObserve = Observer {
+ when (it) {
+ QrCodeStatus.QR_CODE_STATUS_SUCCESS -> {
+ finish()
+ }
+ QrCodeStatus.QR_CODE_STATUS_NET_FAILURE -> {
+
+ }
+ QrCodeStatus.QR_CODE_STATUS_SERVER_INFO_SUCCESS -> {
+
+ }
+ }
+ }
+
+ @SuppressLint("ClickableViewAccessibility", "UnsafeOptInUsageError")
+ private fun initController() {
+ cameraExecutor = Executors.newSingleThreadExecutor()
+ lifecycleCameraController = LifecycleCameraController(this)
+ lifecycleCameraController.bindToLifecycle(this)
+ lifecycleCameraController.imageCaptureFlashMode = ImageCapture.FLASH_MODE_AUTO
+ lifecycleCameraController.setImageAnalysisAnalyzer(
+ cameraExecutor,
+ QRCodeAnalyser { barcodes, imageWidth, imageHeight ->
+ if (barcodes.isEmpty()) {
+ return@QRCodeAnalyser
+ }
+ initScale(imageWidth, imageHeight)
+ val list = ArrayList()
+ val strList = ArrayList()
+
+ barcodes.forEach { barcode ->
+ barcode.boundingBox?.let { rect ->
+ val translateRect = translateRect(rect)
+ list.add(translateRect)
+ Log.e(
+ "ztzt", "left:${translateRect.left} +" +
+ " top:${translateRect.top} + right:${translateRect.right}" +
+ " + bottom:${translateRect.bottom}"
+ )
+ Log.e("ztzt", "barcode.rawValue:${barcode.rawValue}")
+ strList.add(barcode.rawValue ?: "No Value")
+ }
+ }
+ judgeIntent(strList)
+ binding.scanView.setRectList(list)
+
+ })
+ binding.previewView.controller = lifecycleCameraController
+ }
+
+ fun judgeIntent(list: ArrayList) {
+ val sb = StringBuilder()
+ list.forEach {
+ sb.append(it)
+ sb.append("\n")
+ }
+ intentToResult(sb.toString())
+ }
+
+ private fun intentToResult(result: String) {
+
+ Log.e("qj", "QRCodeActivity === $result")
+
+ viewModel.connect(this, result)
+
+ /* val intent = Intent(this, QRCodeResultActivity::class.java)
+ intent.putExtra(QRCodeResultActivity.RESULT_KEY, result)
+ startActivity(intent)
+ finish()*/
+ }
+
+
+ private var scaleX = 0f
+ private var scaleY = 0f
+
+ private fun translateX(x: Float): Float = x * scaleX
+ private fun translateY(y: Float): Float = y * scaleY
+
+ //将扫描的矩形换算为当前屏幕大小
+ private fun translateRect(rect: Rect) = RectF(
+ translateX(rect.left.toFloat()),
+ translateY(rect.top.toFloat()),
+ translateX(rect.right.toFloat()),
+ translateY(rect.bottom.toFloat())
+ )
+
+ //初始化缩放比例
+ private fun initScale(imageWidth: Int, imageHeight: Int) {
+ Log.e("ztzt", "imageWidth:${imageWidth} + imageHeight:${imageHeight}")
+ scaleY = binding.scanView.height.toFloat() / imageWidth.toFloat()
+ scaleX = binding.scanView.width.toFloat() / imageHeight.toFloat()
+ Log.e("ztzt", "scaleX:${scaleX} + scaleY:${scaleY}")
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeResultActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeResultActivity.kt
new file mode 100644
index 00000000..de4c3c93
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeResultActivity.kt
@@ -0,0 +1,30 @@
+package com.navinfo.omqs.ui.activity.scan
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import com.navinfo.omqs.databinding.ActivityResultBinding
+
+/**
+ * date:2021/6/18
+ * author:zhangteng
+ * description:
+ */
+class QRCodeResultActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityResultBinding
+
+ companion object {
+ const val RESULT_KEY = "result_key";
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityResultBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ val intent = intent
+ binding.text.text = intent.getStringExtra(RESULT_KEY)
+ binding.button.setOnClickListener {
+ finish()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/BaseFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/BaseFragment.kt
index a0882082..93395a0b 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/BaseFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/BaseFragment.kt
@@ -1,13 +1,8 @@
package com.navinfo.omqs.ui.fragment
import android.os.Bundle
-import android.view.KeyEvent
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
-import androidx.navigation.fragment.findNavController
abstract class BaseFragment : Fragment() {
// override fun onCreateView(
@@ -49,8 +44,8 @@ abstract class BaseFragment : Fragment() {
// savedInstanceState: Bundle?
// ): View
- fun onBackPressed(): Boolean{
- findNavController().navigateUp()
+ open fun onBackPressed(): Boolean{
+// findNavController().navigateUp()
return true
}
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt
index 87cf037d..54af711c 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt
@@ -1,6 +1,5 @@
package com.navinfo.omqs.ui.fragment.evaluationresult
-import android.app.Dialog
import android.os.Build
import android.os.Bundle
import android.util.Log
@@ -8,19 +7,22 @@ import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
-import androidx.annotation.RequiresApi
import androidx.databinding.DataBindingUtil
import androidx.navigation.NavOptions
+import androidx.navigation.findNavController
+import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.FragmentEvaluationResultBinding
+import com.navinfo.omqs.ui.dialog.FirstDialog
import com.navinfo.omqs.ui.fragment.BaseFragment
import com.navinfo.omqs.ui.other.shareViewModels
import dagger.hilt.android.AndroidEntryPoint
-import androidx.navigation.findNavController
-import com.navinfo.omqs.ui.dialog.FirstDialog
+import org.videolan.vlc.Util
+
@AndroidEntryPoint
class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
@@ -31,6 +33,10 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
*/
private val viewModel by shareViewModels("QsRecode")
+ private val pictureAdapter by lazy {
+ PictureAdapter()
+ }
+
// private val args:EmptyFragmentArgs by navArgs()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@@ -56,6 +62,8 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
adapter.refreshData(it)
}
+ binding.evaluationPictureViewpager
+
return binding.root
}
@@ -70,12 +78,12 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
val mDialog = FirstDialog(context)
mDialog.setTitle("提示?")
mDialog.setMessage("是否退出,请确认!")
- mDialog.setPositiveButton("确定", object : FirstDialog.OnClickListener {
- override fun onClick(dialog: Dialog?, which: Int) {
- mDialog.dismiss()
- onBackPressed()
- }
- })
+ mDialog.setPositiveButton(
+ "确定"
+ ) { _, _ ->
+ mDialog.dismiss()
+ onBackPressed()
+ }
mDialog.setNegativeButton("取消", null)
mDialog.show()
}
@@ -91,6 +99,21 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
viewModel.deleteData(requireContext())
}
+ /**
+ * 照片view
+ */
+ binding.evaluationPictureViewpager.adapter = pictureAdapter
+ val list = mutableListOf("1", "2", "3")
+ pictureAdapter.refreshData(list)
+
+ binding.evaluationPictureLeft.setOnClickListener(this)
+ binding.evaluationPictureRight.setOnClickListener(this)
+
+
+ val recyclerView = binding.evaluationPictureViewpager.getChildAt(0) as RecyclerView
+
+ recyclerView.setPadding(0, 0, Util.convertDpToPx(requireContext(), 50), 0)
+ recyclerView.clipToPadding = false
binding.evaluationVoice.setOnTouchListener { _, event ->
@@ -111,6 +134,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
true
}
+
/**
* 读取元数据
*/
@@ -249,6 +273,24 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
override fun onClick(v: View?) {
v?.let {
when (v.id) {
+ //照片左侧按钮
+ R.id.evaluation_picture_left -> {
+ val currentItem = binding.evaluationPictureViewpager.currentItem
+ if (currentItem > 0) {
+ binding.evaluationPictureViewpager.currentItem = currentItem - 1
+ } else {
+ }
+
+ }
+ //照片右侧按钮
+ R.id.evaluation_picture_right -> {
+ val currentItem = binding.evaluationPictureViewpager.currentItem
+ if (currentItem < pictureAdapter.data.size - 1) {
+ binding.evaluationPictureViewpager.currentItem = currentItem + 1
+ } else {
+
+ }
+ }
//上三项,打开面板
R.id.evaluation_class_type, R.id.evaluation_problem_type, R.id.evaluation_phenomenon -> {
activity?.run {
@@ -315,4 +357,9 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
}
}
+ override fun onBackPressed(): Boolean {
+ findNavController().navigateUp()
+ return true
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt
index 301254cb..e5f47088 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt
@@ -26,6 +26,7 @@ import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ChatMsgEntity
+import com.navinfo.omqs.bean.ScProblemTypeBean
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.db.RoomAppDatabase
@@ -65,7 +66,7 @@ class EvaluationResultViewModel @Inject constructor(
/**
* 问题分类 liveData,给[LeftAdapter]展示的数据
*/
- val liveDataLeftTypeList = MutableLiveData>()
+ val liveDataLeftTypeList = MutableLiveData>()
/**
* 问题类型 liveData 给[MiddleAdapter]展示的数据
@@ -95,6 +96,8 @@ class EvaluationResultViewModel @Inject constructor(
var classTypeTemp: String = ""
+ var classCodeTemp: String = ""
+
init {
liveDataQsRecordBean.value = QsRecordBean(id = UUID.randomUUID().toString())
viewModelScope.launch {
@@ -137,7 +140,7 @@ class EvaluationResultViewModel @Inject constructor(
}
} else {
liveDataQsRecordBean.value?.run {
- elementId = bean.elementId
+ elementId = bean.renderEntity.code.toString()
linkId = bean.linkId
if (linkId.isNotEmpty()) {
viewModelScope.launch {
@@ -149,7 +152,7 @@ class EvaluationResultViewModel @Inject constructor(
}
}
}
- val point = GeometryTools.createGeoPoint(bean.geometry)
+ val point = GeometryTools.createGeoPoint(bean.renderEntity.geometry)
this.geometry = GeometryTools.createGeometry(point).toText()
mapController.animationHandler.animationByLatLon(point.latitude, point.longitude)
mapController.markerHandle.addMarker(point, markerTitle)
@@ -194,22 +197,24 @@ class EvaluationResultViewModel @Inject constructor(
list?.let {
if (list.isNotEmpty()) {
//通知页面更新
- var classType = list[0]
+ var classType = list[0].classType
+ var classCode = list[0].elementCode
liveDataLeftTypeList.postValue(it)
if (bean != null) {
- val classType2 = roomAppDatabase.getScProblemTypeDao()
- .findClassTypeByCode(bean.elementCode)
+ val classType2 = roomAppDatabase.getScProblemTypeDao().findClassTypeByCode(bean.renderEntity.code)
if (classType2 != null) {
classType = classType2
}
}
//如果右侧栏没数据,给个默认值
if (liveDataQsRecordBean.value!!.classType.isEmpty()) {
-
liveDataQsRecordBean.value!!.classType = classType
+ liveDataQsRecordBean.value!!.classCode = classCode
classTypeTemp = classType
+ classCodeTemp = classCode
} else {
classType = liveDataQsRecordBean.value!!.classType
+ classCode = liveDataQsRecordBean.value!!.classCode
}
getProblemList(classType)
}
@@ -298,6 +303,7 @@ class EvaluationResultViewModel @Inject constructor(
*/
fun setPhenomenonMiddleBean(adapterBean: RightBean) {
liveDataQsRecordBean.value!!.classType = classTypeTemp
+ liveDataQsRecordBean.value!!.classCode = classCodeTemp
liveDataQsRecordBean.value!!.phenomenon = adapterBean.text
liveDataQsRecordBean.value!!.problemType = adapterBean.title
liveDataQsRecordBean.postValue(liveDataQsRecordBean.value)
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt
index c68b7e88..9668f889 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt
@@ -5,17 +5,15 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.RequiresApi
import com.navinfo.omqs.R
+import com.navinfo.omqs.bean.ScProblemTypeBean
import com.navinfo.omqs.databinding.TextItemSelectBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
class LeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
- BaseRecyclerViewAdapter() {
+ BaseRecyclerViewAdapter() {
private var selectTitle = ""
- override fun getItemViewRes(position: Int): Int {
- return R.layout.text_item_select
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
@@ -27,18 +25,18 @@ class LeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val bd = holder.viewBinding as TextItemSelectBinding
val title = data[position]
- bd.itemId.text = title
- holder.viewBinding.root.isSelected = selectTitle == title
+ bd.itemId.text = title.classType
+ holder.viewBinding.root.isSelected = selectTitle == title.classType
bd.root.setOnClickListener {
- if (selectTitle != title) {
- selectTitle = title
+ if (selectTitle != title.classType) {
+ selectTitle = title.classType
notifyDataSetChanged()
}
- itemListener?.invoke(position, title)
+ itemListener?.invoke(position, title.classType)
}
}
- override fun refreshData(newData: List) {
+ override fun refreshData(newData: List) {
data = newData
notifyDataSetChanged()
}
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/MiddleAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/MiddleAdapter.kt
index e2ce025f..ee0b6044 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/MiddleAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/MiddleAdapter.kt
@@ -13,9 +13,6 @@ class MiddleAdapter(private var itemListener: ((Int, String) -> Unit?)? = null)
BaseRecyclerViewAdapter() {
private var selectTitle = ""
- override fun getItemViewRes(position: Int): Int {
- return R.layout.text_item_select
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PictureAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PictureAdapter.kt
new file mode 100644
index 00000000..8b8f03b1
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PictureAdapter.kt
@@ -0,0 +1,21 @@
+package com.navinfo.omqs.ui.fragment.evaluationresult
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import com.navinfo.omqs.databinding.AdapterPictureBinding
+import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
+import com.navinfo.omqs.ui.other.BaseViewHolder
+
+class PictureAdapter : BaseRecyclerViewAdapter() {
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
+ val viewBinding =
+ AdapterPictureBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return BaseViewHolder(viewBinding)
+ }
+
+ override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
+ val bd = holder.viewBinding as AdapterPictureBinding
+ bd.button.text = data[position]
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderAdapter.kt
index d0dd4de4..2785a0df 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderAdapter.kt
@@ -11,9 +11,6 @@ class RightGroupHeaderAdapter(private var itemListener: ((Int, RightBean) -> Uni
BaseRecyclerViewAdapter() {
private var selectTitle = ""
private var groupTitleList = mutableListOf()
- override fun getItemViewRes(position: Int): Int {
- return R.layout.text_item_select2
- }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/SoundtListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/SoundtListAdapter.kt
index 31a323b0..164c9405 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/SoundtListAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/SoundtListAdapter.kt
@@ -224,10 +224,6 @@ class SoundtListAdapter(
}
}
-
- override fun getItemViewRes(position: Int): Int {
- return R.layout.adapter_sound_list
- }
}
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapCityListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapCityListAdapter.kt
index dede03ce..9bf60d86 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapCityListAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/offlinemap/OfflineMapCityListAdapter.kt
@@ -131,10 +131,6 @@ class OfflineMapCityListAdapter(
}
}
}
-
- override fun getItemViewRes(position: Int): Int {
- return R.layout.adapter_offline_map_city
- }
}
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt
index c1383b38..2e1fbc8c 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt
@@ -1,13 +1,14 @@
package com.navinfo.omqs.ui.fragment.personalcenter
+import android.Manifest
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Toast
import androidx.fragment.app.viewModels
-import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import com.blankj.utilcode.util.ToastUtils
import com.blankj.utilcode.util.UriUtils
@@ -21,6 +22,8 @@ import com.navinfo.omqs.db.ImportOMDBHelper
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
import com.navinfo.omqs.tools.CoroutineUtils
import com.navinfo.omqs.ui.fragment.BaseFragment
+import com.navinfo.omqs.ui.activity.scan.QrCodeActivity
+import com.permissionx.guolindev.PermissionX
import dagger.hilt.android.AndroidEntryPoint
import org.oscim.core.GeoPoint
import javax.inject.Inject
@@ -123,6 +126,16 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) :
// R.id.personal_center_menu_layer_manager -> { // 图层管理
// findNavController().navigate(R.id.QsLayerManagerFragment)
// }
+/* R.id.personal_center_menu_qs_record_list -> {
+ findNavController().navigate(R.id.QsRecordListFragment)
+ }
+ R.id.personal_center_menu_layer_manager -> { // 图层管理
+ findNavController().navigate(R.id.QsLayerManagerFragment)
+ }*/
+ R.id.personal_center_menu_scan_qr_code -> {
+ //跳转二维码扫描界面
+ checkPermission()
+ }
}
true
}
@@ -134,6 +147,11 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) :
fileChooser.setCallbacks(this@PersonalCenterFragment)
}
+ private fun intentTOQRCode() {
+ var intent = Intent(context, QrCodeActivity::class.java);
+ startActivity(intent)
+ }
+
override fun onDestroyView() {
super.onDestroyView()
_binding = null
@@ -147,4 +165,18 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) :
super.onActivityResult(requestCode, resultCode, data)
fileChooser.onActivityResult(requestCode, resultCode, data)
}
+
+ private fun checkPermission() {
+ PermissionX.init(this)
+ .permissions(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
+ .request { allGranted, grantedList, deniedList ->
+ if (allGranted) {
+ //所有权限已经授权
+ Toast.makeText(context,"授权成功",Toast.LENGTH_LONG).show()
+ intentTOQRCode()
+ } else {
+ Toast.makeText(context, "拒绝权限: $deniedList", Toast.LENGTH_LONG).show()
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListAdapter.kt
index 3e9f3f0d..070a4cf3 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/qsrecordlist/QsRecordListAdapter.kt
@@ -58,9 +58,6 @@ class QsRecordListAdapter(
binding.qsRecordTime.text = qsRecordBean.checkTime
}
- override fun getItemViewRes(position: Int): Int {
- return R.layout.adapter_qs_record_list
- }
// 提供set方法
fun setOnKotlinItemClickListener(itemClickListener: IKotlinItemClickListener) {
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/ElectronicEyeInfoAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/ElectronicEyeInfoAdapter.kt
new file mode 100644
index 00000000..50a95962
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/ElectronicEyeInfoAdapter.kt
@@ -0,0 +1,30 @@
+package com.navinfo.omqs.ui.fragment.signMoreInfo
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import com.navinfo.omqs.R
+import com.navinfo.omqs.databinding.AdapterElectronicEyeBinding
+import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
+import com.navinfo.omqs.ui.other.BaseViewHolder
+
+data class ElectronicEyeMoreInfoAdapterItem(
+ val title: String,
+ val text: String
+)
+
+class ElectronicEyeInfoAdapter : BaseRecyclerViewAdapter() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
+ val viewBinding =
+ AdapterElectronicEyeBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return BaseViewHolder(viewBinding)
+ }
+
+ override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
+ val binding: AdapterElectronicEyeBinding =
+ holder.viewBinding as AdapterElectronicEyeBinding
+ val item = data[position]
+ binding.title.text = item.title
+ binding.text.text = item.text
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/RoadNameInfoAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/RoadNameInfoAdapter.kt
new file mode 100644
index 00000000..d768f4db
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/RoadNameInfoAdapter.kt
@@ -0,0 +1,27 @@
+package com.navinfo.omqs.ui.fragment.signMoreInfo
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import com.navinfo.omqs.R
+import com.navinfo.omqs.bean.RoadNameBean
+import com.navinfo.omqs.databinding.AdapterRoadNameBinding
+import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
+import com.navinfo.omqs.ui.other.BaseViewHolder
+
+class RoadNameInfoAdapter : BaseRecyclerViewAdapter() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
+ val viewBinding =
+ AdapterRoadNameBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return BaseViewHolder(viewBinding)
+ }
+
+ override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
+ val binding: AdapterRoadNameBinding =
+ holder.viewBinding as AdapterRoadNameBinding
+ val bean = data[position]
+ binding.title.text = bean.getNameClassStr()
+ binding.name.text = bean.name
+ binding.type.text = bean.getTypeStr()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt
new file mode 100644
index 00000000..471f39fb
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/signMoreInfo/SignMoreInfoFragment.kt
@@ -0,0 +1,100 @@
+package com.navinfo.omqs.ui.fragment.signMoreInfo
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.activityViewModels
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.navinfo.omqs.R
+import com.navinfo.omqs.databinding.FragmentSignInfoBinding
+import com.navinfo.omqs.ui.activity.map.MainViewModel
+import com.navinfo.omqs.ui.fragment.BaseFragment
+import com.navinfo.omqs.ui.widget.SignUtil
+
+
+class SignMoreInfoFragment : BaseFragment() {
+ private var _binding: FragmentSignInfoBinding? = null
+ private val binding get() = _binding!!
+
+ private val viewModel by activityViewModels()
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
+ ): View {
+ _binding = FragmentSignInfoBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ val layoutManager = LinearLayoutManager(context)
+ //// 设置 RecyclerView 的固定大小,避免在滚动时重新计算视图大小和布局,提高性能
+ binding.signInfoRecyclerview.setHasFixedSize(true)
+ binding.signInfoRecyclerview.layoutManager = layoutManager
+ viewModel.liveDataSignMoreInfo.observe(viewLifecycleOwner) {
+ binding.signInfoTitle.text = it.name
+ val drawable = resources.getDrawable(R.drawable.icon_main_moreinfo_text_left, null);
+ drawable.setBounds(
+ 0,
+ 0,
+ drawable.minimumWidth,
+ drawable.minimumHeight
+ );//必须设置图片大小,否则不显示
+ binding.signInfoTitle.setCompoundDrawables(
+ drawable, null, null, null
+ )
+
+ when (it.code) {
+ //道路名
+ 2011 -> {
+ val adapter = RoadNameInfoAdapter()
+ binding.signInfoRecyclerview.adapter = adapter
+ adapter.refreshData(SignUtil.getRoadNameList(it))
+ }
+ //常规点限速
+ 4002->{
+ val adapter = ElectronicEyeInfoAdapter()
+ binding.signInfoRecyclerview.adapter = adapter
+ adapter.refreshData(SignUtil.getSpeedLimitMoreInfoText(it))
+ }
+ //条件点限速
+ 4003 -> {
+ val adapter = ElectronicEyeInfoAdapter()
+ binding.signInfoRecyclerview.adapter = adapter
+ adapter.refreshData(SignUtil.getConditionLimitMoreInfoText(it))
+ }
+ //电子眼
+ 4010
+ -> {
+ val drawable = resources.getDrawable(R.drawable.icon_electronic_eye_left, null);
+ drawable.setBounds(
+ 0,
+ 0,
+ drawable.minimumWidth,
+ drawable.minimumHeight
+ );//必须设置图片大小,否则不显示
+ binding.signInfoTitle.setCompoundDrawables(
+ drawable, null, null, null
+ )
+ val adapter = ElectronicEyeInfoAdapter()
+ binding.signInfoRecyclerview.adapter = adapter
+ adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it))
+ }
+
+ }
+ }
+
+ binding.signInfoCancel.setOnClickListener {
+ activity?.run {
+ supportFragmentManager.beginTransaction().remove(this@SignMoreInfoFragment)
+ .commit()
+ }
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt
index 86503718..ee7ec323 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskAdapter.kt
@@ -58,9 +58,6 @@ class TaskAdapter(
}
}
- override fun getItemViewRes(position: Int): Int {
- return R.layout.adapter_task
- }
fun resetSelect() {
selectPosition = -1
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt
index 0b963619..b1dbfd5c 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt
@@ -282,10 +282,6 @@ class TaskListAdapter(
}
}
}
-
- override fun getItemViewRes(position: Int): Int {
- return R.layout.adapter_task_list
- }
}
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt
index ec11bd80..63285395 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskManagerFragment.kt
@@ -15,7 +15,8 @@ import dagger.hilt.android.AndroidEntryPoint
* 评测任务viewpager管理页面
*/
@AndroidEntryPoint
-class TaskManagerFragment(private var backListener: ((TaskManagerFragment) -> Unit?)? = null) : BaseFragment() {
+class TaskManagerFragment(private var backListener: ((TaskManagerFragment) -> Unit?)? = null) :
+ BaseFragment() {
private var _binding: FragmentTaskManagerBinding? = null
private val binding get() = _binding!!
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt
index 3bf42632..e3c4e290 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskViewModel.kt
@@ -4,6 +4,7 @@ import android.content.Context
import android.graphics.Color
import android.os.Build
import android.widget.Toast
+import androidx.annotation.RequiresApi
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
@@ -95,18 +96,21 @@ class TaskViewModel @Inject constructor(
}
}
}
+
is NetResult.Error<*> -> {
withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.exception.message}", Toast.LENGTH_SHORT)
.show()
}
}
+
is NetResult.Failure<*> -> {
withContext(Dispatchers.Main) {
Toast.makeText(context, "${result.code}:${result.msg}", Toast.LENGTH_SHORT)
.show()
}
}
+
is NetResult.Loading -> {}
}
val realm = Realm.getDefaultInstance()
@@ -139,41 +143,42 @@ class TaskViewModel @Inject constructor(
/**
* 设置当前选择的任务,并高亮当前任务的所有link
*/
+ @RequiresApi(Build.VERSION_CODES.M)
fun setSelectTaskBean(taskBean: TaskBean) {
currentSelectTaskBean = taskBean
+
liveDataTaskLinks.value = taskBean.hadLinkDvoList
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- mapController.lineHandler.omdbTaskLinkLayer.removeAll()
- if(taskBean.hadLinkDvoList.isNotEmpty()){
- mapController.lineHandler.omdbTaskLinkLayer.addLineList(taskBean.hadLinkDvoList)
- var maxX = 0.0
- var maxY = 0.0
- var minX = 0.0
- var minY = 0.0
- for (item in taskBean.hadLinkDvoList) {
- val geometry = GeometryTools.createGeometry(item.geometry)
- if(geometry!=null){
- val envelope = geometry.envelopeInternal
- if (envelope.maxX > maxX) {
- maxX = envelope.maxX
- }
- if (envelope.maxY > maxY) {
- maxY = envelope.maxY
- }
- if (envelope.minX < minX || minX == 0.0) {
- minX = envelope.minX
- }
- if (envelope.minY < minY || minY == 0.0) {
- minY = envelope.minY
- }
+
+ mapController.lineHandler.omdbTaskLinkLayer.removeAll()
+ if (taskBean.hadLinkDvoList.isNotEmpty()) {
+ mapController.lineHandler.omdbTaskLinkLayer.addLineList(taskBean.hadLinkDvoList)
+ var maxX = 0.0
+ var maxY = 0.0
+ var minX = 0.0
+ var minY = 0.0
+ for (item in taskBean.hadLinkDvoList) {
+ val geometry = GeometryTools.createGeometry(item.geometry)
+ if (geometry != null) {
+ val envelope = geometry.envelopeInternal
+ if (envelope.maxX > maxX) {
+ maxX = envelope.maxX
+ }
+ if (envelope.maxY > maxY) {
+ maxY = envelope.maxY
+ }
+ if (envelope.minX < minX || minX == 0.0) {
+ minX = envelope.minX
+ }
+ if (envelope.minY < minY || minY == 0.0) {
+ minY = envelope.minY
}
}
- //增加异常数据判断
- if(maxX!=0.0&&maxY!=0.0&&minX!=0.0&&minY!=0.0){
- mapController.animationHandler.animateToBox(
- maxX = maxX, maxY = maxY, minX = minX, minY = minY
- )
- }
+ }
+ //增加异常数据判断
+ if (maxX != 0.0 && maxY != 0.0 && minX != 0.0 && minY != 0.0) {
+ mapController.animationHandler.animateToBox(
+ maxX = maxX, maxY = maxY, minX = minX, minY = minY
+ )
}
}
}
@@ -181,20 +186,20 @@ class TaskViewModel @Inject constructor(
/**
* 高亮当前选中的link
*/
+ @RequiresApi(Build.VERSION_CODES.M)
fun showCurrentLink(link: HadLinkDvoBean) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- mapController.lineHandler.omdbTaskLinkLayer.showSelectLine(link)
- val geometry = GeometryTools.createGeometry(link.geometry)
- if(geometry!=null){
- val envelope = geometry.envelopeInternal
- mapController.animationHandler.animateToBox(
- maxX = envelope.maxX,
- maxY = envelope.maxY,
- minX = envelope.minX,
- minY = envelope.minY
- )
- }
+ mapController.lineHandler.omdbTaskLinkLayer.showSelectLine(link)
+ val geometry = GeometryTools.createGeometry(link.geometry)
+ if (geometry != null) {
+ val envelope = geometry.envelopeInternal
+ mapController.animationHandler.animateToBox(
+ maxX = envelope.maxX,
+ maxY = envelope.maxY,
+ minX = envelope.minX,
+ minY = envelope.minY
+ )
}
+
}
override fun onCleared() {
diff --git a/app/src/main/java/com/navinfo/omqs/ui/listener/QrCodeAnalyzer.kt b/app/src/main/java/com/navinfo/omqs/ui/listener/QrCodeAnalyzer.kt
new file mode 100644
index 00000000..c7216cfa
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/listener/QrCodeAnalyzer.kt
@@ -0,0 +1,43 @@
+package com.navinfo.omqs.ui.listener
+
+import android.annotation.SuppressLint
+import android.util.Log
+import androidx.camera.core.ImageAnalysis
+import androidx.camera.core.ImageProxy
+import com.google.mlkit.vision.barcode.Barcode
+import com.google.mlkit.vision.barcode.BarcodeScannerOptions
+import com.google.mlkit.vision.barcode.BarcodeScanning
+import com.google.mlkit.vision.common.InputImage
+
+class QRCodeAnalyser(private val listener: (List, Int, Int) -> Unit) :
+ ImageAnalysis.Analyzer {
+ //配置当前扫码格式
+ private val options = BarcodeScannerOptions.Builder()
+ .setBarcodeFormats(
+ Barcode.FORMAT_QR_CODE,
+ Barcode.FORMAT_AZTEC
+ ).build()
+
+ //获取解析器
+ private val detector = BarcodeScanning.getClient(options)
+
+ @SuppressLint("UnsafeExperimentalUsageError", "UnsafeOptInUsageError")
+ override fun analyze(imageProxy: ImageProxy) {
+ val mediaImage = imageProxy.image ?: kotlin.run {
+ imageProxy.close()
+ return
+ }
+ val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees)
+ detector.process(image)
+ .addOnSuccessListener { barCodes ->
+ Log.e("ztzt", "barCodes: ${barCodes.size}")
+ if (barCodes.size > 0) {
+ listener.invoke(barCodes, imageProxy.width, imageProxy.height)
+ //接收到结果后,就关闭解析
+ detector.close()
+ }
+ }
+ .addOnFailureListener { Log.e("ztzt", "Error: ${it.message}") }
+ .addOnCompleteListener { imageProxy.close() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/other/BaseRecyclerViewAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/other/BaseRecyclerViewAdapter.kt
index aa93a6d2..dcb22ba9 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/other/BaseRecyclerViewAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/other/BaseRecyclerViewAdapter.kt
@@ -1,11 +1,6 @@
package com.navinfo.omqs.ui.other
-import android.view.LayoutInflater
-import android.view.View.OnClickListener
-import android.view.ViewGroup
-import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
-import com.navinfo.omqs.R
/**
* RecyclerView 适配器基础类
@@ -27,10 +22,10 @@ abstract class BaseRecyclerViewAdapter(var data: List = listOf()) :
// )
// }
- abstract fun getItemViewRes(position: Int): Int
-
- override fun getItemViewType(position: Int): Int {
- return getItemViewRes(position)
+ // abstract fun getItemViewRes(position: Int): Int
+//
+ open override fun getItemViewType(position: Int): Int {
+ return 0
}
override fun getItemCount(): Int {
diff --git a/app/src/main/java/com/navinfo/omqs/ui/other/ShareViewModel2.kt b/app/src/main/java/com/navinfo/omqs/ui/other/ShareViewModel2.kt
new file mode 100644
index 00000000..dbcb22d9
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/other/ShareViewModel2.kt
@@ -0,0 +1,54 @@
+//package com.navinfo.omqs.ui.other
+//
+//import androidx.lifecycle.*
+//
+//val vMStoreMap = HashMap()
+//
+//inline fun LifecycleOwner.shareViewModels(
+// scopeName: String,
+// factory: ViewModelProvider.Factory? = null
+//): Lazy {
+// val store: VMStoreClass
+// if (vMStoreMap.keys.contains(scopeName)) {
+// store = vMStoreMap[scopeName]!!
+// } else {
+// store = VMStoreClass()
+// vMStoreMap[scopeName] = store
+// }
+// store.register(this)
+// return ViewModelLazy(VM::class,
+// { store.viewModelStore },
+// { factory ?: ViewModelProvider.NewInstanceFactory() })
+//}
+//
+//class VMStoreClass : ViewModelStoreOwner {
+//
+// private val bindTargets = ArrayList()
+// private var vmStore: ViewModelStore? = null
+//
+// fun register(host: LifecycleOwner) {
+// if (!bindTargets.contains(host)) {
+// bindTargets.add(host)
+// host.lifecycle.addObserver(object : LifecycleEventObserver {
+// override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
+// if (event == Lifecycle.Event.ON_DESTROY) {
+// host.lifecycle.removeObserver(this)
+// bindTargets.remove(host)
+// if (bindTargets.isEmpty()) {//如果当前商店没有关联对象,则释放资源
+// vMStoreMap.entries.find { it.value == this@VMStoreClass }?.also {
+// vmStore?.clear()
+// vMStoreMap.remove(it.key)
+// }
+// }
+// }
+// }
+// })
+// }
+// }
+//
+// override fun getViewModelStore(): ViewModelStore {
+// if (vmStore == null)
+// vmStore = ViewModelStore()
+// return vmStore!!
+// }
+//}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/widget/ScanView.kt b/app/src/main/java/com/navinfo/omqs/ui/widget/ScanView.kt
new file mode 100644
index 00000000..bfc487a7
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/widget/ScanView.kt
@@ -0,0 +1,88 @@
+package com.navinfo.omqs.ui.widget
+
+import android.animation.ObjectAnimator
+import android.content.Context
+import android.graphics.*
+import android.util.AttributeSet
+import android.view.View
+import androidx.core.content.ContextCompat
+import com.navinfo.omqs.R
+
+/**
+ * Author:zhangteng
+ * description:
+ * date:2021/6/19
+ */
+class ScanView(context: Context, attrs: AttributeSet) : View(context, attrs) {
+ private val circlePaint = Paint() //二维码圆圈画笔
+ private var rectList: ArrayList? = null //二维码数组
+ private var scanLine: Bitmap//横线
+ private var isShowLine = true//是否显示扫描线
+ private var animator: ObjectAnimator? = null
+ private var floatYFraction = 0f
+ set(value) {
+ field = value
+ invalidate()
+ }
+
+ init {
+ circlePaint.apply {
+ this.style = Paint.Style.FILL
+ this.color = ContextCompat.getColor(
+ context, android.R.color.holo_green_dark
+ )
+ }
+
+ scanLine = BitmapFactory.decodeResource(resources, R.drawable.scan_light)
+ getAnimator().start()
+ }
+
+ override fun onDraw(canvas: Canvas?) {
+ super.onDraw(canvas)
+ parseResult(canvas)
+ if (isShowLine) {
+ canvas?.drawBitmap(scanLine, (width - scanLine.width) / 2f, height * floatYFraction, circlePaint)
+ }
+ }
+
+ private fun getAnimator(): ObjectAnimator {
+ if (animator == null) {
+ animator = ObjectAnimator.ofFloat(
+ this,
+ "floatYFraction",
+ 0f,
+ 1f
+ )
+ animator?.duration = 5000
+ animator?.repeatCount = -1 //-1代表无限循环
+ }
+ return animator!!
+ }
+
+ private fun parseResult(canvas: Canvas?) {
+ rectList?.let { list ->
+ if (list.isEmpty()) {
+ return
+ }
+ list.forEach {
+ canvas?.drawCircle(
+ it.left + (it.right - it.left) / 2f,
+ it.top + (it.bottom - it.top) / 2f,
+ 50f,
+ circlePaint
+ )
+ }
+ }
+ }
+
+ fun setRectList(list: ArrayList?) {
+ rectList = list
+ rectList?.let {
+ if (it.isNotEmpty()) {
+ isShowLine = false
+ getAnimator().cancel()
+ invalidate()
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt
index 773e55e0..fcfe77a1 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/widget/SignUtil.kt
@@ -3,7 +3,12 @@ package com.navinfo.omqs.ui.widget
import android.util.Log
import com.navinfo.collect.library.data.entity.RenderEntity
import com.navinfo.omqs.R
+import com.navinfo.omqs.bean.RoadNameBean
import com.navinfo.omqs.bean.SignBean
+import com.navinfo.omqs.ui.activity.map.LaneInfoItem
+import com.navinfo.omqs.ui.fragment.signMoreInfo.ElectronicEyeMoreInfoAdapterItem
+import org.json.JSONArray
+import java.lang.reflect.Field
class SignUtil {
companion object {
@@ -19,14 +24,23 @@ class SignUtil {
2008 -> getKindText(data)
//道路方向
2010 -> getRoadDirectionText(data)
+ //常规线限速
+ 2019 -> getLineSpeedLimitText(data)
//车道数
2041 -> getLaneNumText(data)
//常规点限速,条件点限速
- 4002, 4003 -> getSpeedLimitText(data)
+ 4002, 4003 -> getSpeedLimitMaxText(data)
else -> ""
}
}
+ /**
+ * 常规线限速值
+ */
+ private fun getLineSpeedLimitText(data: RenderEntity): String {
+ return "${data.properties["maxSpeed"]}"
+ }
+
/**
*获取道路功能等级文字
*/
@@ -66,6 +80,8 @@ class SignUtil {
2008 -> "种别"
//道路方向
2010 -> "方向"
+ //常规线限速
+ 2019 -> "线限速"
//车道数
2041 -> "车道数"
//常规点限速
@@ -76,8 +92,12 @@ class SignUtil {
4004 -> "可变点限速"
//普通交限
4006 -> "普通交限"
+ //电子眼
+ 4010 -> "电子眼"
//交通灯
4022 -> "交通灯"
+ //交限
+ 4601 -> "车信"
else -> ""
}
}
@@ -87,19 +107,11 @@ class SignUtil {
*/
fun getSignBottomRightText(data: RenderEntity): String {
return when (data.code) {
+
//条件点限速
4003 -> getConditionLimitText(data)
- else -> ""
- }
- }
-
- /**
- * 更多信息展示文字
- */
- fun getMoreInfoText(data: RenderEntity): String {
- return when (data.code) {
- //条件点限速
- 4003 -> getConditionLimitMoreInfoText(data)
+ //电子眼
+ 4010 -> data.properties["name"].toString()
else -> ""
}
}
@@ -107,10 +119,42 @@ class SignUtil {
/**
* 条件点限速更多信息
*/
- private fun getConditionLimitMoreInfoText(data: RenderEntity): String {
- return data.properties["validPeriod"].toString()
+ fun getConditionLimitMoreInfoText(renderEntity: RenderEntity): List {
+
+ val list = mutableListOf()
+ val maxSpeed = renderEntity.properties["maxSpeed"]
+ if (maxSpeed != null) {
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "最高限速值(km/h)", text = maxSpeed
+ )
+ )
+ }
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "限速条件", text = getConditionLimitText(renderEntity)
+ )
+ )
+ val carType = renderEntity.properties["vehicleType"]
+ if (carType != "0") {
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "车辆类型", text = getElectronicEyeVehicleType(carType!!.toInt())
+ )
+ )
+ }
+ val time = renderEntity.properties["validPeriod"]
+ if (time?.isNotEmpty() == true) {
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "时间段", text = time
+ )
+ )
+ }
+ return list
}
+
/**
* 条件点限速文字
*/
@@ -160,21 +204,31 @@ class SignUtil {
/**
* 获取限速值文字
*/
- private fun getSpeedLimitText(data: RenderEntity): String {
+ private fun getSpeedLimitMaxText(data: RenderEntity): String {
try {
//限速标志 0 限速开始 1 限速解除
val maxSpeed = data.properties["maxSpeed"]
- val minSpeed = data.properties["minSpeed"]
- return if (maxSpeed != "0")
- maxSpeed.toString()
- else
- minSpeed.toString()
+ return maxSpeed.toString()
} catch (e: Exception) {
Log.e("jingo", "获取限速面板ICON出错1 $e")
}
return ""
}
+ /**
+ * 获取限速值文字
+ */
+ fun getSpeedLimitMinText(data: RenderEntity): String {
+ try {
+ //限速标志 0 限速开始 1 限速解除
+ val minSpeed = data.properties["minSpeed"]
+ return minSpeed.toString()
+ } catch (e: Exception) {
+ Log.e("jingo", "获取限速面板ICON出错1 $e")
+ }
+ return "0"
+ }
+
/**
* 获取种别名称
*/
@@ -182,6 +236,25 @@ class SignUtil {
return data.properties["kind"].toString()
}
+ /**
+ * 常规点限速更多信息
+ */
+ fun getSpeedLimitMoreInfoText(renderEntity: RenderEntity): List {
+
+ val list = mutableListOf()
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "最高限速值(km/h)", text = getSpeedLimitMaxText(renderEntity)
+ )
+ )
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "最低限速值(km/h)", text = getSpeedLimitMinText(renderEntity)
+ )
+ )
+ return list
+ }
+
/**
* 限速图标
*/
@@ -232,6 +305,8 @@ class SignUtil {
4003 -> getConditionalSpeedLimitIcon(data)
//可变点限速
4004 -> R.drawable.icon_change_limit
+ //电子眼
+ 4010 -> R.drawable.icon_electronic_eye
//交通灯
4022 -> R.drawable.icon_traffic_light
else -> 0
@@ -315,12 +390,11 @@ class SignUtil {
* 获取道路播报语音文字
*/
fun getRoadSpeechText(topSignList: MutableList): String {
- if (topSignList.size == 0)
- return ""
+ if (topSignList.size == 0) return ""
val stringBuffer = StringBuffer()
stringBuffer.append("当前道路")
for (item in topSignList) {
- when (item.elementCode) {
+ when (item.renderEntity.code) {
2002 -> stringBuffer.append("功能等级${item.iconText.substring(2)}级,")
2008 -> stringBuffer.append("种别${item.iconText},")
2010 -> stringBuffer.append("${item.iconText},")
@@ -329,5 +403,242 @@ class SignUtil {
}
return stringBuffer.toString()
}
+
+
+ fun getRoadNameList(data: RenderEntity): MutableList {
+ val list = mutableListOf()
+ if (data.code == 2011) {
+ try {
+ val shapeStr = data.properties["shapeList"]
+ val array = JSONArray(shapeStr)
+ for (i in 0 until array.length()) {
+ val jsonObject = array.getJSONObject(0)
+ val name = jsonObject.optString("name", "")
+ val type = jsonObject.optInt("nameType", 0)
+ val seqNum = jsonObject.optInt("seqNum", 1)
+ val nameClass = jsonObject.optInt("nameClass", 1)
+ val bean = RoadNameBean(
+ name = name, type = type, seqNum = seqNum, nameClass = nameClass
+ )
+ list.add(bean)
+ }
+ /**
+ * 排序
+ */
+ list.sortWith { n1, n2 ->
+ if (n1.nameClass != n2.nameClass) {
+ n1.nameClass.compareTo(n2.nameClass)
+ } else {
+ n1.seqNum.compareTo(n2.seqNum)
+ }
+ }
+ } catch (e: Exception) {
+
+ }
+ }
+ return list
+ }
+
+ /**
+ * 是否要有详细信息需要展示
+ */
+ fun isMoreInfo(element: RenderEntity): Boolean {
+ val isMore = when (element.code) {
+ //常规点限速
+ 4002 -> getSpeedLimitMinText(element) != "0"
+ //条件点限速
+ 4003 -> true
+ //电子眼
+ 4010 -> true
+ else -> false
+ }
+ return isMore
+ }
+
+
+ /**
+ * 获取电子眼详细信息
+ */
+ fun getElectronicEyeMoreInfo(renderEntity: RenderEntity): List {
+ val list = mutableListOf()
+ val kindCode = renderEntity.properties["kind"]!!.toInt()
+ val kind = ElectronicEyeMoreInfoAdapterItem(
+ title = "电子眼类型", text = getElectronicEyeKindType(kindCode)
+ )
+ list.add(kind)
+ when (kindCode) {
+ 1, 2, 3, 4, 5, 6, 20, 21 -> {
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "限速值(km/h)",
+ text = renderEntity.properties["speedLimit"].toString()
+ )
+ )
+ }
+ }
+ val carType = renderEntity.properties["vehicleType"]
+ if (carType != null && carType != "0") {
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "车辆类型",
+ text = getElectronicEyeVehicleType(carType.toInt())
+ )
+ )
+ }
+ val time = renderEntity.properties["validPeriod"]
+ if (time?.isNotEmpty() == true) {
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "时间段", text = time
+ )
+ )
+ }
+ if (kindCode == 20 || kindCode == 21) {
+ list.add(
+ ElectronicEyeMoreInfoAdapterItem(
+ title = "区间测试配对", text = renderEntity.properties["pairEleceyeId"].toString()
+ )
+ )
+ }
+ return list
+ }
+
+ /**
+ * 获取电子眼车辆类型
+ */
+ private fun getElectronicEyeVehicleType(type: Int): String {
+ var stringBuffer = StringBuffer()
+ for (i in 31 downTo 0) {
+ val bit = (type shr i) and 1
+ if (bit == 1) {
+ when (i) {
+ 0 -> stringBuffer.append("其他 ")
+ 1 -> stringBuffer.append("小汽车 ")
+ 2 -> stringBuffer.append("公交车 ")
+ 3 -> stringBuffer.append("多人乘坐车辆 ")
+ 4 -> stringBuffer.append("配送车 ")
+ 5 -> stringBuffer.append("摩托车 ")
+ 6 -> stringBuffer.append("行人 ")
+ 7 -> stringBuffer.append("自行车 ")
+ 8 -> stringBuffer.append("出租车 ")
+ 10 -> stringBuffer.append("紧急车辆 ")
+ 11 -> stringBuffer.append("运输卡车 ")
+ }
+ }
+ }
+
+ return stringBuffer.toString()
+ }
+
+ /**
+ * 获取电子眼类型
+ */
+ private fun getElectronicEyeKindType(kind: Int): String {
+ return when (kind) {
+ 0 -> "未调查"
+ 1 -> "超高速"
+ 2 -> "超低速"
+ 3 -> "移动式测速"
+ 4 -> "可变限速"
+ 5 -> "分车道限速"
+ 6 -> "分车种限速"
+ 7 -> "违规用灯"
+ 8 -> "违规占车道"
+ 9 -> "违规过路口"
+ 10 -> "机动车闯红灯"
+ 11 -> "路况监控"
+ 12 -> "单行线"
+ 13 -> "占用非机动车道"
+ 14 -> "出入口"
+ 15 -> "占用公交车专用道"
+ 16 -> "禁止左右转"
+ 17 -> "禁止掉头"
+ 18 -> "占用应急车道"
+ 19 -> "违反禁止标线"
+ 20 -> "区间测速开始"
+ 21 -> "区间测速结束"
+ 22 -> "违章停车"
+ 23 -> "尾号限行"
+ 24 -> "环保限行"
+ 25 -> "不系安全带"
+ 26 -> "开车打手机"
+ 27 -> "礼让行人"
+ 28 -> "违反禁令标志"
+ 29 -> "禁止鸣笛"
+ 30 -> "车辆未按规定年检"
+ 31 -> "车辆尾气超标"
+ 32 -> "ETC拍照计费电子眼"
+ 33 -> "专用车道电子眼预留"
+ 34 -> "交通标线电子眼预留"
+ 35 -> "违章电子眼预留"
+ 36 -> "卡车超限电子眼"
+ 37 -> "限时长停车电子眼"
+ else -> "无效类型"
+ }
+ }
+
+ /**
+ * 获取车信图标
+ */
+ fun getLineInfoIcons(renderEntity: RenderEntity): List {
+ val list = mutableListOf()
+ try {
+ var laneinfoGroup = renderEntity.properties["laneinfoGroup"]
+ if (laneinfoGroup != null) {
+ laneinfoGroup = laneinfoGroup.substring(1, laneinfoGroup.length - 1)
+ laneinfoGroup = "[$laneinfoGroup]"
+ }
+ val jsonArray = JSONArray(laneinfoGroup)
+ if (jsonArray.length() == 2) {
+ val itemArray = jsonArray[0]
+ val typeArray = jsonArray[1]
+ if ((itemArray is JSONArray) && (typeArray is JSONArray) && itemArray.length() == typeArray.length()) {
+ for (i in 0 until itemArray.length()) {
+ val itemObject = itemArray[i]
+ val type = typeArray[i]
+ var laneInfo = "laneinfo_${itemObject.toString().replace(",", "_")}"
+ list.add(
+ LaneInfoItem(
+ id = getResId(
+ laneInfo, R.drawable::class.java
+ ), type = type!!.toString().toInt()
+ )
+ )
+ }
+ }
+ }
+
+ } catch (e: Exception) {
+ Log.e("jingo", "json 解析失败")
+ }
+ return list
+ }
+
+ /**
+ * 通过字符串名称获取资源id
+ */
+ private fun getResId(variableName: String, c: Class<*>): Int {
+ return try {
+ val idField: Field = c.getDeclaredField(variableName)
+ idField.getInt(idField)
+ } catch (e: java.lang.Exception) {
+ e.printStackTrace()
+ R.drawable.laneinfo_0
+ }
+ }
+
+ /**
+ * 道路信息排序用的
+ */
+ fun getRoadInfoIndex(element: RenderEntity): Int {
+ return when (element.code) {
+ 2041 -> 0
+ 2008 -> 1
+ 2002 -> 2
+ 2019 -> 3
+ 2010 -> 4
+ else -> 999
+ }
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xhdpi/icon_finish_disable.png b/app/src/main/res/drawable-xhdpi/icon_finish_disable.png
new file mode 100644
index 00000000..626e4b3d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_finish_disable.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_finish_nor.png b/app/src/main/res/drawable-xhdpi/icon_finish_nor.png
new file mode 100644
index 00000000..c09a06a8
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_finish_nor.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_finish_press.png b/app/src/main/res/drawable-xhdpi/icon_finish_press.png
new file mode 100644
index 00000000..f572d57d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_finish_press.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_forward_disable.png b/app/src/main/res/drawable-xhdpi/icon_forward_disable.png
new file mode 100644
index 00000000..63978baf
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_forward_disable.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_forward_nor.png b/app/src/main/res/drawable-xhdpi/icon_forward_nor.png
new file mode 100644
index 00000000..c8a5a518
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_forward_nor.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_forward_press.png b/app/src/main/res/drawable-xhdpi/icon_forward_press.png
new file mode 100644
index 00000000..5beaed1d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_forward_press.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_mediaflag.png b/app/src/main/res/drawable-xhdpi/icon_mediaflag.png
new file mode 100644
index 00000000..2ba4e658
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_mediaflag.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_mediaflag_disable.png b/app/src/main/res/drawable-xhdpi/icon_mediaflag_disable.png
new file mode 100644
index 00000000..09f8a835
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_mediaflag_disable.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_next_disable.png b/app/src/main/res/drawable-xhdpi/icon_next_disable.png
new file mode 100644
index 00000000..41a0abe7
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_next_disable.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_next_nor.png b/app/src/main/res/drawable-xhdpi/icon_next_nor.png
new file mode 100644
index 00000000..fe4a563d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_next_nor.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_next_press.png b/app/src/main/res/drawable-xhdpi/icon_next_press.png
new file mode 100644
index 00000000..9863d55c
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_next_press.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_no_mediaflag.png b/app/src/main/res/drawable-xhdpi/icon_no_mediaflag.png
new file mode 100644
index 00000000..feaf39a7
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_no_mediaflag.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_pause_nor.png b/app/src/main/res/drawable-xhdpi/icon_pause_nor.png
new file mode 100644
index 00000000..e2aa3f68
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_pause_nor.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_play_disable.png b/app/src/main/res/drawable-xhdpi/icon_play_disable.png
new file mode 100644
index 00000000..c421e09b
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_play_disable.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_play_nor.png b/app/src/main/res/drawable-xhdpi/icon_play_nor.png
new file mode 100644
index 00000000..643fb4d2
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_play_nor.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_select_point_disable.png b/app/src/main/res/drawable-xhdpi/icon_select_point_disable.png
new file mode 100644
index 00000000..f0573f27
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_select_point_disable.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_select_point_nor.png b/app/src/main/res/drawable-xhdpi/icon_select_point_nor.png
new file mode 100644
index 00000000..e1e8b2f9
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_select_point_nor.png differ
diff --git a/app/src/main/res/drawable-xhdpi/icon_select_point_press.png b/app/src/main/res/drawable-xhdpi/icon_select_point_press.png
new file mode 100644
index 00000000..f0b0cbc3
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_select_point_press.png differ
diff --git a/app/src/main/res/drawable-xhdpi/scan_light.png b/app/src/main/res/drawable-xhdpi/scan_light.png
new file mode 100644
index 00000000..1acef0b8
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/scan_light.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/bg_sign_laneinfo.png b/app/src/main/res/drawable-xxhdpi/bg_sign_laneinfo.png
new file mode 100644
index 00000000..90f752e3
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/bg_sign_laneinfo.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_electronic_eye.png b/app/src/main/res/drawable-xxhdpi/icon_electronic_eye.png
new file mode 100644
index 00000000..2ffcd7bb
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_electronic_eye.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon_electronic_eye_left.png b/app/src/main/res/drawable-xxhdpi/icon_electronic_eye_left.png
new file mode 100644
index 00000000..c79d9b7c
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_electronic_eye_left.png differ
diff --git a/app/src/main/res/drawable/baseline_cancel_24.xml b/app/src/main/res/drawable/baseline_cancel_24.xml
new file mode 100644
index 00000000..082ea0a2
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_cancel_24.xml
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/icon_picture_left.xml b/app/src/main/res/drawable/icon_picture_left.xml
new file mode 100644
index 00000000..6b209f26
--- /dev/null
+++ b/app/src/main/res/drawable/icon_picture_left.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/icon_picture_right.xml b/app/src/main/res/drawable/icon_picture_right.xml
new file mode 100644
index 00000000..d10a68d5
--- /dev/null
+++ b/app/src/main/res/drawable/icon_picture_right.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_0.xml b/app/src/main/res/drawable/laneinfo_0.xml
new file mode 100644
index 00000000..3323c731
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_0.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1.xml b/app/src/main/res/drawable/laneinfo_1.xml
new file mode 100644
index 00000000..b178f970
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1.xml
@@ -0,0 +1,12 @@
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_2.xml b/app/src/main/res/drawable/laneinfo_1_2.xml
new file mode 100644
index 00000000..afb0be5d
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_2.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_2_3.xml b/app/src/main/res/drawable/laneinfo_1_2_3.xml
new file mode 100644
index 00000000..fd8815a6
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_2_3.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_2_4.xml b/app/src/main/res/drawable/laneinfo_1_2_4.xml
new file mode 100644
index 00000000..95e58d21
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_2_4.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_2_5.xml b/app/src/main/res/drawable/laneinfo_1_2_5.xml
new file mode 100644
index 00000000..6c124f43
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_2_5.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_2_6.xml b/app/src/main/res/drawable/laneinfo_1_2_6.xml
new file mode 100644
index 00000000..a7016e1a
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_2_6.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_3.xml b/app/src/main/res/drawable/laneinfo_1_3.xml
new file mode 100644
index 00000000..cdee0af7
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_3.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_3_4.xml b/app/src/main/res/drawable/laneinfo_1_3_4.xml
new file mode 100644
index 00000000..1f63c983
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_3_4.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_3_5.xml b/app/src/main/res/drawable/laneinfo_1_3_5.xml
new file mode 100644
index 00000000..59bae6fa
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_3_5.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_3_6.xml b/app/src/main/res/drawable/laneinfo_1_3_6.xml
new file mode 100644
index 00000000..ce021027
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_3_6.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_4.xml b/app/src/main/res/drawable/laneinfo_1_4.xml
new file mode 100644
index 00000000..a10bf8b1
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_4.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_5.xml b/app/src/main/res/drawable/laneinfo_1_5.xml
new file mode 100644
index 00000000..95bc3794
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_5.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_6.xml b/app/src/main/res/drawable/laneinfo_1_6.xml
new file mode 100644
index 00000000..a976d2bb
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_6.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_1_7.xml b/app/src/main/res/drawable/laneinfo_1_7.xml
new file mode 100644
index 00000000..3f1b8239
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_1_7.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_2.xml b/app/src/main/res/drawable/laneinfo_2.xml
new file mode 100644
index 00000000..75695b9c
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_2.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_2_3.xml b/app/src/main/res/drawable/laneinfo_2_3.xml
new file mode 100644
index 00000000..e81ba91b
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_2_3.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_2_3_4.xml b/app/src/main/res/drawable/laneinfo_2_3_4.xml
new file mode 100644
index 00000000..b351064d
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_2_3_4.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_2_4.xml b/app/src/main/res/drawable/laneinfo_2_4.xml
new file mode 100644
index 00000000..744a41da
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_2_4.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_2_5.xml b/app/src/main/res/drawable/laneinfo_2_5.xml
new file mode 100644
index 00000000..a5506bef
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_2_5.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_2_6.xml b/app/src/main/res/drawable/laneinfo_2_6.xml
new file mode 100644
index 00000000..8ce8581b
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_2_6.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_3.xml b/app/src/main/res/drawable/laneinfo_3.xml
new file mode 100644
index 00000000..96609d0c
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_3.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_3_4.xml b/app/src/main/res/drawable/laneinfo_3_4.xml
new file mode 100644
index 00000000..bd615d3d
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_3_4.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_3_5.xml b/app/src/main/res/drawable/laneinfo_3_5.xml
new file mode 100644
index 00000000..31c37b1f
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_3_5.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_3_6.xml b/app/src/main/res/drawable/laneinfo_3_6.xml
new file mode 100644
index 00000000..7cac3588
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_3_6.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_4.xml b/app/src/main/res/drawable/laneinfo_4.xml
new file mode 100644
index 00000000..7587877c
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_4.xml
@@ -0,0 +1,12 @@
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_4_5.xml b/app/src/main/res/drawable/laneinfo_4_5.xml
new file mode 100644
index 00000000..a5216c51
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_4_5.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_4_6.xml b/app/src/main/res/drawable/laneinfo_4_6.xml
new file mode 100644
index 00000000..bd615d3d
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_4_6.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_5.xml b/app/src/main/res/drawable/laneinfo_5.xml
new file mode 100644
index 00000000..b35bd7a3
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_5.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_5_6.xml b/app/src/main/res/drawable/laneinfo_5_6.xml
new file mode 100644
index 00000000..f3cf04f7
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_5_6.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_6.xml b/app/src/main/res/drawable/laneinfo_6.xml
new file mode 100644
index 00000000..fd617e7f
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_6.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/laneinfo_7.xml b/app/src/main/res/drawable/laneinfo_7.xml
new file mode 100644
index 00000000..8dfa5d45
--- /dev/null
+++ b/app/src/main/res/drawable/laneinfo_7.xml
@@ -0,0 +1,12 @@
+
+
+
diff --git a/app/src/main/res/drawable/map_trace_finish.xml b/app/src/main/res/drawable/map_trace_finish.xml
new file mode 100644
index 00000000..013c9395
--- /dev/null
+++ b/app/src/main/res/drawable/map_trace_finish.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/map_trace_forward.xml b/app/src/main/res/drawable/map_trace_forward.xml
new file mode 100644
index 00000000..4f0afa14
--- /dev/null
+++ b/app/src/main/res/drawable/map_trace_forward.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/map_trace_mediaflag.xml b/app/src/main/res/drawable/map_trace_mediaflag.xml
new file mode 100644
index 00000000..6c196508
--- /dev/null
+++ b/app/src/main/res/drawable/map_trace_mediaflag.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/map_trace_next.xml b/app/src/main/res/drawable/map_trace_next.xml
new file mode 100644
index 00000000..59e80266
--- /dev/null
+++ b/app/src/main/res/drawable/map_trace_next.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/map_trace_pause.xml b/app/src/main/res/drawable/map_trace_pause.xml
new file mode 100644
index 00000000..006cc188
--- /dev/null
+++ b/app/src/main/res/drawable/map_trace_pause.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/map_trace_select_point.xml b/app/src/main/res/drawable/map_trace_select_point.xml
new file mode 100644
index 00000000..0c0ed8bb
--- /dev/null
+++ b/app/src/main/res/drawable/map_trace_select_point.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/shape_dashed_line.xml b/app/src/main/res/drawable/shape_dashed_line.xml
new file mode 100644
index 00000000..843c76c1
--- /dev/null
+++ b/app/src/main/res/drawable/shape_dashed_line.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/shape_road_name_bg.xml b/app/src/main/res/drawable/shape_road_name_bg.xml
new file mode 100644
index 00000000..7b1a14f6
--- /dev/null
+++ b/app/src/main/res/drawable/shape_road_name_bg.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_vertical_dashed_line.xml b/app/src/main/res/drawable/shape_vertical_dashed_line.xml
new file mode 100644
index 00000000..5aa1a4bd
--- /dev/null
+++ b/app/src/main/res/drawable/shape_vertical_dashed_line.xml
@@ -0,0 +1,10 @@
+
+
+ -
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 77fc36a0..eb4204c8 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -44,79 +44,35 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
-
+
+
-
-
-
-
-
-
-
-
+ app:layout_constraintLeft_toLeftOf="@id/main_activity_top_sign_recyclerview"
+ app:layout_constraintTop_toTopOf="parent" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -432,10 +472,10 @@
android:id="@+id/main_bottom_route_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:onClick="@{()->mainActivity.onClickRouteFragment()}"
android:text="路径规划"
android:textColor="@color/blue"
android:textSize="10sp"
- android:onClick="@{()->mainActivity.onClickRouteFragment()}"
app:layout_constraintBottom_toBottomOf="@id/main_activity_bottom_sheet_bg"
app:layout_constraintLeft_toLeftOf="@id/main_bottom_route"
app:layout_constraintRight_toRightOf="@id/main_bottom_route"
diff --git a/app/src/main/res/layout/activity_qr_code.xml b/app/src/main/res/layout/activity_qr_code.xml
new file mode 100644
index 00000000..c3ae875e
--- /dev/null
+++ b/app/src/main/res/layout/activity_qr_code.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_result.xml b/app/src/main/res/layout/activity_result.xml
new file mode 100644
index 00000000..37e4275c
--- /dev/null
+++ b/app/src/main/res/layout/activity_result.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_electronic_eye.xml b/app/src/main/res/layout/adapter_electronic_eye.xml
new file mode 100644
index 00000000..ecd17bd3
--- /dev/null
+++ b/app/src/main/res/layout/adapter_electronic_eye.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_picture.xml b/app/src/main/res/layout/adapter_picture.xml
new file mode 100644
index 00000000..51ac92e8
--- /dev/null
+++ b/app/src/main/res/layout/adapter_picture.xml
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_road_name.xml b/app/src/main/res/layout/adapter_road_name.xml
new file mode 100644
index 00000000..4a4d65dd
--- /dev/null
+++ b/app/src/main/res/layout/adapter_road_name.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_sign.xml b/app/src/main/res/layout/adapter_sign.xml
index 3dbdbdb6..0f459c0b 100644
--- a/app/src/main/res/layout/adapter_sign.xml
+++ b/app/src/main/res/layout/adapter_sign.xml
@@ -29,6 +29,16 @@
android:textColor="#2F2F2F"
android:textSize="16sp" />
+
@@ -59,17 +69,19 @@
android:layout_height="wrap_content"
android:layout_alignBottom="@id/sign_main_bg"
android:layout_marginLeft="2dp"
+ android:padding="4dp"
android:layout_toRightOf="@id/sign_main_bg"
- android:background="@drawable/icon_sign_info"
+ android:src="@drawable/icon_sign_info"
android:visibility="gone" />
+ android:visibility="gone"
+ android:background="@drawable/icon_evaluation" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/adapter_sign_laneinfo.xml b/app/src/main/res/layout/adapter_sign_laneinfo.xml
new file mode 100644
index 00000000..261a18f9
--- /dev/null
+++ b/app/src/main/res/layout/adapter_sign_laneinfo.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_evaluation_result.xml b/app/src/main/res/layout/fragment_evaluation_result.xml
index 5fc689b2..c1070d32 100644
--- a/app/src/main/res/layout/fragment_evaluation_result.xml
+++ b/app/src/main/res/layout/fragment_evaluation_result.xml
@@ -24,9 +24,9 @@
android:id="@+id/evaluation_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:drawableLeft="@drawable/selector_btn_back_xml"
android:layout_marginLeft="12dp"
android:layout_marginTop="14dp"
+ android:drawableLeft="@drawable/selector_btn_back_xml"
android:text="Mark"
android:textColor="@color/default_blue_text_color"
android:textSize="16sp"
@@ -49,10 +49,10 @@
android:id="@+id/evaluation_bar_cancel"
android:layout_width="40dp"
android:layout_height="40dp"
- android:visibility="gone"
android:layout_marginRight="10dp"
android:background="@color/transparent"
android:src="@drawable/icon_fragment_close"
+ android:visibility="gone"
app:layout_constraintRight_toLeftOf="@id/evaluation_bar_save"
app:layout_constraintTop_toTopOf="@id/evaluation_bar_save" />
@@ -167,7 +167,7 @@
+ android:text="初步分析" />
@@ -212,8 +212,8 @@
android:layout_height="1dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="26dp"
- android:layout_marginBottom="20dp"
android:layout_marginRight="8dp"
+ android:layout_marginBottom="20dp"
android:background="#D6DBF0" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/personal_center_menu.xml b/app/src/main/res/menu/personal_center_menu.xml
index 80bbc7d3..dd031380 100644
--- a/app/src/main/res/menu/personal_center_menu.xml
+++ b/app/src/main/res/menu/personal_center_menu.xml
@@ -22,6 +22,10 @@
android:id="@+id/personal_center_menu_import_yuan_data"
android:icon="@drawable/ic_baseline_scatter_plot_24"
android:title="导入元数据" />
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index b2ec0c64..8b897586 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,6 +1,10 @@
+ #FF2271FF
+ #FF00C800
+ #FFFFB400
+
#FFFFFF
#F1EBEB
#4954ED
diff --git a/collect-library/build.gradle b/collect-library/build.gradle
index eb29aaa7..6b7ed9ba 100644
--- a/collect-library/build.gradle
+++ b/collect-library/build.gradle
@@ -79,7 +79,7 @@ dependencies {
implementation "net.sf.kxml:kxml2:2.3.0"
implementation 'org.slf4j:slf4j-api:2.0.7'
implementation project(":vtm-themes")
- implementation project(":vtm-android")
+ api project(":vtm-android")
implementation project(':vtm-extras')
implementation project(":vtm-http")
// implementation "org.mapsforge:vtm-themes:$vtmVersion"
@@ -109,10 +109,8 @@ dependencies {
implementation "com.google.protobuf:protobuf-java:3.6.1"
implementation "com.wdtinc:mapbox-vector-tile:3.1.0"
- implementation "com.caverock:androidsvg:1.4"
implementation "com.badlogicgames.gdx:gdx:1.11.0"
implementation "com.badlogicgames.gdx:gdx-backend-android:1.11.0"
- implementation "com.caverock:androidsvg:1.4"
// api "org.mapsforge:vtm-jts:$vtmVersion"
api project(":vtm-jts")
api 'org.locationtech.jts:jts-core:1.19.0'
diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml
index 65f6c03b..3d2a4ca0 100644
--- a/collect-library/src/main/assets/editormarker.xml
+++ b/collect-library/src/main/assets/editormarker.xml
@@ -174,7 +174,7 @@
-
@@ -1479,83 +1479,83 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1805,21 +1805,20 @@
-
-
-
-
+
+
+
+
+
+ src="assets:omdb/icon_4010.svg" symbol-height="36" symbol-width="28">
-
@@ -1836,20 +1835,410 @@
-
+
+ src="assets:omdb/4601/normal/1301_0.svg" symbol-height="29" symbol-width="29">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+ src="assets:omdb/4601/extend/1301_0.svg" symbol-height="29" symbol-width="29">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_0.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_0.svg
new file mode 100644
index 00000000..11c4ad4a
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_0.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1.svg
new file mode 100644
index 00000000..7fad797e
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_2.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2.svg
new file mode 100644
index 00000000..ef978302
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_3.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_3.svg
new file mode 100644
index 00000000..7a4eaa39
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_3.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_3_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_3_4.svg
new file mode 100644
index 00000000..b083effc
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_3_4.svg
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_4.svg
new file mode 100644
index 00000000..f1783eb2
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_5.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_5.svg
new file mode 100644
index 00000000..41817043
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_6.svg
new file mode 100644
index 00000000..1ae6c322
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_2_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_3.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3.svg
new file mode 100644
index 00000000..dbb3b0a8
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_4.svg
new file mode 100644
index 00000000..95890b21
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_5.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_5.svg
new file mode 100644
index 00000000..a5f97b40
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_6.svg
new file mode 100644
index 00000000..7746a04e
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_3_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_4.svg
new file mode 100644
index 00000000..e102cc2e
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_4.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_5.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_5.svg
new file mode 100644
index 00000000..2ea27c43
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_5.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_6.svg
new file mode 100644
index 00000000..79506a9e
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_6.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_1_7.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_1_7.svg
new file mode 100644
index 00000000..a168c5fe
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_1_7.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_2.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_2.svg
new file mode 100644
index 00000000..ec913bb4
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_2.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_2_3.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_2_3.svg
new file mode 100644
index 00000000..2239d079
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_2_3.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_2_3_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_2_3_4.svg
new file mode 100644
index 00000000..20da2578
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_2_3_4.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_2_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_2_4.svg
new file mode 100644
index 00000000..1eba8f6b
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_2_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_2_5.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_2_5.svg
new file mode 100644
index 00000000..d5171f4b
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_2_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_2_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_2_6.svg
new file mode 100644
index 00000000..51a11221
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_2_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_3.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_3.svg
new file mode 100644
index 00000000..d2da475a
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_3.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_3_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_3_4.svg
new file mode 100644
index 00000000..c2ccda33
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_3_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_3_5.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_3_5.svg
new file mode 100644
index 00000000..54be427f
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_3_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_3_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_3_6.svg
new file mode 100644
index 00000000..cff1424a
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_3_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_4.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_4.svg
new file mode 100644
index 00000000..ec270561
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_4.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_4_5.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_4_5.svg
new file mode 100644
index 00000000..8d88db55
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_4_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_4_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_4_6.svg
new file mode 100644
index 00000000..3dda5a65
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_4_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_5.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_5.svg
new file mode 100644
index 00000000..c3bdba5f
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_5.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_5_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_5_6.svg
new file mode 100644
index 00000000..e230cdf6
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_5_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_6.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_6.svg
new file mode 100644
index 00000000..0452c08c
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_6.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/bus/1301_7.svg b/collect-library/src/main/assets/omdb/4601/bus/1301_7.svg
new file mode 100644
index 00000000..6c966615
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/bus/1301_7.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_0.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_0.svg
new file mode 100644
index 00000000..31181865
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_0.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1.svg
new file mode 100644
index 00000000..2432424e
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_2.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2.svg
new file mode 100644
index 00000000..54900d75
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_3.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_3.svg
new file mode 100644
index 00000000..824e6503
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_3.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_3_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_3_4.svg
new file mode 100644
index 00000000..9aae9284
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_3_4.svg
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_4.svg
new file mode 100644
index 00000000..6e952eab
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_5.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_5.svg
new file mode 100644
index 00000000..028e0281
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_6.svg
new file mode 100644
index 00000000..d79bb956
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_2_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_3.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3.svg
new file mode 100644
index 00000000..9c121433
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_4.svg
new file mode 100644
index 00000000..b25a0cad
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_5.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_5.svg
new file mode 100644
index 00000000..e6b10741
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_6.svg
new file mode 100644
index 00000000..3ff7e8b5
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_3_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_4.svg
new file mode 100644
index 00000000..32b6d317
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_4.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_5.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_5.svg
new file mode 100644
index 00000000..acb3d7ff
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_5.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_6.svg
new file mode 100644
index 00000000..0ec4d847
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_6.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_1_7.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_1_7.svg
new file mode 100644
index 00000000..e707aec2
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_1_7.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_2.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_2.svg
new file mode 100644
index 00000000..ad77a66d
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_2.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_2_3.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_2_3.svg
new file mode 100644
index 00000000..f8f2c938
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_2_3.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_2_3_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_2_3_4.svg
new file mode 100644
index 00000000..d073873d
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_2_3_4.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_2_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_2_4.svg
new file mode 100644
index 00000000..3f2f9707
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_2_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_2_5.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_2_5.svg
new file mode 100644
index 00000000..d843eb38
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_2_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_2_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_2_6.svg
new file mode 100644
index 00000000..bdb8fff7
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_2_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_3.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_3.svg
new file mode 100644
index 00000000..df172c9c
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_3.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_3_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_3_4.svg
new file mode 100644
index 00000000..acb9ae05
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_3_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_3_5.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_3_5.svg
new file mode 100644
index 00000000..069cbd0b
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_3_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_3_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_3_6.svg
new file mode 100644
index 00000000..79d5c087
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_3_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_4.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_4.svg
new file mode 100644
index 00000000..b6e1d0db
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_4.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_4_5.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_4_5.svg
new file mode 100644
index 00000000..81af0ab8
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_4_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_4_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_4_6.svg
new file mode 100644
index 00000000..57990202
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_4_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_5.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_5.svg
new file mode 100644
index 00000000..aba27872
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_5.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_5_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_5_6.svg
new file mode 100644
index 00000000..572458f7
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_5_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_6.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_6.svg
new file mode 100644
index 00000000..b33898a2
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_6.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/extend/1301_7.svg b/collect-library/src/main/assets/omdb/4601/extend/1301_7.svg
new file mode 100644
index 00000000..eed6f75f
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/extend/1301_7.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1.svg
new file mode 100644
index 00000000..eee46b0a
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_2.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2.svg
new file mode 100644
index 00000000..a17714ac
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_3.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_3.svg
new file mode 100644
index 00000000..15b4e042
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_3.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_3_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_3_4.svg
new file mode 100644
index 00000000..7e376960
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_3_4.svg
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_4.svg
new file mode 100644
index 00000000..54172a31
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_5.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_5.svg
new file mode 100644
index 00000000..389ab0ab
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_6.svg
new file mode 100644
index 00000000..a42e748c
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_2_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_3.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3.svg
new file mode 100644
index 00000000..98d227b3
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_4.svg
new file mode 100644
index 00000000..a790d632
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_5.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_5.svg
new file mode 100644
index 00000000..91980137
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_6.svg
new file mode 100644
index 00000000..a8eb644b
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_3_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_4.svg
new file mode 100644
index 00000000..002e5954
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_4.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_5.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_5.svg
new file mode 100644
index 00000000..a57d2197
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_5.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_6.svg
new file mode 100644
index 00000000..44e65ef4
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_6.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_1_7.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_1_7.svg
new file mode 100644
index 00000000..9e84d3c8
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_1_7.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_2.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_2.svg
new file mode 100644
index 00000000..5301bd45
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_2.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_2_3.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_2_3.svg
new file mode 100644
index 00000000..a12e77c3
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_2_3.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_2_3_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_2_3_4.svg
new file mode 100644
index 00000000..c65f71cb
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_2_3_4.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_2_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_2_4.svg
new file mode 100644
index 00000000..84f7e390
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_2_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_2_5.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_2_5.svg
new file mode 100644
index 00000000..8b28100c
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_2_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_2_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_2_6.svg
new file mode 100644
index 00000000..11521180
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_2_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_3.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_3.svg
new file mode 100644
index 00000000..aa94ed6e
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_3.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_3_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_3_4.svg
new file mode 100644
index 00000000..178daa1f
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_3_4.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_3_5.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_3_5.svg
new file mode 100644
index 00000000..0a722d82
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_3_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_3_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_3_6.svg
new file mode 100644
index 00000000..70057c1c
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_3_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_4.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_4.svg
new file mode 100644
index 00000000..8e5aeea7
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_4.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_4_5.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_4_5.svg
new file mode 100644
index 00000000..8dbbcd42
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_4_5.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_4_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_4_6.svg
new file mode 100644
index 00000000..1d34c49d
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_4_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_5.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_5.svg
new file mode 100644
index 00000000..ab0df392
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_5.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_5_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_5_6.svg
new file mode 100644
index 00000000..4fcaeb4e
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_5_6.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_6.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_6.svg
new file mode 100644
index 00000000..b1061c69
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_6.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/4601/normal/1301_7.svg b/collect-library/src/main/assets/omdb/4601/normal/1301_7.svg
new file mode 100644
index 00000000..ab543afa
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/4601/normal/1301_7.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/assets/omdb/icon_4010.svg b/collect-library/src/main/assets/omdb/icon_4010.svg
new file mode 100644
index 00000000..1c0c2379
--- /dev/null
+++ b/collect-library/src/main/assets/omdb/icon_4010.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt
index b9aa59f7..96bf6b3a 100644
--- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt
+++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt
@@ -33,6 +33,10 @@ open class QsRecordBean @JvmOverloads constructor(
*问题分类
*/
var classType: String = "",
+ /**
+ *要素代码
+ */
+ var classCode: String = "",
/**
* 问题类型
*/
@@ -50,6 +54,7 @@ open class QsRecordBean @JvmOverloads constructor(
* 问题环节
*/
var problemLink: String = "",
+
/**
* 问题原因
* 根本原因(RCA)
@@ -96,6 +101,7 @@ open class QsRecordBean @JvmOverloads constructor(
elementId = elementId,
linkId = linkId,
classType = classType,
+ classCode = classCode,
problemType = problemType,
phenomenon = phenomenon,
description = description,
diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt
index a799e01c..f0cbe8f5 100644
--- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt
+++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt
@@ -1,5 +1,6 @@
package com.navinfo.collect.library.data.entity
+import android.os.Parcelable
import com.navinfo.collect.library.system.Constant
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.collect.library.utils.GeometryToolsKt
@@ -8,6 +9,7 @@ import io.realm.RealmObject
import io.realm.RealmSet
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey
+import kotlinx.parcelize.Parcelize
import org.locationtech.jts.geom.Coordinate
import org.locationtech.jts.geom.Geometry
import org.oscim.core.MercatorProjection
@@ -16,13 +18,15 @@ import java.util.*
/**
* 渲染要素对应的实体
* */
-open class RenderEntity() : RealmObject() {
+@Parcelize
+open class RenderEntity() : RealmObject(), Parcelable {
@PrimaryKey
var id: String = UUID.randomUUID().toString() // id
lateinit var name: String //要素名
lateinit var table: String //要素表名
var code: Int = 0 // 要素编码
- var geometry: String = "" // 要素渲染参考的geometry,该数据可能会在导入预处理环节被修改,原始geometry会保存在properties的geometry字段下
+ var geometry: String =
+ "" // 要素渲染参考的geometry,该数据可能会在导入预处理环节被修改,原始geometry会保存在properties的geometry字段下
get() {
wkt = GeometryTools.createGeometry(field)
return field
@@ -56,7 +60,7 @@ open class RenderEntity() : RealmObject() {
var tileX: RealmSet = RealmSet() // x方向的tile编码
var tileY: RealmSet = RealmSet() // y方向的tile编码
- constructor(name: String): this() {
+ constructor(name: String) : this() {
this.name = name
}
@@ -65,9 +69,11 @@ open class RenderEntity() : RealmObject() {
//道路linkId
const val linkPid = "linkPid"
}
+
object LimitTable {
const val linkPid = "linkPid"
}
+
object KindCodeTable {
const val linkPid = "linkPid"
}