diff --git a/app/build.gradle b/app/build.gradle index 826f37ee..20f4585a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -136,6 +136,11 @@ dependencies { //带侧滑的自定义列表 implementation 'com.yanzhenjie.recyclerview:x:1.3.2' implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" + + // 友盟统计SDK + implementation 'com.umeng.umsdk:common:9.4.7'// 必选 + implementation 'com.umeng.umsdk:asms:1.4.1'// 必选 + implementation 'com.umeng.umsdk:apm:1.5.2' // U-APM包依赖(必选) } //允许引用生成的代码 kapt { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ab14f0d9..89627c62 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -66,6 +66,13 @@ + + + + + + + () + 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) { @@ -433,19 +429,26 @@ class RealmOperateHelper() { clazz: Class, enableSql: Boolean ): RealmQuery { - 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 { diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt index c3053205..fd43b4bd 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginActivity.kt @@ -17,6 +17,7 @@ import com.navinfo.omqs.R import com.navinfo.omqs.databinding.ActivityLoginBinding import com.navinfo.omqs.ui.activity.CheckPermissionsActivity import com.navinfo.omqs.ui.activity.map.MainActivity +import com.umeng.commonsdk.UMConfigure import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -39,6 +40,7 @@ class LoginActivity : CheckPermissionsActivity() { binding.activity = this initView() Log.e("jingo", getScreenParams()) + UMConfigure.init(this, "650bece7b2f6fa00ba573c7a", "native", UMConfigure.DEVICE_TYPE_PHONE, "") } private fun getScreenParams(): String { 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 28eb8950..10c5fe84 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 @@ -783,10 +783,11 @@ class MainActivity : BaseActivity() { } /** - * 刷新地图 + * 线捕捉开关 */ - fun refrushOnclick(view: View) { - mapController.layerManagerHandler.updateOMDBVectorTileLayer() + fun catchLineOnclick(view: View) { + viewModel.setCatchRoad(!viewModel.isCatchRoad()) + binding.mainActivityMapCatchLine.isSelected = viewModel.isCatchRoad() } /** 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 6c4f7da9..9eb1a23e 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 @@ -184,6 +184,11 @@ class MainViewModel @Inject constructor( */ private var bHighRoad = true + /** + * 是不是捕捉线 + */ + private var bCatchRoad = false + /** * 是不是选择轨迹点 */ @@ -631,11 +636,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 { @@ -1140,6 +1149,14 @@ class MainViewModel @Inject constructor( } + /** + * 开启捕捉线 + */ + fun setCatchRoad(select: Boolean) { + bCatchRoad = select + Constant.MapCatchLine = bCatchRoad + } + /** * 是否开启线高亮 */ @@ -1147,6 +1164,13 @@ class MainViewModel @Inject constructor( return bHighRoad } + /** + * 是否开启捕捉线 + */ + fun isCatchRoad(): Boolean { + return bCatchRoad + } + /** * 开启轨迹选择 */ 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 855790d8..68051458 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 @@ -35,6 +35,7 @@ import com.permissionx.guolindev.PermissionX import dagger.hilt.android.AndroidEntryPoint import org.oscim.core.GeoPoint import org.oscim.core.MapPosition +import java.io.File import javax.inject.Inject /** @@ -152,6 +153,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) { @@ -166,7 +178,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? // 定位到指定位置 niMapController.mMapView.vtmMap.animator() // .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 )) - .animateTo(GeoPoint(40.09819324139729,116.53123207733361 )) + .animateTo(GeoPoint(40.5016054261786, 115.82381251427815)) } R.id.personal_center_menu_open_all_layer -> { @@ -220,6 +232,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" + } + } } } } 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 index 421347bf..2ecf8477 100644 --- 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 @@ -97,6 +97,12 @@ class SignMoreInfoFragment : BaseFragment() { binding.signInfoRecyclerview.adapter = adapter adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it.renderEntity)) } + //交通标牌 + DataCodeEnum.OMDB_TRAFFIC_SIGN.code -> { + val adapter = TwoItemAdapter() + binding.signInfoRecyclerview.adapter = adapter + adapter.refreshData(SignUtil.getTrafficSignMoreInfo(it)) + } else -> { val adapter = SignUtil.getMoreInfoAdapter(it.renderEntity) binding.signInfoRecyclerview.adapter = adapter 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 24cd2849..5cde34aa 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 @@ -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 = HashMap() taskBean.hadLinkDvoList.forEach { hadLinkDvoBean -> val objects = realm.where(QsRecordBean::class.java).equalTo("linkId", hadLinkDvoBean.linkPid) .and().equalTo("taskId", hadLinkDvoBean.taskId).findAll() - val map: MutableMap = HashMap() 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) } diff --git a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt index 46a5286c..ebe4a882 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -1650,6 +1650,55 @@ class SignUtil { return list } + /** + * 获取交通标牌详细信息 + */ + fun getTrafficSignMoreInfo(renderEntity: RenderEntity): List { + val list = mutableListOf() + val trafsignShape = when (renderEntity.properties["trafsignShape"]) { + "1" -> "不规则形状" + "2" -> "长方形" + "3" -> "三角形" + "4" -> "圆形" + "5" -> "菱形" + "6" -> "到三角形" + "7" -> "正方形" + "8" -> "八角形" + else -> "" + } + if (trafsignShape != "") { + list.add( + TwoItemAdapterItem( + title = "形状", text = trafsignShape + ) + ) + } + + val color = when (renderEntity.properties["color"]) { + "0" -> "未验证" + "1" -> "白色" + "2" -> "黄色" + "3" -> "红色" + "5" -> "棕色" + "6" -> "蓝色" + "7" -> "绿色" + "8" -> "黑色" + "9" -> "其他" + else -> "" + } + list.add( + TwoItemAdapterItem( + title = "颜色", text = color + ) + ) + list.add( + TwoItemAdapterItem( + title = "正北夹角", text = "${renderEntity.properties["heading"]}" + ) + ) + return list + } + /** * 计算捕捉点到 */ diff --git a/app/src/main/res/drawable-xxhdpi/icon_close_catch_line.png b/app/src/main/res/drawable-xxhdpi/icon_close_catch_line.png new file mode 100644 index 00000000..23e89d00 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_close_catch_line.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_open_catch_line.png b/app/src/main/res/drawable-xxhdpi/icon_open_catch_line.png new file mode 100644 index 00000000..3adb9250 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_open_catch_line.png differ diff --git a/app/src/main/res/drawable/selector_catch_line_src.xml b/app/src/main/res/drawable/selector_catch_line_src.xml new file mode 100644 index 00000000..fefce394 --- /dev/null +++ b/app/src/main/res/drawable/selector_catch_line_src.xml @@ -0,0 +1,5 @@ + + + + + \ 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 cb8689ec..655c668c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -248,13 +248,14 @@ app:layout_constraintLeft_toLeftOf="@id/main_activity_top_sign_recyclerview" /> + android:onClick="@{(view)->mainActivity.catchLineOnclick(view)}" + android:src="@drawable/selector_catch_line_src" + app:layout_constraintBottom_toTopOf="@id/main_activity_location" + app:layout_constraintRight_toRightOf="@id/main_activity_location" /> + app:layout_constraintBottom_toTopOf="@id/main_activity_zoom_in" + app:layout_constraintRight_toRightOf="@id/main_activity_zoom_in" /> + app:layout_constraintBottom_toTopOf="@id/main_activity_map_catch_line" + app:layout_constraintRight_toRightOf="@id/main_activity_map_catch_line" /> + app:constraint_referenced_ids="main_activity_close_line,main_activity_select_line,main_activity_voice,main_activity_note,main_activity_map_catch_line,main_activity_zoom_in,main_activity_zoom_out,main_activity_geometry,main_activity_location" /> + + android:title="版本:23QE4_V1.5.3_20230920_A" /> diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 4689d6bc..0a4613e4 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1811,7 +1811,7 @@ - + @@ -1871,18 +1871,10 @@ - - - - - - - - + + diff --git a/collect-library/src/main/assets/omdb/appendix/1105_00101_0_12.svg b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_12.svg new file mode 100644 index 00000000..ca783581 --- /dev/null +++ b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_12.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/appendix/1105_00101_0_13.svg b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_13.svg new file mode 100644 index 00000000..81ab8b1d --- /dev/null +++ b/collect-library/src/main/assets/omdb/appendix/1105_00101_0_13.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt index 0d3e70e9..b7e38784 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt @@ -43,6 +43,8 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : */ private val mDefaultTextColor = "#4E55AF" + private var markerEnable = true + /** * 文字画笔 */ @@ -275,7 +277,12 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : // 设置矢量图层均在12级以上才显示 mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition -> if (e == Map.SCALE_EVENT) { - qsRecordItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 + if(markerEnable){ + qsRecordItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 + }else{ + qsRecordItemizedLayer.isEnabled = false + } + niLocationItemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12 } }) @@ -372,6 +379,13 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : mMapView.updateMap(true) } + fun setQsRecordMarkEnable(enable:Boolean){ + qsRecordItemizedLayer.isEnabled = enable + markerEnable = enable + qsRecordItemizedLayer.populate() + mMapView.updateMap(true) + } + /** * 增加或更新便签 diff --git a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java index 003e494a..6dcbdd1e 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryTools.java @@ -1470,8 +1470,8 @@ public class GeometryTools { double startLatitude = MercatorProjection.tileYToLatitude(tile.tileY, tile.zoomLevel); double endLongitude = MercatorProjection.tileXToLongitude(tile.tileX + 1, tile.zoomLevel); double endLatitude = MercatorProjection.tileYToLatitude(tile.tileY + 1, tile.zoomLevel); - return GeometryTools.createPolygonFromCoords(new Coordinate[]{new Coordinate(startLongitude, startLongitude), new Coordinate(endLongitude, startLatitude), - new Coordinate(endLongitude, endLatitude), new Coordinate(startLongitude, endLatitude), new Coordinate(startLongitude, startLongitude)}); + return GeometryTools.createPolygonFromCoords(new Coordinate[]{new Coordinate(startLongitude, startLatitude), new Coordinate(endLongitude, startLatitude), + new Coordinate(endLongitude, endLatitude), new Coordinate(startLongitude, endLatitude), new Coordinate(startLongitude, startLatitude)}); } /** * 经纬度转墨卡托 diff --git a/settings.gradle b/settings.gradle index b309d4f9..c4a9b212 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,6 +6,7 @@ pluginManagement { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/central' } + maven { url 'https://repo1.maven.org/maven2/' } maven { url 'https://jitpack.io' } mavenCentral() google() @@ -22,6 +23,7 @@ dependencyResolutionManagement { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/central' } + maven { url 'https://repo1.maven.org/maven2/' } maven { url 'https://jitpack.io' } mavenCentral()