diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index ef5df669..e5addc77 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -150,6 +150,22 @@ "zoomMin": 18, "zoomMax": 20 }, + "2092":{ + "table": "OMDB_LANE_TYPE_ACCESS", + "code": 2092, + "name": "车道类型", + "catch":true, + "zoomMin": 18, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateLaneTypeAccessS2ERefPoint()" + } + ] + }, "2201":{ "table": "OMDB_BRIDGE", "code": 2201, @@ -183,6 +199,24 @@ } ] }, + "2638":{ + "table": "OMDB_LANE_ACCESS", + "code": 2638, + "name": "通行车辆类型Lane", + "zoomMin": 15, + "zoomMax": 20, + "catch":true, + "filterData": false, + "checkLinkId": false, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateLaneAccessType()" + } + ] + }, "3001":{ "table": "OMDB_OBJECT_OH_STRUCT", "code": 3001, @@ -391,6 +425,23 @@ } ] }, + "4005": { + "table": "OMDB_LANE_SPEEDLIMIT", + "code": 4005, + "name": "车道点限速", + "zoomMin": 18, + "zoomMax": 20, + "filterData": true, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "obtainLaneSpeedLimitName()" + } + ] + }, "4006": { "table": "OMDB_RESTRICTION", "code": 4006, 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 2a26856d..f05caa67 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -236,7 +236,7 @@ class ImportOMDBHelper @AssistedInject constructor( } elementIndex += 1 dataIndex += 1 - Log.d("ImportOMDBHelper", "解析第:${index + 1}行") + Log.d("ImportOMDBHelper", "解析第:${index + 1}行---${txtFile?.name}") val map = gson.fromJson>( line, object : TypeToken>() {}.getType() @@ -754,9 +754,9 @@ class ImportOMDBHelper @AssistedInject constructor( Realm.getInstance(currentInstallTaskConfig) .insert(renderEntity) Log.d("ImportOMDBHelper", "解析===2insert") - } - if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { - listResult.add(renderEntity) + if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { + listResult.add(renderEntity) + } } } } @@ -801,6 +801,7 @@ class ImportOMDBHelper @AssistedInject constructor( if (Realm.getInstance(currentInstallTaskConfig).isInTransaction) { Realm.getInstance(currentInstallTaskConfig).cancelTransaction() } + Log.e("ImportOMDBHelper", "安装失败", e) throw e } 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 3e3c0cb7..501cc310 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -22,6 +22,7 @@ class ImportPreProcess { lateinit var cacheRdLink: Map val defaultTranslateDistance = 3.0 val testFlag: Boolean = false + var realm:Realm? = null fun checkCircleRoad(renderEntity: RenderEntity): Boolean { val linkInId = renderEntity.properties["linkIn"] val linkOutId = renderEntity.properties["linkOut"] @@ -225,6 +226,59 @@ class ImportPreProcess { insertData(listResult) } + /** + * 生成车道类型起终点参考数据 + * */ + fun generateLaneTypeAccessS2ERefPoint(renderEntity: RenderEntity) { + // 如果车道类型非常规车道(第0bit的数据),则需要生成辅助数据 + if (renderEntity.properties["laneType"]!!.toInt()>0) { + val geometry = GeometryTools.createGeometry(renderEntity.properties["geometry"]) + + val pointEnd = geometry!!.coordinates[geometry.numPoints - 1] // 获取这个geometry对应的结束点坐标 + val pointStart = geometry!!.coordinates[0] // 获取这个geometry对应的起点 + val listResult = mutableListOf() + + // 将这个起终点的线记录在数据中 + val startReference = ReferenceEntity() + startReference.renderEntityId = renderEntity.id + startReference.name = "${renderEntity.name}参考点" + startReference.code = renderEntity.code + startReference.table = renderEntity.table + startReference.zoomMin = renderEntity.zoomMin + startReference.zoomMax = renderEntity.zoomMax + startReference.taskId = renderEntity.taskId + startReference.enable = renderEntity.enable + + // 起点坐标 + startReference.geometry = + GeometryTools.createGeometry(GeoPoint(pointStart.y, pointStart.x)).toString() + startReference.properties["qi_table"] = renderEntity.table + startReference.properties["type"] = "s_2_p" + startReference.properties["geometry"] = startReference.geometry + listResult.add(startReference) + + val endReference = ReferenceEntity() + endReference.renderEntityId = renderEntity.id + endReference.name = "${renderEntity.name}参考点" + endReference.code = renderEntity.code + endReference.table = renderEntity.table + endReference.zoomMin = renderEntity.zoomMin + endReference.zoomMax = renderEntity.zoomMax + endReference.taskId = renderEntity.taskId + endReference.enable = renderEntity.enable + + // 终点坐标 + endReference.geometry = + GeometryTools.createGeometry(GeoPoint(pointEnd.y, pointEnd.x)).toString() + endReference.properties["qi_table"] = renderEntity.table + endReference.properties["type"] = "e_2_p" + endReference.properties["geometry"] = endReference.geometry + + listResult.add(endReference) + insertData(listResult) + } + } + fun generateS2EReferencePoint( renderEntity: RenderEntity, proKey: String = "", @@ -626,7 +680,7 @@ class ImportPreProcess { } // 获取最小的shape值,将其记录增加记录在properties的name属性下 if (shape != null) { - renderEntity.properties["name"] = shape["name"].toString() + renderEntity.properties["name"] = shape.optString("name", "") } else { renderEntity.properties["name"] = "" } @@ -964,4 +1018,50 @@ class ImportPreProcess { GeometryTools.createGeometry(GeoPoint(centerPoint!!.y, centerPoint.x)).toString() } } + + /** + * 生成通行车辆类型Lane的渲染名称字段 + * */ + fun generateLaneAccessType(renderEntity: RenderEntity): Boolean { + if (renderEntity.properties.containsKey("accessCharacteristic")) { + // 解析accessCharacteristic,判断是否存在指定属性 + val accessCharacteristic = renderEntity.properties["accessCharacteristic"].toString().toInt() + var str = "" + if (accessCharacteristic.and(4)>0) { + str += "公" + } + if (accessCharacteristic.and(8)>0) { + if (str.isNotEmpty()) { + str += "|" + } + str += "多" + } + if (accessCharacteristic.and(64)>0) { + if (str.isNotEmpty()) { + str += "|" + } + str += "行" + } + if (accessCharacteristic.and(128)>0) { + if (str.isNotEmpty()) { + str += "|" + } + str += "自" + } + if (str.isNotEmpty()) { + renderEntity.properties["name"] = str + return true + } + } + return false + } + + /** + * 生成车道点限速的名称 + * */ + fun obtainLaneSpeedLimitName(renderEntity: RenderEntity) { + if (renderEntity.properties.containsKey("maxSpeed")&&renderEntity.properties.containsKey("minSpeed")) { + renderEntity.properties["ref"] = "${renderEntity.properties["maxSpeed"]}|${renderEntity.properties["minSpeed"]}" + } + } } \ No newline at end of file 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 d4fac71e..6d06c911 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 @@ -193,7 +193,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? // 定位到指定位置 niMapController.mMapView.vtmMap.animator() // .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 )) - .animateTo(GeoPoint(40.0882756, 116.3033581)) + .animateTo(GeoPoint(31.205913609396507, 121.56955739056055 )) } R.id.personal_center_menu_open_all_layer -> { diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index ecd516d0..0981257d 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -2036,6 +2036,11 @@ + + + + + @@ -2058,5 +2063,27 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2092_e.svg b/collect-library/src/main/assets/omdb/icon_2092_e.svg new file mode 100644 index 00000000..96006c66 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2092_e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2092_s.svg b/collect-library/src/main/assets/omdb/icon_2092_s.svg new file mode 100644 index 00000000..83a60267 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2092_s.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4005.svg b/collect-library/src/main/assets/omdb/icon_4005.svg new file mode 100644 index 00000000..f07e08a7 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4005.svg @@ -0,0 +1 @@ + \ No newline at end of file