This commit is contained in:
qiji4215
2023-10-09 14:21:32 +08:00
56 changed files with 275 additions and 215 deletions

View File

@@ -52,24 +52,33 @@ class ImportPreProcess {
// 获取当前renderEntity的geometry
val geometry = renderEntity.wkt
var radian = 0.0 // geometry的角度如果是点获取angle如果是线获取最后两个点的方向
var point = Coordinate(geometry?.coordinate)
var isReverse = false // 是否为逆向
if (direction.isNotEmpty()) {
val paramDirections = direction.split("=")
if (paramDirections.size >= 2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
isReverse = true;
}
}
// 如果是正向,则取最后一个点作为渲染图标的位置
var point = geometry!!.coordinates[geometry!!.coordinates.size-1]
if (isReverse){
// 逆向的话取第一个点作为渲染图标的位置
point = geometry.coordinates[0]
}
// 如果数据属性中存在angle则使用该值否则需要根据line中的数据进行计算
if (renderEntity?.properties?.get(
"angle"
) != null
) {
// 带有angle字段的数据也有可能是线需要判断是否需要根据指定字段判断数据是否为逆向
var angle = renderEntity?.properties?.get("angle")?.toDouble()!!
// angle角度为与正北方向的顺时针夹角将其转换为与X轴正方向的逆时针夹角即为正东方向的夹角
angle = ((450 - angle) % 360)
radian = Math.toRadians(angle)
} else {
var isReverse = false // 是否为逆向
if (direction.isNotEmpty()) {
val paramDirections = direction.split("=")
if (paramDirections.size >= 2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
isReverse = true;
}
}
if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
var coordinates = geometry.coordinates
if (isReverse) {
@@ -79,7 +88,7 @@ class ImportPreProcess {
val p2: Coordinate = coordinates.get(coordinates.size - 1)
// 计算线段的方向
radian = Angle.angle(p1, p2)
point = p1
point = p2
}
}
@@ -97,7 +106,7 @@ class ImportPreProcess {
val coord =
Coordinate(point.getX() + dy, point.getY() - dx)
// 记录偏移后的点位或线数据,如果数据为线时,记录的偏移后数据为倒数第二个点右移后,方向与线的最后两个点平行同向的单位向量
// 记录偏移后的点位或线数据,如果数据为线时,记录的偏移后数据为最后一个点右移后,方向与线的最后两个点平行同向的单位向量
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
val geometryTranslate: Geometry =
GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y))

View File

@@ -39,6 +39,7 @@ class RealmOperateHelper() {
* */
@RequiresApi(Build.VERSION_CODES.N)
suspend fun queryLink(
realm: Realm,
point: GeoPoint,
buffer: Double = DEFAULT_BUFFER,
bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE,
@@ -63,9 +64,9 @@ class RealmOperateHelper() {
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
// 查询realm中对应tile号的数据
val realm = getSelectTaskRealmInstance()
// val realm = getSelectTaskRealmInstance()
val realmList =
getSelectTaskRealmTools(RenderEntity::class.java, false)
getSelectTaskRealmTools(realm, RenderEntity::class.java, false)
.equalTo("table", DataCodeEnum.OMDB_LINK_DIRECT.name)
.greaterThanOrEqualTo("tileX", xStart)
.lessThanOrEqualTo("tileX", xEnd)
@@ -74,7 +75,7 @@ class RealmOperateHelper() {
.findAll()
// 将获取到的数据和查询的polygon做相交只返回相交的数据
val dataList = realm.copyFromRealm(realmList)
realm.close()
// realm.close()
val queryResult = dataList?.stream()?.filter {
polygon.intersects(it.wkt)
@@ -132,7 +133,7 @@ class RealmOperateHelper() {
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
// 查询realm中对应tile号的数据
val realm = getSelectTaskRealmInstance()
val realmList = getSelectTaskRealmTools(RenderEntity::class.java, true)
val realmList = getSelectTaskRealmTools(realm, RenderEntity::class.java, true)
.equalTo("table", table)
.greaterThanOrEqualTo("tileX", xStart)
.lessThanOrEqualTo("tileX", xEnd)
@@ -228,12 +229,14 @@ class RealmOperateHelper() {
return qsRecordBean
}
suspend fun queryLinkToMutableRenderEntityList(linkPid: String): MutableList<RenderEntity>? {
suspend fun queryLinkToMutableRenderEntityList(
realm: Realm,
linkPid: String
): MutableList<RenderEntity>? {
val resultList = mutableListOf<RenderEntity>()
// val realm = getSelectTaskRealmInstance()
val realm = getSelectTaskRealmInstance()
val realmR = getSelectTaskRealmTools(RenderEntity::class.java, true)
val realmR = getSelectTaskRealmTools(realm, RenderEntity::class.java, true)
.equalTo("properties['${LinkTable.linkPid}']", linkPid).findAll()
val dataList = realm.copyFromRealm(realmR)
@@ -242,7 +245,7 @@ class RealmOperateHelper() {
resultList.add(it)
}
realm.close()
// realm.close()
return resultList
}
@@ -280,7 +283,7 @@ class RealmOperateHelper() {
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
val realm = getSelectTaskRealmInstance()
var realmList = mutableListOf<RenderEntity>()
val realmQuery = getSelectTaskRealmTools(RenderEntity::class.java, false)
val realmQuery = getSelectTaskRealmTools(realm, RenderEntity::class.java, false)
.greaterThanOrEqualTo("tileX", xStart)
.lessThanOrEqualTo("tileX", xEnd)
.greaterThanOrEqualTo("tileY", yStart)
@@ -299,10 +302,12 @@ class RealmOperateHelper() {
}
// 将获取到的数据和查询的polygon做相交只返回相交的数据
val queryResult = realmList?.stream()?.filter {
if(Constant.MapCatchLine){
polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase().equals("LINESTRING")||it.wkt?.geometryType?.uppercase().equals("POLYGON")
}else{
polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase().equals("POINT")||it.wkt?.geometryType?.uppercase().equals("POLYGON")
if (Constant.MapCatchLine) {
polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase()
.equals("LINESTRING") || it.wkt?.geometryType?.uppercase().equals("POLYGON")
} else {
polygon.intersects(it.wkt) && it.wkt?.geometryType?.uppercase()
.equals("POINT") || it.wkt?.geometryType?.uppercase().equals("POLYGON")
}
}?.toList()
queryResult?.let {
@@ -323,15 +328,13 @@ class RealmOperateHelper() {
* @param bufferType 点位外扩距离的单位: 米-Meter像素-PIXEL
* @param sort 是否需要排序
* */
suspend fun queryLinkByLinkPid(linkPid: String): MutableList<RenderEntity> {
suspend fun queryLinkByLinkPid(realm: Realm,linkPid: String): MutableList<RenderEntity> {
val result = mutableListOf<RenderEntity>()
val realm = getSelectTaskRealmInstance()
val realmList = getSelectTaskRealmTools(RenderEntity::class.java, false)
val realmList = getSelectTaskRealmTools(realm, RenderEntity::class.java, false)
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name)
.equalTo("properties['${LinkTable.linkPid}']", linkPid)
.findAll()
result.addAll(realm.copyFromRealm(realmList))
realm.close()
return result
}
@@ -426,19 +429,20 @@ class RealmOperateHelper() {
fun <E : RealmModel> getSelectTaskRealmTools(
realm: Realm,
clazz: Class<E>,
enableSql: Boolean
): RealmQuery<E> {
var realmQuery = getSelectTaskRealmInstance().where(clazz)
val realmQuery = realm.where(clazz)
if (MapParamUtils.getDataLayerEnum() != null) {
if (enableSql) {
var sql =
" enable${MapParamUtils.getDataLayerEnum().sql}"
getSelectTaskRealmInstance().where(clazz).rawPredicate(sql)
realm.where(clazz).rawPredicate(sql)
}
}
if(clazz.name==RenderEntity::class.jvmName){
if (clazz.name == RenderEntity::class.jvmName) {
// 筛选不显示的数据
if (com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY != null && com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY.size > 0) {
realmQuery.beginGroup()

View File

@@ -50,17 +50,11 @@ import io.realm.Realm
import io.realm.RealmConfiguration
import io.realm.RealmSet
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.withContext
import org.locationtech.jts.geom.Envelope
import org.locationtech.jts.geom.Geometry
import org.locationtech.jts.geom.LineString
import org.locationtech.spatial4j.shape.Rectangle
import org.oscim.core.GeoPoint
import org.oscim.core.MapPosition
import org.oscim.map.Map
@@ -637,7 +631,7 @@ class MainViewModel @Inject constructor(
private suspend fun captureItem(point: GeoPoint) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
var buffer = 3.2
if(mapController.mMapView.mapLevel>=18){
if (mapController.mMapView.mapLevel >= 18) {
buffer = 2.0
}
val itemList = realmOperateHelper.queryElement(
@@ -677,9 +671,9 @@ class MainViewModel @Inject constructor(
val topSignList = mutableListOf<SignBean>()
mapController.lineHandler.linksLayer.clear()
if (linkIdCache != route.linkId) {
val realm = realmOperateHelper.getSelectTaskRealmInstance()
mapController.lineHandler.showLine(route.pointList)
var elementList = realmOperateHelper.queryLinkByLinkPid(route.linkId)
val elementList = realmOperateHelper.queryLinkByLinkPid(realm, route.linkId)
for (element in elementList) {
when (element.code) {
@@ -749,6 +743,7 @@ class MainViewModel @Inject constructor(
speakMode?.speakText(speechText)
}
linkIdCache = route.linkId ?: ""
realm.close()
}
}
} catch (e: Exception) {
@@ -769,8 +764,8 @@ class MainViewModel @Inject constructor(
captureLinkState = true
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
val linkList = realmOperateHelper.queryLink(point = point)
val realm = realmOperateHelper.getSelectTaskRealmInstance()
val linkList = realmOperateHelper.queryLink(realm, point = point)
var hisRoadName = false
@@ -807,7 +802,8 @@ class MainViewModel @Inject constructor(
val newLineString = GeometryTools.createLineString(linePoints)
linkId?.let {
var elementList = realmOperateHelper.queryLinkByLinkPid(it)
val elementList = realmOperateHelper.queryLinkByLinkPid(realm, it)
Log.e("jingo", "捕捉到数据 ${elementList.size}")
for (element in elementList) {
if (element.code == DataCodeEnum.OMDB_LINK_NAME.code) {
hisRoadName = true
@@ -824,7 +820,10 @@ class MainViewModel @Inject constructor(
newLineString,
element
)
// Log.e("jingo", "捕捉到的数据code ${element.code}")
Log.e(
"jingo",
"捕捉到的数据code ${DataCodeEnum.findTableNameByCode(element.code)}"
)
when (element.code) {
DataCodeEnum.OMDB_MULTI_DIGITIZED.code,//上下线分离
DataCodeEnum.OMDB_CON_ACCESS.code,//全封闭
@@ -887,10 +886,10 @@ class MainViewModel @Inject constructor(
}
val realm = realmOperateHelper.getSelectTaskRealmInstance()
// val realm = realmOperateHelper.getSelectTaskRealmInstance()
val entityList = realmOperateHelper.getSelectTaskRealmTools(
RenderEntity::class.java, true
realm, RenderEntity::class.java, true
).and().equalTo("table", DataCodeEnum.OMDB_RESTRICTION.name).and()
.equalTo(
"properties['linkIn']", it
@@ -901,7 +900,7 @@ class MainViewModel @Inject constructor(
val outLink = outList[i].properties["linkOut"]
val linkOutEntity =
realmOperateHelper.getSelectTaskRealmTools(
RenderEntity::class.java,
realm, RenderEntity::class.java,
true
)
.equalTo("table", DataCodeEnum.OMDB_RD_LINK_KIND.name)
@@ -919,8 +918,8 @@ class MainViewModel @Inject constructor(
mapController.lineHandler.linksLayer.addLine(
link.geometry, Color.BLUE
)
realm.close()
}
}
liveDataTopSignList.postValue(topSignList.distinctBy { it.name }
@@ -941,6 +940,7 @@ class MainViewModel @Inject constructor(
if (!hisRoadName) {
liveDataRoadName.postValue(null)
}
realm.close()
}
} catch (e: Exception) {

View File

@@ -218,7 +218,7 @@ class EvaluationResultViewModel @Inject constructor(
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
liveDataQsRecordBean.value?.let {
val realm = realmOperateHelper.getSelectTaskRealmInstance()
val taskLink =
realmOperateHelper.captureTaskLink(point)
if (taskLink != null) {
@@ -226,7 +226,7 @@ class EvaluationResultViewModel @Inject constructor(
mapController.lineHandler.showLine(taskLink.geometry)
return
} else {
val linkList = realmOperateHelper.queryLink(point = point)
val linkList = realmOperateHelper.queryLink(realm,point = point)
if (linkList.isNotEmpty()) {
it.linkId = linkList[0].properties[LinkTable.linkPid] ?: ""
mapController.lineHandler.showLine(linkList[0].geometry)
@@ -235,6 +235,7 @@ class EvaluationResultViewModel @Inject constructor(
}
it.linkId = ""
mapController.lineHandler.removeLine()
realm.close()
}
}
}

View File

@@ -178,7 +178,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
// 定位到指定位置
niMapController.mMapView.vtmMap.animator()
// .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 ))
.animateTo(GeoPoint(40.50704534740206, 115.80404946472662))
.animateTo(GeoPoint(40.07245537956604, 116.239638575623))
}
R.id.personal_center_menu_open_all_layer -> {

View File

@@ -275,7 +275,7 @@ class PersonalCenterViewModel @Inject constructor(
liveDataMessage.postValue("元数据表导入成功")
roomAppDatabase.getScRootCauseAnalysisDao().insertOrUpdateList(list2)
}
if(list3.isNotEmpty()){
if (list3.isNotEmpty()) {
liveDataMessage.postValue("标牌对照表导入成功")
roomAppDatabase.getScWarningCodeDao().insertList(list3)
}
@@ -295,7 +295,9 @@ class PersonalCenterViewModel @Inject constructor(
fun readRealmData() {
viewModelScope.launch(Dispatchers.IO) {
// val result = realmOperateHelper.queryLink(GeometryTools.createPoint(115.685817,28.62759))
val result = realmOperateHelper.queryLinkByLinkPid("84206617008217069")
val realm = realmOperateHelper.getSelectTaskRealmInstance()
val result = realmOperateHelper.queryLinkByLinkPid(realm, "84206617008217069")
realm.close()
Log.d("xiaoyan", result.toString())
}
}

View File

@@ -76,6 +76,11 @@ class TaskFragment : BaseFragment() {
binding.taskAddLink.isSelected = it
}
viewModel.liveDataAddLinkDialog.observe(viewLifecycleOwner){
viewModel.addTaskLink(requireContext(),it)
}
//注意:使用滑动菜单不能开启滑动删除,否则只有滑动删除没有滑动菜单
val mSwipeMenuCreator = SwipeMenuCreator { _, rightMenu, _ ->
//添加菜单自动添加至尾部
@@ -110,6 +115,7 @@ class TaskFragment : BaseFragment() {
viewModel.liveDataTaskLinks.observe(viewLifecycleOwner) {
adapter.resetSelect()
adapter.refreshData(it)
// adapter.setSelectTag(it.last().linkPid)
}
viewModel.getTaskList(requireContext())
binding.taskSearch.addTextChangedListener(object : TextWatcher {

View File

@@ -128,21 +128,29 @@ class TaskListAdapter(
holder.addObserver(object : OnLifecycleStateListener {
override fun onState(tag: String, state: Lifecycle.State) {
when (state) {
Lifecycle.State.STARTED ->
Lifecycle.State.STARTED -> {
uploadManager.observer(
taskBean.id,
holder,
UploadObserver(taskBean.id, binding)
)
downloadManager.observer(
taskBean.id,
holder,
DownloadObserver(taskBean.id, holder)
)
Lifecycle.State.DESTROYED ->
}
Lifecycle.State.DESTROYED -> {
downloadManager.removeObserver(tag.toInt())
uploadManager.removeObserver(tag.toInt())
}
else -> {}
}
}
})
downloadManager.addTask(taskBean)
uploadManager.addTask(taskBean)
uploadManager.observer(taskBean.id, holder, UploadObserver(taskBean.id, binding))
// uploadManager.observer(taskBean.id, holder, UploadObserver(taskBean.id, binding))
if (taskBean.status == FileDownloadStatus.NONE) {
binding.taskDownloadBtn.setBackgroundColor(Color.WHITE)
binding.taskDownloadBtn.setTextColor(Color.parseColor("#888FB3"))
@@ -187,7 +195,6 @@ class TaskListAdapter(
}
}
}
@@ -227,8 +234,8 @@ class TaskListAdapter(
binding.taskUploadBtn.stopAnimator()
binding.taskUploadBtn.setText("重新同步")
binding.taskUploadBtn.setProgress(100)
if(!TextUtils.isEmpty(taskBean.errMsg)){
Toast.makeText(binding.root.context,taskBean.errMsg,Toast.LENGTH_LONG).show()
if (!TextUtils.isEmpty(taskBean.errMsg)) {
Toast.makeText(binding.root.context, taskBean.errMsg, Toast.LENGTH_LONG).show()
}
}
@@ -359,7 +366,7 @@ class TaskListAdapter(
refreshData(list)
}
fun getSelectTaskPosition():Int{
fun getSelectTaskPosition(): Int {
return selectPosition
}

View File

@@ -88,7 +88,12 @@ class TaskViewModel @Inject constructor(
/**
* 是否开启了道路选择
*/
var liveDataSelectNewLink = MutableLiveData(false)
val liveDataSelectNewLink = MutableLiveData(false)
/**
* 选中link
*/
val liveDataAddLinkDialog = MutableLiveData<RenderEntity>()
init {
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
@@ -98,10 +103,11 @@ class TaskViewModel @Inject constructor(
if (tag == TAG) {
if (liveDataSelectNewLink.value == true) {
viewModelScope.launch(Dispatchers.Default) {
val realm = realmOperateHelper.getSelectTaskRealmInstance()
if (currentSelectTaskBean == null) {
liveDataToastMessage.postValue("还没有开启任何任务")
} else {
val links = realmOperateHelper.queryLink(
val links = realmOperateHelper.queryLink(realm,
point = point,
)
if (links.isNotEmpty()) {
@@ -111,43 +117,15 @@ class TaskViewModel @Inject constructor(
return@launch
}
}
val hadLinkDvoBean = HadLinkDvoBean(
taskId = currentSelectTaskBean!!.id,
linkPid = l.properties["linkPid"]!!,
geometry = l.geometry,
linkStatus = 2
)
currentSelectTaskBean!!.hadLinkDvoList.add(
hadLinkDvoBean
)
val realm = Realm.getDefaultInstance()
realm.executeTransaction { r ->
r.copyToRealmOrUpdate(hadLinkDvoBean)
r.copyToRealmOrUpdate(currentSelectTaskBean!!)
}
//根据Link数据查询对应数据上要素对要素进行显示重置
l.properties["linkPid"]?.let {
realmOperateHelper.queryLinkToMutableRenderEntityList(it)
?.forEach { renderEntity ->
if (renderEntity.enable != 1) {
renderEntity.enable = 1
realm.executeTransaction { r ->
r.copyToRealmOrUpdate(renderEntity)
}
}
}
}
liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList)
mapController.lineHandler.addTaskLink(hadLinkDvoBean)
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
mapController.mMapView.vtmMap.updateMap(true)
realm.close()
liveDataAddLinkDialog.postValue(l)
}
}
realm.close()
}
} else {
viewModelScope.launch(Dispatchers.IO) {
val links = realmOperateHelper.queryLink(
val realm = realmOperateHelper.getSelectTaskRealmInstance()
val links = realmOperateHelper.queryLink(realm,
point = point,
)
if (links.isNotEmpty()) {
@@ -160,6 +138,7 @@ class TaskViewModel @Inject constructor(
}
}
}
realm.close()
}
}
}
@@ -285,7 +264,7 @@ class TaskViewModel @Inject constructor(
* 设置当前选择的任务并高亮当前任务的所有link
*/
fun setSelectTaskBean( taskBean: TaskBean) {
fun setSelectTaskBean(taskBean: TaskBean) {
sharedPreferences.edit().putInt(Constant.SELECT_TASK_ID, taskBean.id).apply()
@@ -294,15 +273,17 @@ class TaskViewModel @Inject constructor(
liveDataTaskLinks.value = taskBean.hadLinkDvoList
showTaskLinks(taskBean)
MapParamUtils.setTaskId(taskBean.id)
Constant.currentSelectTaskFolder = File(Constant.USER_DATA_PATH +"/${taskBean.id}")
Constant.currentSelectTaskConfig = RealmConfiguration.Builder().directory(Constant.currentSelectTaskFolder).name("OMQS.realm").encryptionKey(Constant.PASSWORD).allowQueriesOnUiThread(true).schemaVersion(2).build()
Constant.currentSelectTaskFolder = File(Constant.USER_DATA_PATH + "/${taskBean.id}")
Constant.currentSelectTaskConfig =
RealmConfiguration.Builder().directory(Constant.currentSelectTaskFolder)
.name("OMQS.realm").encryptionKey(Constant.PASSWORD).allowQueriesOnUiThread(true)
.schemaVersion(2).build()
MapParamUtils.setTaskConfig(Constant.currentSelectTaskConfig)
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
mapController.mMapView.updateMap(true)
}
private fun showTaskLinks(taskBean: TaskBean) {
mapController.lineHandler.removeAllTaskLine()
@@ -497,17 +478,17 @@ class TaskViewModel @Inject constructor(
realm.where(QsRecordBean::class.java).equalTo("linkId", hadLinkDvoBean.linkPid)
.and().equalTo("taskId", hadLinkDvoBean.taskId).findAll()
if (objects.isEmpty() && hadLinkDvoBean.reason.isEmpty()) {
if(hadLinkDvoBean.linkStatus==3){
if (hadLinkDvoBean.linkStatus == 3) {
result = 1
realm.close()
return@forEach
}else{
} else {
result = 2
}
}
}
realm.close()
if(result==1){
if (result == 1) {
liveDataTaskUpload.postValue(map)
withContext(Dispatchers.Main) {
val mDialog = FirstDialog(context)
@@ -521,7 +502,7 @@ class TaskViewModel @Inject constructor(
mDialog.setCancelVisibility(View.GONE)
mDialog.show()
}
}else if(result==2){
} else if (result == 2) {
liveDataTaskUpload.postValue(map)
withContext(Dispatchers.Main) {
val mDialog = FirstDialog(context)
@@ -539,7 +520,7 @@ class TaskViewModel @Inject constructor(
) { _, _ -> mDialog.dismiss() }
mDialog.show()
}
}else{
} else {
map[taskBean] = true
liveDataTaskUpload.postValue(map)
}
@@ -562,69 +543,62 @@ class TaskViewModel @Inject constructor(
*/
fun setSelectLink(selected: Boolean) {
liveDataSelectNewLink.value = selected
// //开始捕捉
// if (selected) {
// mapController.mMapView.addOnNIMapClickListener(TAG, object : OnGeoPointClickListener {
// override fun onMapClick(tag: String, point: GeoPoint) {
// if (tag == TAG) {
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// viewModelScope.launch(Dispatchers.Default) {
// if (currentSelectTaskBean == null) {
// liveDataToastMessage.postValue("还没有开启任何任务")
// } else {
// val links = realmOperateHelper.queryLink(
// point = point,
// )
// if (links.isNotEmpty()) {
// val l = links[0]
// for (link in currentSelectTaskBean!!.hadLinkDvoList) {
// if (link.linkPid == l.properties["linkPid"]) {
// return@launch
// }
// }
// val hadLinkDvoBean = HadLinkDvoBean(
// taskId = currentSelectTaskBean!!.id,
// linkPid = l.properties["linkPid"]!!,
// geometry = l.geometry,
// linkStatus = 2
// )
// currentSelectTaskBean!!.hadLinkDvoList.add(
// hadLinkDvoBean
// )
// val realm = Realm.getDefaultInstance()
// realm.executeTransaction { r ->
// r.copyToRealmOrUpdate(hadLinkDvoBean)
// r.copyToRealmOrUpdate(currentSelectTaskBean!!)
// }
// //根据Link数据查询对应数据上要素对要素进行显示重置
// l.properties["linkPid"]?.let {
// realmOperateHelper.queryLinkToMutableRenderEntityList(it)
// ?.forEach { renderEntity ->
// if (renderEntity.enable != 1) {
// renderEntity.enable = 1
// realm.executeTransaction { r ->
// r.copyToRealmOrUpdate(renderEntity)
// }
// }
// }
// }
// liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList)
// mapController.lineHandler.addTaskLink(hadLinkDvoBean)
// mapController.layerManagerHandler.updateOMDBVectorTileLayer()
// mapController.mMapView.vtmMap.updateMap(true)
// }
// }
// }
// }
// }
// }
// })
// } else {
// mapController.mMapView.removeOnNIMapClickListener(TAG)
// mapController.lineHandler.removeLine()
// }
}
/**
* 添加link
*/
fun addTaskLink(context: Context, data: RenderEntity) {
val mDialog = FirstDialog(context)
mDialog.setTitle("提示")
mDialog.setMessage("是否添加当前link")
mDialog.setPositiveButton(
"确定"
) { dialog, _ ->
dialog.dismiss()
viewModelScope.launch(Dispatchers.IO) {
val hadLinkDvoBean = HadLinkDvoBean(
taskId = currentSelectTaskBean!!.id,
linkPid = data.properties["linkPid"]!!,
geometry = data.geometry,
linkStatus = 2
)
currentSelectTaskBean!!.hadLinkDvoList.add(
hadLinkDvoBean
)
val realm = Realm.getDefaultInstance()
realm.executeTransaction { r ->
r.copyToRealmOrUpdate(hadLinkDvoBean)
r.copyToRealmOrUpdate(currentSelectTaskBean!!)
}
//根据Link数据查询对应数据上要素对要素进行显示重置
data.properties["linkPid"]?.let {
realmOperateHelper.queryLinkToMutableRenderEntityList(realm,it)
?.forEach { renderEntity ->
if (renderEntity.enable != 1) {
renderEntity.enable = 1
realm.executeTransaction { r ->
r.copyToRealmOrUpdate(renderEntity)
}
}
}
}
liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList)
mapController.lineHandler.addTaskLink(hadLinkDvoBean)
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
mapController.mMapView.vtmMap.updateMap(true)
realm.close()
}
}
mDialog.setNegativeButton(
"取消"
) { _, _ ->
mDialog.dismiss()
}
mDialog.show()
}
/**
* 删除评测link
*/
@@ -654,7 +628,7 @@ class TaskViewModel @Inject constructor(
//重置数据为隐藏
if (hadLinkDvoBean.linkStatus == 2) {
realmOperateHelper.queryLinkToMutableRenderEntityList(hadLinkDvoBean.linkPid)
realmOperateHelper.queryLinkToMutableRenderEntityList(realm,hadLinkDvoBean.linkPid)
?.forEach { renderEntity ->
if (renderEntity.enable == 1) {
renderEntity.enable = 0

View File

@@ -707,6 +707,28 @@ class SignUtil {
)
)
}
DataCodeEnum.OMDB_FILL_AREA.code->{
list.add(
TwoItemAdapterItem(
title = "对象号码",
text = "${data.properties["objectPid"]}"
)
)
list.add(
TwoItemAdapterItem(
title = "符合高精", text = when (data.properties["compliant"]) {
"0" -> ""
"1" -> ""
else -> ""
}
)
)
list.add(
TwoItemAdapterItem(
title = "关联车道组", text = "${data.properties["lgList"]}"
)
)
}
}
adapter.data = list
return adapter