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>
 
         <!--常规点限速-->