1、增加要素线捕捉开关2、增加图层开关与要素捕捉联动3、个人中心增加Marker显隐开关4、修复道路属性不显示道路种别问题
This commit is contained in:
@@ -108,6 +108,16 @@ class Constant {
|
||||
*/
|
||||
var MapRotateEnable = false
|
||||
|
||||
/**
|
||||
* Marker显隐
|
||||
*/
|
||||
var MapMarkerCloseEnable = false
|
||||
|
||||
/**
|
||||
* 是否开启线捕捉
|
||||
*/
|
||||
var MapCatchLine = false
|
||||
|
||||
/**
|
||||
* 全要素捕捉
|
||||
*/
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.locationtech.jts.operation.buffer.BufferOp
|
||||
import org.oscim.core.GeoPoint
|
||||
import org.oscim.core.MercatorProjection
|
||||
import javax.inject.Inject
|
||||
import kotlin.reflect.jvm.jvmName
|
||||
import kotlin.streams.toList
|
||||
|
||||
class RealmOperateHelper() {
|
||||
@@ -158,6 +159,7 @@ class RealmOperateHelper() {
|
||||
result.addAll(it)
|
||||
}
|
||||
}
|
||||
realm.close()
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -278,36 +280,30 @@ 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)
|
||||
.greaterThanOrEqualTo("tileX", xStart)
|
||||
.lessThanOrEqualTo("tileX", xEnd)
|
||||
.greaterThanOrEqualTo("tileY", yStart)
|
||||
.lessThanOrEqualTo("tileY", yEnd)
|
||||
// 筛选不显示的数据
|
||||
if (catchAll) {
|
||||
// 查询realm中对应tile号的数据
|
||||
realmList = getSelectTaskRealmTools(RenderEntity::class.java, false)
|
||||
.greaterThanOrEqualTo("tileX", xStart)
|
||||
.lessThanOrEqualTo("tileX", xEnd)
|
||||
.greaterThanOrEqualTo("tileY", yStart)
|
||||
.lessThanOrEqualTo("tileY", yEnd)
|
||||
.findAll()
|
||||
realmList = realmQuery.findAll()
|
||||
} else {
|
||||
// 查询realm中对应tile号的数据
|
||||
if (Constant.CATCH_ALL) {
|
||||
realmList = getSelectTaskRealmTools(RenderEntity::class.java, false)
|
||||
.greaterThanOrEqualTo("tileX", xStart)
|
||||
.lessThanOrEqualTo("tileX", xEnd)
|
||||
.greaterThanOrEqualTo("tileY", yStart)
|
||||
.lessThanOrEqualTo("tileY", yEnd)
|
||||
.findAll()
|
||||
realmList = realmQuery.findAll()
|
||||
} else {
|
||||
realmList = getSelectTaskRealmTools(RenderEntity::class.java, false)
|
||||
.greaterThanOrEqualTo("tileX", xStart)
|
||||
.lessThanOrEqualTo("tileX", xEnd)
|
||||
.greaterThanOrEqualTo("tileY", yStart)
|
||||
.lessThanOrEqualTo("tileY", yEnd)
|
||||
.greaterThan("catchEnable", 0)
|
||||
.findAll()
|
||||
realmList = realmQuery.greaterThan("catchEnable", 0).findAll()
|
||||
}
|
||||
}
|
||||
// 将获取到的数据和查询的polygon做相交,只返回相交的数据
|
||||
val queryResult = realmList?.stream()?.filter {
|
||||
polygon.intersects(it.wkt)
|
||||
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 {
|
||||
if (sort) {
|
||||
@@ -331,7 +327,7 @@ class RealmOperateHelper() {
|
||||
val result = mutableListOf<RenderEntity>()
|
||||
val realm = getSelectTaskRealmInstance()
|
||||
val realmList = getSelectTaskRealmTools(RenderEntity::class.java, false)
|
||||
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK_KIND.name)
|
||||
.notEqualTo("table", DataCodeEnum.OMDB_RD_LINK.name)
|
||||
.equalTo("properties['${LinkTable.linkPid}']", linkPid)
|
||||
.findAll()
|
||||
result.addAll(realm.copyFromRealm(realmList))
|
||||
@@ -433,19 +429,26 @@ class RealmOperateHelper() {
|
||||
clazz: Class<E>,
|
||||
enableSql: Boolean
|
||||
): RealmQuery<E> {
|
||||
return if (MapParamUtils.getDataLayerEnum() != null) {
|
||||
|
||||
var realmQuery = getSelectTaskRealmInstance().where(clazz)
|
||||
if (MapParamUtils.getDataLayerEnum() != null) {
|
||||
if (enableSql) {
|
||||
var sql =
|
||||
" enable${MapParamUtils.getDataLayerEnum().sql}"
|
||||
getSelectTaskRealmInstance().where(clazz).rawPredicate(sql)
|
||||
} else {
|
||||
getSelectTaskRealmInstance().where(clazz)
|
||||
}
|
||||
|
||||
} else {
|
||||
getSelectTaskRealmInstance().where(clazz)
|
||||
}
|
||||
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()
|
||||
for (type in com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY) {
|
||||
realmQuery.notEqualTo("table", type)
|
||||
}
|
||||
realmQuery.endGroup()
|
||||
}
|
||||
}
|
||||
return realmQuery
|
||||
}
|
||||
|
||||
fun getSelectTaskRealmInstance(): Realm {
|
||||
|
||||
@@ -781,10 +781,11 @@ class MainActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新地图
|
||||
* 线捕捉开关
|
||||
*/
|
||||
fun refrushOnclick(view: View) {
|
||||
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
|
||||
fun catchLineOnclick(view: View) {
|
||||
viewModel.setCatchRoad(!viewModel.isCatchRoad())
|
||||
binding.mainActivityMapCatchLine.isSelected = viewModel.isCatchRoad()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -180,6 +180,11 @@ class MainViewModel @Inject constructor(
|
||||
*/
|
||||
private var bHighRoad = true
|
||||
|
||||
/**
|
||||
* 是不是捕捉线
|
||||
*/
|
||||
private var bCatchRoad = false
|
||||
|
||||
/**
|
||||
* 是不是选择轨迹点
|
||||
*/
|
||||
@@ -597,11 +602,15 @@ 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){
|
||||
buffer = 2.0
|
||||
}
|
||||
val itemList = realmOperateHelper.queryElement(
|
||||
GeometryTools.createPoint(
|
||||
point.longitude, point.latitude
|
||||
),
|
||||
buffer = 3.2, catchAll = false,
|
||||
buffer = buffer, catchAll = false,
|
||||
)
|
||||
//增加道路线过滤原则
|
||||
val filterResult = itemList.filter {
|
||||
@@ -1111,6 +1120,14 @@ class MainViewModel @Inject constructor(
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启捕捉线
|
||||
*/
|
||||
fun setCatchRoad(select: Boolean) {
|
||||
bCatchRoad = select
|
||||
Constant.MapCatchLine = bCatchRoad
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否开启线高亮
|
||||
*/
|
||||
@@ -1118,6 +1135,13 @@ class MainViewModel @Inject constructor(
|
||||
return bHighRoad
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否开启捕捉线
|
||||
*/
|
||||
fun isCatchRoad(): Boolean {
|
||||
return bCatchRoad
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启轨迹选择
|
||||
*/
|
||||
|
||||
@@ -152,6 +152,17 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
|
||||
it.title = "锁定地图旋转及视角"
|
||||
}
|
||||
}
|
||||
R.id.personal_center_menu_marker -> {
|
||||
niMapController.mMapView.vtmMap.eventLayer.enableTilt(Constant.MapRotateEnable)
|
||||
Constant.MapMarkerCloseEnable = !Constant.MapMarkerCloseEnable
|
||||
//增加开关控制
|
||||
niMapController.markerHandle.setQsRecordMarkEnable(Constant.MapMarkerCloseEnable)
|
||||
if (Constant.MapMarkerCloseEnable) {
|
||||
it.title = "显示Marker"
|
||||
} else {
|
||||
it.title = "隐藏Marker"
|
||||
}
|
||||
}
|
||||
R.id.personal_center_menu_catch_all -> {
|
||||
Constant.CATCH_ALL = !Constant.CATCH_ALL
|
||||
if (Constant.CATCH_ALL) {
|
||||
@@ -220,6 +231,13 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
|
||||
it.title = "开启全要素捕捉"
|
||||
}
|
||||
}
|
||||
R.id.personal_center_menu_marker -> {
|
||||
if (Constant.MapMarkerCloseEnable) {
|
||||
it.title = "显示Marker"
|
||||
} else {
|
||||
it.title = "隐藏Marker"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -487,31 +487,55 @@ class TaskViewModel @Inject constructor(
|
||||
fun checkUploadTask(context: Context, taskBean: TaskBean) {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val realm = Realm.getDefaultInstance()
|
||||
var result = 0
|
||||
val map: MutableMap<TaskBean, Boolean> = HashMap<TaskBean, Boolean>()
|
||||
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
|
||||
val objects =
|
||||
realm.where(QsRecordBean::class.java).equalTo("linkId", hadLinkDvoBean.linkPid)
|
||||
.and().equalTo("taskId", hadLinkDvoBean.taskId).findAll()
|
||||
val map: MutableMap<TaskBean, Boolean> = HashMap<TaskBean, Boolean>()
|
||||
if (objects.isEmpty() && hadLinkDvoBean.reason.isEmpty()) {
|
||||
withContext(Dispatchers.Main) {
|
||||
liveDataTaskUpload.postValue(map)
|
||||
val mDialog = FirstDialog(context)
|
||||
mDialog.setTitle("提示?")
|
||||
mDialog.setMessage("此任务中存在未测评link,请确认!")
|
||||
mDialog.setPositiveButton(
|
||||
"确定"
|
||||
) { _, _ ->
|
||||
mDialog.dismiss()
|
||||
map[taskBean] = true
|
||||
liveDataTaskUpload.postValue(map)
|
||||
}
|
||||
mDialog.setNegativeButton(
|
||||
"取消"
|
||||
) { _, _ -> mDialog.dismiss() }
|
||||
mDialog.show()
|
||||
if(hadLinkDvoBean.linkStatus==3){
|
||||
result = 1
|
||||
realm.close()
|
||||
return@forEach
|
||||
}else{
|
||||
result = 2
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
}
|
||||
if(result==1){
|
||||
withContext(Dispatchers.Main) {
|
||||
liveDataTaskUpload.postValue(map)
|
||||
val mDialog = FirstDialog(context)
|
||||
mDialog.setTitle("提示?")
|
||||
mDialog.setMessage("此任务中存在新增Link无问题记录,请添加至少一条记录!")
|
||||
mDialog.setPositiveButton(
|
||||
"确定"
|
||||
) { _, _ ->
|
||||
mDialog.dismiss()
|
||||
}
|
||||
mDialog.setCancelVisibility(View.GONE)
|
||||
mDialog.show()
|
||||
}
|
||||
}else if(result==2){
|
||||
withContext(Dispatchers.Main) {
|
||||
liveDataTaskUpload.postValue(map)
|
||||
val mDialog = FirstDialog(context)
|
||||
mDialog.setTitle("提示?")
|
||||
mDialog.setMessage("此任务中存在未测评link,请确认!")
|
||||
mDialog.setPositiveButton(
|
||||
"确定"
|
||||
) { _, _ ->
|
||||
mDialog.dismiss()
|
||||
map[taskBean] = true
|
||||
liveDataTaskUpload.postValue(map)
|
||||
}
|
||||
mDialog.setNegativeButton(
|
||||
"取消"
|
||||
) { _, _ -> mDialog.dismiss() }
|
||||
mDialog.show()
|
||||
}
|
||||
}else{
|
||||
map[taskBean] = true
|
||||
liveDataTaskUpload.postValue(map)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user