From 061aca96ab3cda56a50aebb9634e99359a38e6f5 Mon Sep 17 00:00:00 2001 From: qiji4215 <qiji4215@navinfo.com> Date: Fri, 11 Aug 2023 09:49:45 +0800 Subject: [PATCH] merge code --- .../com/navinfo/omqs/db/RealmOperateHelper.kt | 63 +++++++++++++++++++ .../omqs/ui/activity/map/MainViewModel.kt | 7 ++- .../main/res/menu/personal_center_menu.xml | 2 +- .../src/main/assets/editormarker.xml | 23 ++++--- 4 files changed, 82 insertions(+), 13 deletions(-) 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 bde70a57..e95b98d0 100644 --- a/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/RealmOperateHelper.kt @@ -88,6 +88,69 @@ class RealmOperateHelper() { return result } + /** + * 根据当前点位查询匹配的Link数据 + * @param point 点位经纬度信息 + * @param buffer 点位的外扩距离 + * @param bufferType 点位外扩距离的单位: 米-Meter,像素-PIXEL + * @param sort 是否需要排序 + * */ + @RequiresApi(Build.VERSION_CODES.N) + suspend fun queryLine( + point: GeoPoint, + buffer: Double = DEFAULT_BUFFER, + bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE, + table: String, + sort: Boolean = true + ): MutableList<RenderEntity> { + val result = mutableListOf<RenderEntity>() + val polygon = getPolygonFromPoint( + GeometryTools.createPoint(point.longitude, point.latitude), + buffer, + bufferType + ) + // 根据polygon查询相交的tile号 + val tileXSet = mutableSetOf<Int>() + + GeometryToolsKt.getTileXByGeometry(polygon.toString(), tileXSet) + val tileYSet = mutableSetOf<Int>() + GeometryToolsKt.getTileYByGeometry(polygon.toString(), tileYSet) + + // 对tileXSet和tileYSet查询最大最小值 + val xStart = tileXSet.stream().min(Comparator.naturalOrder()).orElse(null) + val xEnd = tileXSet.stream().max(Comparator.naturalOrder()).orElse(null) + val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null) + val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null) + // 查询realm中对应tile号的数据 + val realm = Realm.getDefaultInstance() + val realmList = realm.where(RenderEntity::class.java) + .equalTo("table", table) + .and() + .rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd").and().equalTo("taskId",RealmDBParamUtils.getTaskId()) + .findAll() + // 将获取到的数据和查询的polygon做相交,只返回相交的数据 + val dataList = realm.copyFromRealm(realmList) + val queryResult = dataList?.stream()?.filter { + polygon.intersects(it.wkt) + }?.toList() + + queryResult?.let { + if (sort) { + result.addAll( + sortRenderEntity( + GeometryTools.createPoint( + point.longitude, + point.latitude + ), it + ) + ) + } else { + result.addAll(it) + } + } + return result + } + suspend fun captureTaskLink( point: GeoPoint, buffer: Double = DEFAULT_BUFFER, 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 143f8379..ca889bfa 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 @@ -475,11 +475,14 @@ class MainViewModel @Inject constructor( captureLinkState = true if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - val linkList = realmOperateHelper.queryLink( +/* val linkList = realmOperateHelper.queryLink( point = point, - ) + )*/ + + val linkList = realmOperateHelper.queryLine(point = point, buffer = 2.5, table = "OMDB_LANE_MARK_BOUNDARYTYPE") var hisRoadName = false + if (linkList.isNotEmpty()) { //看板数据 val signList = mutableListOf<SignBean>() diff --git a/app/src/main/res/menu/personal_center_menu.xml b/app/src/main/res/menu/personal_center_menu.xml index 6df98415..99d24333 100644 --- a/app/src/main/res/menu/personal_center_menu.xml +++ b/app/src/main/res/menu/personal_center_menu.xml @@ -38,7 +38,7 @@ <item android:id="@+id/personal_center_menu_version" android:icon="@drawable/ic_baseline_layers_24" - android:title="版本:ONE_23QE4_V1.1.0_20230804_A" /> + android:title="版本:ONE_23QE4_V1.2.0_20230811_A" /> </group> <group android:checkableBehavior="single"> <item android:title="小标题"> diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 5032ca36..3c9ad1fd 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -2036,13 +2036,20 @@ </m> <m k="boundaryType" v="1"> <!--无标线无可区分边界--> - <line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.2"/> + <line dasharray="5,5" repeat-start="0" stroke="#ffffff" width="0.2"/> </m> </m> <!-- 车道边界类型 --> <m v="OMDB_LANE_MARK_BOUNDARYTYPE"> + <outline-layer id="boundary" stroke="#ffffff" width="0.1" /> + + <!--只区分虚线与实线--> + <m k="boundaryType" v="1"> + <line dasharray="5,5" repeat-start="5" stroke="#90A0BD" width="0.05"/> + </m> + <m k="boundaryType" v="2"> <!--标线--> <m k="markType" v="0|1|4|5|6|7|8"> @@ -2072,22 +2079,22 @@ <!--其他|实线--> <m k="markColor" v="1"> - <line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.1"/> + <line dasharray="5,5" repeat-start="0" stroke="#ffffff" width="0.1"/> </m> <m k="markColor" v="2"> - <line dasharray="12,6" repeat-start="0" stroke="#eccc68" width="0.1"/> + <line dasharray="5,5" repeat-start="0" stroke="#eccc68" width="0.1"/> </m> <m k="markColor" v="6"> - <line dasharray="12,6" repeat-start="0" stroke="#0000ff" width="0.1"/> + <line dasharray="5,5" repeat-start="0" stroke="#0000ff" width="0.1"/> </m> <m k="markColor" v="7"> - <line dasharray="12,6" repeat-start="0" stroke="#00ff00" width="0.1"/> + <line dasharray="5,5" repeat-start="0" stroke="#00ff00" width="0.1"/> </m> <m k="markColor" v="0|9"> - <line dasharray="12,6" repeat-start="0" stroke="#8e44ad" width="0.1"/> + <line dasharray="5,5" repeat-start="0" stroke="#8e44ad" width="0.1"/> </m> </m> @@ -2097,10 +2104,6 @@ <m k="boundaryType" v="0|3|4|5|6|7|8|9"> <line stroke="#ffffff" use="boundaryType" /> </m> - <!--只区分虚线与实线--> - <m k="boundaryType" v="1"> - <line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.1"/> - </m> </m> <!--常规点限速-->