From 0b2b5bfe7d15745d6f5667209c7e7391b71e3237 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 5 Sep 2023 15:25:27 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E8=BD=A6=E4=BF=A1?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E9=85=8D=E7=BD=AE=E4=B8=BA=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/assets/editormarker.xml | 404 +----------------- 1 file changed, 4 insertions(+), 400 deletions(-) diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index f07dd1e2..f9cf4946 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1548,404 +1548,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2299,8 +1903,8 @@ + src="assets:omdb/icon_arrow_right.svg" symbol-height="56" + symbol-width="56"> From 1aba0b513d25cedac02fbdadc7b4ecdbd84cf464 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 5 Sep 2023 15:58:13 +0800 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E7=94=B5=E5=AD=90?= =?UTF-8?q?=E7=9C=BC=E7=B1=BB=E5=9E=8B=E9=85=8D=E7=BD=AE=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/navinfo/omqs/db/Code2NameMap.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/navinfo/omqs/db/Code2NameMap.kt b/app/src/main/java/com/navinfo/omqs/db/Code2NameMap.kt index 40a09740..1f0c3b32 100644 --- a/app/src/main/java/com/navinfo/omqs/db/Code2NameMap.kt +++ b/app/src/main/java/com/navinfo/omqs/db/Code2NameMap.kt @@ -33,7 +33,7 @@ class Code2NameMap { 29 to "鸣笛", 30 to "年检", 31 to "尾气", - 32 to "交通灯", + 32 to "ETC", 33 to "专用", 34 to "标线", 35 to "违章", From ebd70520e4a1ef2f6e3b0b095db1f09c6034ae87 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 5 Sep 2023 15:59:09 +0800 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E5=90=8C?= =?UTF-8?q?=E7=82=B9=E4=BD=8Dmarker=E9=81=BF=E8=AE=A9=E6=97=B6=E6=9C=AA?= =?UTF-8?q?=E5=8F=82=E8=80=83angle=E8=A7=92=E5=BA=A6=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/omdb_config.json | 5 ----- .../com/navinfo/omqs/db/ImportPreProcess.kt | 17 +++++++++-------- .../personalcenter/PersonalCenterFragment.kt | 2 +- collect-library/resources/rendertheme.xsd | 2 +- .../map/cluster/ClusterMarkerRenderer.kt | 4 ++-- .../library/map/handler/LayerManagerHandler.kt | 5 +++++ 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 1095b5cd..022afbb1 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -497,11 +497,6 @@ "vlib": "generateAddWidthLine()" } ] - }, - "5002":{ - "table": "OMDB_AREA", - "code": 5002, - "name": "面测试" } } }, diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt index b4160ae1..2230f6b1 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -55,7 +55,7 @@ class ImportPreProcess { )!=null) { var angle = renderEntity?.properties?.get("angle")?.toDouble()!! // angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角 - angle = (450 - angle) % 360 + angle = -((450 - angle) % 360) radian = Math.toRadians(angle) } else { var isReverse = false // 是否为逆向 @@ -129,7 +129,7 @@ class ImportPreProcess { // angle += 180 // } // angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角 - angle = (450 - angle) % 360 + angle = -((450 - angle) % 360) radian = Math.toRadians(angle) } else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) { var coordinates = geometry.coordinates @@ -300,7 +300,7 @@ class ImportPreProcess { "angle" )?.toDouble()!! // angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角 - angle = (450 - angle) % 360 + angle = -((450 - angle) % 360) radian = Math.toRadians(angle) } else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) { var coordinates = geometry.coordinates @@ -324,7 +324,7 @@ class ImportPreProcess { } } else renderEntity?.properties?.get("angle")?.toDouble()!! - angle = (450 - angle) % 360 + angle = -((450 - angle) % 360) radian = Math.toRadians(angle) } @@ -451,9 +451,10 @@ class ImportPreProcess { referenceEntity.properties["currentDirect"] = laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_") referenceEntity.properties["currentType"] = - laneInfoTypeArray[i].toString().split(",").distinct().joinToString("_") + laneInfoTypeArray[i].toString() + val type = if (referenceEntity.properties["currentType"]=="0") "normal" else if (referenceEntity.properties["currentType"]=="1") "extend" else "bus" referenceEntity.properties["symbol"] = - "assets:omdb/4601/bus/1301_" + referenceEntity.properties["currentDirect"] + ".svg" + "assets:omdb/4601/${type}/1301_${referenceEntity.properties["currentDirect"]}.svg" Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString()) Realm.getDefaultInstance().insert(referenceEntity) } @@ -687,7 +688,7 @@ class ImportPreProcess { "angle" )?.toDouble()!! // angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角 - angle = (450 - angle) % 360 + angle = -((450 - angle) % 360) radian = Math.toRadians(angle) } else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) { var coordinates = geometry.coordinates @@ -708,7 +709,7 @@ class ImportPreProcess { } } else renderEntity?.properties?.get("angle")?.toDouble()!! - angle = (450 - angle) % 360 + angle = -((450 - angle) % 360) radian = Math.toRadians(angle) } 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 58c38c44..90fa5f37 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 @@ -129,7 +129,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? // 定位到指定位置 niMapController.mMapView.vtmMap.animator() // .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 )) - .animateTo(GeoPoint( 40.50755634913162,115.80235967728436 )) + .animateTo(GeoPoint(40.51850916836801,115.78801387178642)) } R.id.personal_center_menu_open_all_layer -> { MapParamUtils.setDataLayerEnum(DataLayerEnum.SHOW_ALL_LAYERS) diff --git a/collect-library/resources/rendertheme.xsd b/collect-library/resources/rendertheme.xsd index 9f23ffe0..656b3da1 100644 --- a/collect-library/resources/rendertheme.xsd +++ b/collect-library/resources/rendertheme.xsd @@ -257,7 +257,7 @@ - + diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerRenderer.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerRenderer.kt index f9943757..c1e05e98 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerRenderer.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerRenderer.kt @@ -317,7 +317,7 @@ open class ClusterMarkerRenderer : MarkerRenderer { // this item will act as a cluster, just use a proper bitmap // depending on cluster size, instead of its marker val bitmap = getClusterBitmap(it.clusterSize + 1) - s.set(it.x, it.y, bitmap, true, false, 0f) + s.set(it.x, it.y, bitmap, true, false, 0f, 0f) s.offset = PointF(0.5f, 0.5f) s.billboard = true // could be a parameter } else { @@ -325,7 +325,7 @@ open class ClusterMarkerRenderer : MarkerRenderer { var symbol: MarkerSymbol? = it.item.marker if (symbol == null) symbol = mDefaultMarker symbol?.let { symbol -> - s.set(it.x, it.y, symbol.bitmap, true, false, 0f) + s.set(it.x, it.y, symbol.bitmap, true, false, 0f, 0f) s.offset = symbol.hotspot s.billboard = symbol.isBillboard } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt index ff17f5f2..ae09bfd5 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt @@ -15,6 +15,7 @@ import okhttp3.Cache import okhttp3.OkHttpClient import org.oscim.android.theme.AssetsRenderTheme import org.oscim.layers.GroupLayer +import org.oscim.layers.TileGridLayer import org.oscim.layers.tile.buildings.BuildingLayer import org.oscim.layers.tile.vector.VectorTileLayer import org.oscim.layers.tile.vector.labeling.LabelLayer @@ -55,6 +56,7 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, traceP private lateinit var omdbReferenceTileLayer: VectorTileLayer private lateinit var omdbLabelLayer: LabelLayer private lateinit var omdbReferenceLabelLayer: LabelLayer + private lateinit var tileGridLayer: TileGridLayer // 用来显示tile号的layer private val omdbTileSource by lazy { OMDBTileSource() } private val omdbReferenceTileSource by lazy { OMDBReferenceTileSource() } @@ -141,6 +143,9 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, traceP // 向两个Vector图层增加hook钩子,加载数据前对style或数据进行二次处理 omdbVectorTileLayer.addHook(navinfoTileThemeHook) omdbReferenceTileLayer.addHook(navinfoTileThemeHook) + // 添加显示grid的tile号的图层 + tileGridLayer = TileGridLayer(mMapView.vtmMap) + addLayer(tileGridLayer, NIMapView.LAYER_GROUPS.OPERATE_MARKER) } private fun resetOMDBVectorTileLayer() { From b1e5e308801e7d92ef8ccd03518565869c6a2bf9 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 5 Sep 2023 16:58:46 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E4=BA=8B=E5=8A=A1=E6=8F=90=E4=BA=A4=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/navinfo/omqs/db/ImportOMDBHelper.kt | 16 +++++++++------- vtm | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt index f1c962cc..b3075f93 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -168,14 +168,15 @@ class ImportOMDBHelper @AssistedInject constructor( // 遍历解压后的文件,读取该数据返回 for (importConfig in importConfigList) { + val realm = Realm.getDefaultInstance() try { for ((index, currentEntry) in importConfig.tableMap.entries.withIndex()) { + realm.beginTransaction() val currentConfig = currentEntry.value val txtFile = unZipFiles.find { it.name == currentConfig.table } // 将listResult数据插入到Realm数据库中 - val realm = Realm.getDefaultInstance() val listResult = mutableListOf() currentConfig?.let { val list = FileIOUtils.readFile2List(txtFile, "UTF-8") @@ -619,24 +620,25 @@ class ImportOMDBHelper @AssistedInject constructor( } } listResult.add(renderEntity) + realm.insert(renderEntity) } } } } - // 1个文件发送一次flow流 - emit("${++processIndex}/${tableNum}") - realm.beginTransaction() - realm.insert(listResult) - realm.commitTransaction() - realm.close() // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 if (currentConfig.table == "OMDB_RD_LINK") { importConfig.preProcess.cacheRdLink = listResult.associateBy { it.properties["linkPid"] } } + realm.commitTransaction() + // 1个文件发送一次flow流 + emit("${++processIndex}/${tableNum}") } } catch (e: Exception) { + realm.cancelTransaction() throw e + } finally { + realm.close() } } emit("finish") diff --git a/vtm b/vtm index 985dc0a0..a087521b 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 985dc0a0d590ef6f6784ee2ee5c1c148dff1c46d +Subproject commit a087521b6e1b312d7ed2bdf20f83b0e674fad9b5 From ab266bce3e68f478db44294e35157821ca33ef7c Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Wed, 6 Sep 2023 09:31:07 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9realm=E6=8F=92?= =?UTF-8?q?=E5=85=A5=E5=A4=A7=E9=87=8F=E6=95=B0=E6=8D=AEOOM=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/navinfo/omqs/db/ImportOMDBHelper.kt | 60 +++++++++---------- .../com/navinfo/omqs/db/ImportPreProcess.kt | 34 +++++------ 2 files changed, 46 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt index b3075f93..c7b0cbdd 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -177,7 +177,7 @@ class ImportOMDBHelper @AssistedInject constructor( it.name == currentConfig.table } // 将listResult数据插入到Realm数据库中 - val listResult = mutableListOf() +// val listResult = mutableListOf() currentConfig?.let { val list = FileIOUtils.readFile2List(txtFile, "UTF-8") Log.d("ImportOMDBHelper", "开始解析:${txtFile?.name}") @@ -332,28 +332,28 @@ class ImportOMDBHelper @AssistedInject constructor( } } - //交限增加相同LinkIn与LinkOut过滤原则 - if (renderEntity.code == DataCodeEnum.OMDB_RESTRICTION.code) { - if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( - "linkOut" - ) - ) { - var linkIn = renderEntity.properties["linkIn"] - var linkOut = renderEntity.properties["linkOut"] - if (linkIn != null && linkOut != null) { - var checkMsg = "$linkIn$linkOut" - if (resHashMap.containsKey(checkMsg)) { - Log.e( - "qj", - "${renderEntity.name}==过滤交限linkin与linkout相同且存在多条数据" - ) - continue - } else { - resHashMap.put(checkMsg, renderEntity) - } - } - } - } +// //交限增加相同LinkIn与LinkOut过滤原则 +// if (renderEntity.code == DataCodeEnum.OMDB_RESTRICTION.code) { +// if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( +// "linkOut" +// ) +// ) { +// var linkIn = renderEntity.properties["linkIn"] +// var linkOut = renderEntity.properties["linkOut"] +// if (linkIn != null && linkOut != null) { +// var checkMsg = "$linkIn$linkOut" +// if (resHashMap.containsKey(checkMsg)) { +// Log.e( +// "qj", +// "${renderEntity.name}==过滤交限linkin与linkout相同且存在多条数据" +// ) +// continue +// } else { +// resHashMap.put(checkMsg, renderEntity) +// } +// } +// } +// } //遍历判断只显示与任务Link相关的任务数据 if (currentConfig.checkLinkId) { @@ -619,17 +619,17 @@ class ImportOMDBHelper @AssistedInject constructor( renderEntity.properties["startTime"] = "null" } } - listResult.add(renderEntity) +// listResult.add(renderEntity) realm.insert(renderEntity) } } } } - // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 - if (currentConfig.table == "OMDB_RD_LINK") { - importConfig.preProcess.cacheRdLink = - listResult.associateBy { it.properties["linkPid"] } - } +// // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 +// if (currentConfig.table == "OMDB_RD_LINK") { +// importConfig.preProcess.cacheRdLink = +// listResult.associateBy { it.properties["linkPid"] } +// } realm.commitTransaction() // 1个文件发送一次flow流 emit("${++processIndex}/${tableNum}") @@ -637,8 +637,6 @@ class ImportOMDBHelper @AssistedInject constructor( } catch (e: Exception) { realm.cancelTransaction() throw e - } finally { - realm.close() } } emit("finish") diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt index 276e76f8..cf2396e8 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -20,23 +20,23 @@ class ImportPreProcess { val defaultTranslateDistance = 3.0 val testFlag:Boolean = true fun checkCircleRoad(renderEntity: RenderEntity): Boolean { - val linkInId = renderEntity.properties["linkIn"] - val linkOutId = renderEntity.properties["linkOut"] - // 根据linkIn和linkOut获取对应的link数据 - val linkInEntity = cacheRdLink[linkInId] - val linkOutEntity = cacheRdLink[linkOutId] - Log.d( - "checkCircleRoad", - "LinkInEntity: ${linkInId}- ${linkInEntity?.properties?.get("snodePid")},LinkOutEntity: ${linkOutId}- ${ - linkOutEntity?.properties?.get("enodePid") - }" - ) - // 查询linkIn的sNode和linkOut的eNode是否相同,如果相同,认为数据是环形路口,返回false - if (linkInEntity != null && linkOutEntity != null) { - if (linkInEntity.properties["snodePid"] == linkOutEntity.properties["enodePid"] || linkInEntity.properties["enodePid"] == linkOutEntity.properties["snodePid"] || linkInEntity.properties["snodePid"] == linkOutEntity.properties["snodePid"] || linkInEntity.properties["enodePid"] == linkOutEntity.properties["enodePid"]) { - return false - } - } +// val linkInId = renderEntity.properties["linkIn"] +// val linkOutId = renderEntity.properties["linkOut"] +// // 根据linkIn和linkOut获取对应的link数据 +// val linkInEntity = cacheRdLink[linkInId] +// val linkOutEntity = cacheRdLink[linkOutId] +// Log.d( +// "checkCircleRoad", +// "LinkInEntity: ${linkInId}- ${linkInEntity?.properties?.get("snodePid")},LinkOutEntity: ${linkOutId}- ${ +// linkOutEntity?.properties?.get("enodePid") +// }" +// ) +// // 查询linkIn的sNode和linkOut的eNode是否相同,如果相同,认为数据是环形路口,返回false +// if (linkInEntity != null && linkOutEntity != null) { +// if (linkInEntity.properties["snodePid"] == linkOutEntity.properties["enodePid"] || linkInEntity.properties["enodePid"] == linkOutEntity.properties["snodePid"] || linkInEntity.properties["snodePid"] == linkOutEntity.properties["snodePid"] || linkInEntity.properties["enodePid"] == linkOutEntity.properties["enodePid"]) { +// return false +// } +// } return true }