diff --git a/.gitmodules b/.gitmodules index 48596a20..38527a15 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "vtm"] path = vtm - url = git@github.com:xiaoyan159/vtm.git - branch = master + url = git@gitee.com:navinfo-mobile/vtm.git + branch = navinfo diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 95339a0a..5dd373d9 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -101,7 +101,7 @@ "code": 2017, "name": "道路施工", "catch": true, - "checkLinkId": false, + "checkLinkId": true, "zoomMin": 15, "zoomMax": 17 }, @@ -166,11 +166,38 @@ "zoomMin": 15, "zoomMax": 17 }, + "2070": { + "table": "OMDB_LINK_SEPARATION", + "code": 2070, + "name": "设施分离", + "zoomMin": 18, + "zoomMax": 20, + "filterData": true, + "catch": true + }, + "2071": { + "table": "OMDB_LINK_MEDIAN", + "code": 2071, + "name": "中央隔离带", + "zoomMin": 18, + "zoomMax": 20, + "isDependOnOtherTable": true, + "filterData": true, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateLinkMedianToPolygon()" + } + ] + }, "2083": { "table": "OMDB_RDBOUND_BOUNDARYTYPE", "code": 2083, "name": "道路边界类型", - "checkLinkId": false, + "checkLinkId": true, "filterData": true, "zoomMin": 18, "zoomMax": 20, @@ -263,7 +290,7 @@ "zoomMax": 20, "catch": true, "filterData": false, - "checkLinkId": false, + "checkLinkId": true, "transformer": [ { "k": "geometry", @@ -280,7 +307,7 @@ "zoomMin": 15, "zoomMax": 20, "catch": true, - "checkLinkId": false, + "checkLinkId": true, "transformer": [ { "k": "geometry", @@ -297,14 +324,14 @@ "zoomMin": 18, "zoomMax": 20, "catch": true, - "checkLinkId": false, + "checkLinkId": true, "transformer": [] }, "3003": { "table": "OMDB_OBJECT_SYMBOL", "code": 3003, "name": "符号", - "checkLinkId": false, + "checkLinkId": true, "zoomMin": 18, "zoomMax": 20, "catch": true, @@ -314,7 +341,7 @@ "table": "OMDB_OBJECT_ARROW", "code": 3004, "name": "箭头", - "checkLinkId": false, + "checkLinkId": true, "zoomMin": 18, "zoomMax": 20, "catch": true, @@ -331,10 +358,11 @@ "table": "OMDB_TRAFFIC_SIGN", "code": 3005, "name": "交通标牌", - "zoomMin": 18, + "zoomMin": 17, "zoomMax": 20, "is3D": true, "catch": true, + "checkLinkId": true, "transformer": [ { "k": "geometry", @@ -362,12 +390,58 @@ } ] }, + "3007": { + "table": "OMDB_OBJECT_WARNING_AREA", + "code": 3007, + "name": "警示区", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20 + }, + "3009": { + "table": "OMDB_OBJECT_BARRIER", + "code": 3009, + "name": "护栏", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateMulToLine()" + } + ] + }, + "3010": { + "table": "OMDB_OBJECT_WALL", + "code": 3010, + "name": "平行墙", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateMulToLine()" + } + ] + }, "3012": { "table": "OMDB_FILL_AREA", "code": 3012, "name": "导流区", "catch": true, - "checkLinkId": false, + "checkLinkId": true, "zoomMin": 18, "zoomMax": 20 }, @@ -376,7 +450,7 @@ "code": 3014, "name": "人行横道", "catch": true, - "checkLinkId": false, + "checkLinkId": true, "zoomMin": 18, "zoomMax": 20 }, @@ -384,18 +458,28 @@ "table": "OMDB_OBJECT_STOPLOCATION", "code": 3016, "name": "停止位置", - "checkLinkId": false, + "checkLinkId": true, "filterData": true, "zoomMin": 18, "catch": true, "zoomMax": 20 }, - "3027": { + "3019": { + "table": "OMDB_OBJECT_CURB", + "code": 3019, + "name": "路牙", + "checkLinkId": true, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20 + }, + "3028": { "table": "OMDB_OBJECT_REFUGE_ISLAND", - "code": 3027, + "code": 3028, "name": "路口内交通岛", "catch": true, - "checkLinkId": false, + "checkLinkId": true, "zoomMin": 18, "zoomMax": 20 }, @@ -447,6 +531,12 @@ "v": "~", "klib": "geometry", "vlib": "generateDirectReferenceLine()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "createSpeedLimitText()" } ] }, @@ -463,6 +553,12 @@ "v": "0|", "klib": "maxSpeed", "vlib": "限" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "createSpeedLimitText()" } ] }, @@ -491,6 +587,12 @@ "v": "3", "klib": "ref", "vlib": "上" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "createSpeedLimitText()" } ] }, @@ -630,7 +732,7 @@ "zoomMax": 20, "filterData": true, "catch": true, - "checkLinkId": false, + "checkLinkId": true, "transformer": [ { "k": "geometry", @@ -666,6 +768,7 @@ "name": "车信", "catch": true, "isDependOnOtherTable": false, + "checkLinkId": true, "zoomMin": 15, "zoomMax": 17, "transformer": [ @@ -695,7 +798,7 @@ "name": "车道中心线", "catch": false, "isDependOnOtherTable": false, - "checkLinkId": false, + "checkLinkId": true, "zoomMin": 18, "zoomMax": 20, "transformer": [ 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 cce06421..f0d8cee0 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -194,7 +194,8 @@ class ImportPreProcess { val coord = Coordinate(point.getX() - dx, point.getY() - dy) // 将这个点记录在数据中 - val geometryTranslate: Geometry = GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y)) + val geometryTranslate: Geometry = + GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y)) renderEntity.geometry = geometryTranslate.toString() } @@ -237,7 +238,8 @@ class ImportPreProcess { GeometryTools.createLineString(arrayOf(pointStart, pointEnd)).toString() startEndReference.properties["qi_table"] = renderEntity.table startEndReference.properties["type"] = "s_2_e" - startEndReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startEndReference.properties)) + startEndReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(startEndReference.properties)) renderEntity.referenceEntitys.add(startEndReference) } @@ -281,12 +283,13 @@ class ImportPreProcess { startReference.geometry = GeometryTools.createGeometry(GeoPoint(pointStart.y, pointStart.x)).toString() startReference.properties["qi_table"] = renderEntity.table - startReference.properties["type"] = "s${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000)>0) "_dec" else "_acc"}" + startReference.properties["type"] = + "s${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}" startReference.properties["geometry"] = startReference.geometry - listResult.add(startReference) + startReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startReference.properties)) + renderEntity.referenceEntitys.add(startReference) val endReference = ReferenceEntity() -// endReference.renderEntityId = renderEntity.id endReference.name = "${renderEntity.name}参考点" endReference.code = renderEntity.code endReference.table = renderEntity.table @@ -299,11 +302,11 @@ class ImportPreProcess { endReference.geometry = GeometryTools.createGeometry(GeoPoint(pointEnd.y, pointEnd.x)).toString() endReference.properties["qi_table"] = renderEntity.table - endReference.properties["type"] = "e${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000)>0) "_dec" else "_acc"}" + endReference.properties["type"] = + "e${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}" endReference.properties["geometry"] = endReference.geometry + endReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(endReference.properties)) renderEntity.referenceEntitys.add(endReference) - //listResult.add(endReference) - //insertData(listResult) } } @@ -351,7 +354,8 @@ class ImportPreProcess { Log.e("qj", "generateS2EReferencePoint===${startReference.geometry}") startReference.properties["geometry"] = startReference.geometry - startReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startReference.properties)) + startReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(startReference.properties)) listResult.add(startReference) Log.e("qj", "generateS2EReferencePoint===1") @@ -385,7 +389,8 @@ class ImportPreProcess { Log.e("qj", "generateS2EReferencePoint===e_2_p${renderEntity.name}") } endReference.properties["geometry"] = endReference.geometry - endReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(endReference.properties)) + endReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(endReference.properties)) renderEntity.referenceEntitys.add(endReference) Log.e("qj", "generateS2EReferencePoint===4") } @@ -482,7 +487,8 @@ class ImportPreProcess { WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd))) angleReference.properties["qi_table"] = renderEntity.table angleReference.properties["type"] = "angle" - angleReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties)) + angleReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties)) renderEntity.referenceEntitys.add(angleReference) } Log.e("qj", "generateDirectReferenceLine===1") @@ -598,21 +604,21 @@ class ImportPreProcess { if (listResult.size > 0) { insertData(listResult) } - }else if(boundaryType.toInt() == 9){//根据线型平分为点数据,用于渲染3D标 + } else if (boundaryType.toInt() == 9) {//根据线型平分为点数据,用于渲染3D标 dengfenLineString(renderEntity) } } } } - fun dengfenLineString(renderEntity: RenderEntity){ - if (renderEntity.code == DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code||renderEntity.code == DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code){ + fun dengfenLineString(renderEntity: RenderEntity) { + if (renderEntity.code == DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code || renderEntity.code == DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code) { val boundaryType = renderEntity.properties["boundaryType"] if (boundaryType != null) { - if(boundaryType.toInt()==9){ - Log.e("qj","杆状物转换开始") - val geopointList = GeometryTools.getLineToDengGeoPints(renderEntity.wkt,5.0) - geopointList.forEach{ + if (boundaryType.toInt() == 9) { + Log.e("qj", "杆状物转换开始") + val geopointList = GeometryTools.getLineToDengGeoPints(renderEntity.wkt, 5.0) + geopointList.forEach { val referenceEntity = ReferenceEntity() referenceEntity.name = "${renderEntity.name}线转点坐标" referenceEntity.table = renderEntity.table @@ -625,10 +631,11 @@ class ImportPreProcess { referenceEntity.zoomMax = renderEntity.zoomMax referenceEntity.taskId = renderEntity.taskId referenceEntity.enable = renderEntity.enable - referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties)) + referenceEntity.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties)) renderEntity.referenceEntitys.add(referenceEntity) } - Log.e("qj","杆状物转换结束") + Log.e("qj", "杆状物转换结束") } } } @@ -648,42 +655,51 @@ class ImportPreProcess { // 分别获取两个数组中的数据,取第一个作为主数据,另外两个作为辅助渲染数据 val laneInfoDirectArray = JSONArray(laneinfoGroup[0].toString()) val laneInfoTypeArray = JSONArray(laneinfoGroup[1].toString()) - val listResult = mutableListOf() + val referenceEntity = ReferenceEntity() + referenceEntity.name = "${renderEntity.name}参考方向" + referenceEntity.table = renderEntity.table + referenceEntity.enable = renderEntity.enable + referenceEntity.code = renderEntity.code + referenceEntity.taskId = renderEntity.taskId + referenceEntity.zoomMin = renderEntity.zoomMin + referenceEntity.zoomMax = renderEntity.zoomMax + // 与原数据使用相同的geometry + referenceEntity.geometry = GeometryTools.createGeometry(renderEntity.geometry).toString() + referenceEntity.properties["qi_table"] = renderEntity.table + referenceEntity.properties["symbol"] = "true" for (i in 0 until laneInfoDirectArray.length()) { - // 根据后续的数据生成辅助表数据 - val referenceEntity = ReferenceEntity() -// referenceEntity.renderEntityId = renderEntity.id - referenceEntity.name = "${renderEntity.name}参考方向" - referenceEntity.table = renderEntity.table - referenceEntity.enable = renderEntity.enable - referenceEntity.code = renderEntity.code - referenceEntity.taskId = renderEntity.taskId - referenceEntity.zoomMin = renderEntity.zoomMin - referenceEntity.zoomMax = renderEntity.zoomMax - // 与原数据使用相同的geometry - referenceEntity.geometry = renderEntity.geometry - referenceEntity.properties["qi_table"] = renderEntity.table - referenceEntity.properties["currentDirect"] = + val currentDirect = laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_") - referenceEntity.properties["currentType"] = + val currentType = 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/${type}/1301_${referenceEntity.properties["currentDirect"]}.svg" - Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString()) - referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties)) - renderEntity.referenceEntitys.add(referenceEntity) - Log.e("qj", "车信===插入车信箭头") + if (currentType == "0") "normal" else if (currentType == "1") "extend" else "bus" + val symbol = + "assets:omdb/4601/${type}/1301_${currentDirect}.svg" + referenceEntity.properties["img-src"] = if(referenceEntity.properties["img-src"].isNullOrEmpty()) symbol else "${referenceEntity.properties["img-src"]}|${symbol}" + + //listResult.add(referenceEntity) +// if (referenceEntity.properties["currentType"] == "0") "normal" else if (referenceEntity.properties["currentType"] == "1") "extend" else "bus" +// referenceEntity.properties["symbol"] = +// "assets:omdb/4601/${type}/1301_${referenceEntity.properties["currentDirect"]}.svg" +// Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString()) +// referenceEntity.propertiesDb = +// DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties)) +// renderEntity.referenceEntitys.add(referenceEntity) +// Log.e("qj", "车信===插入车信箭头") } + referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties)) + renderEntity.referenceEntitys?.add(referenceEntity) + //insertData(listResult) } //将主表线转化为单个点,按点要素实现捕捉 if (Geometry.TYPENAME_LINESTRING == renderEntity.wkt?.geometryType) { var coordinates = renderEntity.wkt?.coordinates - if(coordinates!=null){ + if (coordinates != null) { val p1: Coordinate = coordinates[0] - renderEntity.geometry = GeometryTools.createGeometry(GeoPoint(p1.y,p1.x)).toString() + renderEntity.geometry = + GeometryTools.createGeometry(GeoPoint(p1.y, p1.x)).toString() } } @@ -775,30 +791,77 @@ class ImportPreProcess { * 生成车道中心线面宽度 * */ fun generateAddWidthLine(renderEntity: RenderEntity) { - var newTime = 0L // 添加车道中心面渲染原则,根据车道宽度进行渲染 val angleReference = ReferenceEntity() - // angleReference.renderEntityId = renderEntity.id angleReference.name = "${renderEntity.name}车道中线面" angleReference.table = renderEntity.table angleReference.code = renderEntity.code -// Log.e("jingo", "几何转换开始") - //angleReference.geometry = renderEntity.geometry - angleReference.geometry = GeometryTools.computeLine(0.000035,0.000035,renderEntity.geometry) -// Log.e("jingo", "几何转换结束") + angleReference.geometry = + GeometryTools.computeLine(0.000035, 0.000035, renderEntity.geometry) angleReference.properties["qi_table"] = renderEntity.table angleReference.properties["widthProperties"] = "3" angleReference.zoomMin = renderEntity.zoomMin angleReference.zoomMax = renderEntity.zoomMax angleReference.taskId = renderEntity.taskId angleReference.enable = renderEntity.enable - val listResult = mutableListOf() - angleReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties)) + angleReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties)) renderEntity.referenceEntitys.add(angleReference) - //listResult.add(angleReference) - //insertData(listResult) } + /** + * 中央隔离带根据线几何生成面 + * */ + fun generateLinkMedianToPolygon(renderEntity: RenderEntity) { + if (renderEntity.code == DataCodeEnum.OMDB_LINK_MEDIAN.code) { + if (renderEntity.properties.containsKey("side") && renderEntity.properties.containsKey("median") && renderEntity.properties.containsKey( + "medianSurface" + ) && renderEntity.properties.containsKey("medianWidth")&& renderEntity.properties.containsKey("direct") + ) { + //基于通行方向左右 0 左侧 1 右侧 (双方向不制作) + val side = renderEntity.properties["side"] + //1有中央隔离带,不与任何护栏共存 2有中央隔离带,与非固定护栏共存 + val median = renderEntity.properties["median"]?.toInt() + //0 未铺设 1 铺设 2 混合 + var medianSurface = renderEntity.properties["medianSurface"]?.toInt() + if(median==2){ + medianSurface = 3 + medianSurface!! + } + //宽度 + val medianWidth = renderEntity.properties["medianWidth"]?.toDouble() + // 添加车道中心面渲染原则,根据车道宽度进行渲染 + val angleReference = ReferenceEntity() + //方向 0\1\2顺方向 3逆方向 + when(renderEntity.properties["direct"]?.toInt()){ + 0,1,2->{ + if (medianWidth != null) { + angleReference.geometry = + GeometryTools.computeLine(0.000012, 0.0, renderEntity.geometry) + } + } + 3->{ + if (medianWidth != null) { + angleReference.geometry = + GeometryTools.computeLine(0.0, 0.000012, renderEntity.geometry) + } + } + } + angleReference.name = "${renderEntity.name}面" + angleReference.table = renderEntity.table + angleReference.code = renderEntity.code + angleReference.properties["qi_table"] = renderEntity.table + angleReference.properties["medianSurface"] = medianSurface.toString() + angleReference.zoomMin = renderEntity.zoomMin + angleReference.zoomMax = renderEntity.zoomMax + angleReference.taskId = renderEntity.taskId + angleReference.enable = renderEntity.enable + angleReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties)) + renderEntity.referenceEntitys.add(angleReference) + } + + } + } /** * 生成默认路口数据的参考数据 @@ -825,7 +888,8 @@ class ImportPreProcess { GeometryTools.createGeometry(nodeJSONObject["geometry"].toString()).toString() intersectionReference.properties["qi_table"] = renderEntity.table intersectionReference.properties["type"] = "node" - intersectionReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(intersectionReference.properties)) + intersectionReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(intersectionReference.properties)) renderEntity.referenceEntitys.add(intersectionReference) //listResult.add(intersectionReference) } @@ -838,13 +902,13 @@ class ImportPreProcess { * */ fun sortGeometry(renderEntity: RenderEntity) { // 路口数据的其他点位,是保存在nodeList对应的数组下 -/* if (renderEntity.properties.containsKey("linkPid")) { - val linkList = renderEntity.properties["linkPid"]?.split(",") - //几何较少时需要判断是否要计算判断长短边 - if(linkList!=null&&linkList.size<3){ + /* if (renderEntity.properties.containsKey("linkPid")) { + val linkList = renderEntity.properties["linkPid"]?.split(",") + //几何较少时需要判断是否要计算判断长短边 + if(linkList!=null&&linkList.size<3){ - } - }*/ + } + }*/ } @@ -1011,7 +1075,8 @@ class ImportPreProcess { dynamicSrcReference.properties["type"] = "dynamicSrc" val code = renderEntity.properties[codeName] dynamicSrcReference.properties["src"] = "${prefix}${code}${suffix}" - dynamicSrcReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(dynamicSrcReference.properties)) + dynamicSrcReference.propertiesDb = + DeflaterUtil.zipString(JSON.toJSONString(dynamicSrcReference.properties)) renderEntity.referenceEntitys.add(dynamicSrcReference) //listResult.add(dynamicSrcReference) } @@ -1120,24 +1185,25 @@ class ImportPreProcess { fun generateLaneAccessType(renderEntity: RenderEntity): Boolean { if (renderEntity.properties.containsKey("accessCharacteristic")) { // 解析accessCharacteristic,判断是否存在指定属性 - val accessCharacteristic = renderEntity.properties["accessCharacteristic"].toString().toInt() + val accessCharacteristic = + renderEntity.properties["accessCharacteristic"].toString().toInt() var str = "" - if (accessCharacteristic.and(4)>0) { + if (accessCharacteristic.and(0b100)>0) { str += "公" } - if (accessCharacteristic.and(8)>0) { + if (accessCharacteristic.and(0b1000)>0) { if (str.isNotEmpty()) { str += "|" } - str += "多" + str += "HOV" } - if (accessCharacteristic.and(64)>0) { + if (accessCharacteristic.and(0b1000000)>0) { if (str.isNotEmpty()) { str += "|" } str += "行" } - if (accessCharacteristic.and(128)>0) { + if (accessCharacteristic.and(0b10000000)>0) { if (str.isNotEmpty()) { str += "|" } @@ -1155,8 +1221,9 @@ class ImportPreProcess { * 生成车道点限速的名称 * */ fun obtainLaneSpeedLimitName(renderEntity: RenderEntity) { - if (renderEntity.properties.containsKey("maxSpeed")&&renderEntity.properties.containsKey("minSpeed")) { - renderEntity.properties["ref"] = "${renderEntity.properties["maxSpeed"]}|${renderEntity.properties["minSpeed"]}" + if (renderEntity.properties.containsKey("maxSpeed") && renderEntity.properties.containsKey("minSpeed")) { + renderEntity.properties["ref"] = + "${renderEntity.properties["maxSpeed"]}|${renderEntity.properties["minSpeed"]}" } } @@ -1164,7 +1231,7 @@ class ImportPreProcess { * 生成立交的辅助图层数据 * */ fun obtainZLevelReference(renderEntity: RenderEntity) { - if(renderEntity!=null&&renderEntity.properties.containsKey("zlevelList")) { + if (renderEntity != null && renderEntity.properties.containsKey("zlevelList")) { // 获取ZLevelList数据 val zLevelList = JSONArray(renderEntity.properties["zlevelList"]) for (i in 0 until zLevelList.length()) { @@ -1173,7 +1240,8 @@ class ImportPreProcess { val startEnd = zLevelObject.optInt("startEnd", 0) val zLevel = zLevelObject.optInt("zlevel", 0) val shpSeqNum = zLevelObject.optInt("shpSeqNum", 0) - val linkGeometry = GeometryTools.createGeometry(zLevelObject.optString("linkGeometry")) + val linkGeometry = + GeometryTools.createGeometry(zLevelObject.optString("linkGeometry")) val coordinates = linkGeometry!!.coordinates val referenceEntityList = mutableListOf() // 判断当前数据的startEnd,如果是0则向前和向后都绘制线,如果是1(起点)则只绘制前两个点组成的线,如果是2(终点)则只绘制后两个点组成的线 @@ -1182,35 +1250,47 @@ class ImportPreProcess { zLevelReference.properties["type"] = "zlevelLine" // zLevelReference.properties["name"] = zLevel.toString() // 根据shpSeqNum获取对应的点位 - if (shpSeqNum < coordinates.size-1) { + if (shpSeqNum < coordinates.size - 1) { val currentCoordinate = coordinates[shpSeqNum] - var nextCoordinate = coordinates[shpSeqNum+1] + var nextCoordinate = coordinates[shpSeqNum + 1] // 计算两个点的距离,如果小于指定阈值,程序按照方向计算延长线 // if (GeometryTools.getDistance(currentCoordinate.y, currentCoordinate.x, nextCoordinate.y, nextCoordinate.x) < 3.0) { - // 获取当前点到下一个点的线方向 - val angle = Angle.angle(currentCoordinate, nextCoordinate) - // 计算偏移距离 - val dx: Double = GeometryTools.convertDistanceToDegree( - 3.0, - currentCoordinate.y!! - ) * Math.cos(angle) - val dy: Double = GeometryTools.convertDistanceToDegree( - 3.0, - currentCoordinate.y!! - ) * Math.sin(angle) + // 获取当前点到下一个点的线方向 + val angle = Angle.angle(currentCoordinate, nextCoordinate) + // 计算偏移距离 + val dx: Double = GeometryTools.convertDistanceToDegree( + 3.0, + currentCoordinate.y!! + ) * Math.cos(angle) + val dy: Double = GeometryTools.convertDistanceToDegree( + 3.0, + currentCoordinate.y!! + ) * Math.sin(angle) - // 计算偏移后的点 - nextCoordinate = - Coordinate(currentCoordinate.getX() + dx, currentCoordinate.getY() + dy) + // 计算偏移后的点 + nextCoordinate = + Coordinate(currentCoordinate.getX() + dx, currentCoordinate.getY() + dy) // } - zLevelReference.geometry = GeometryTools.createLineString(arrayListOf(GeoPoint(currentCoordinate.y, currentCoordinate.x), GeoPoint(nextCoordinate.y, nextCoordinate.x))).toString() + zLevelReference.geometry = GeometryTools.createLineString( + arrayListOf( + GeoPoint( + currentCoordinate.y, + currentCoordinate.x + ), GeoPoint(nextCoordinate.y, nextCoordinate.x) + ) + ).toString() referenceEntityList.add(zLevelReference) val zLevelNameReference = createZLevelReference(renderEntity) zLevelNameReference.properties["type"] = "zlevelName" zLevelNameReference.properties["name"] = zLevel.toString() - zLevelNameReference.geometry = GeometryTools.createGeometry(GeoPoint(nextCoordinate.y, nextCoordinate.x)).toString() + zLevelNameReference.geometry = GeometryTools.createGeometry( + GeoPoint( + nextCoordinate.y, + nextCoordinate.x + ) + ).toString() referenceEntityList.add(zLevelNameReference) } } @@ -1220,34 +1300,43 @@ class ImportPreProcess { zLevelReference.properties["type"] = "zlevelLine" // zLevelReference.properties["name"] = zLevel.toString() // 根据shpSeqNum获取对应的点位 - if (shpSeqNum < coordinates.size&&shpSeqNum>0) { + if (shpSeqNum < coordinates.size && shpSeqNum > 0) { val currentCoordinate = coordinates[shpSeqNum] - var preCoordinate = coordinates[shpSeqNum-1] + var preCoordinate = coordinates[shpSeqNum - 1] // 计算两个点的距离,如果小于指定阈值,程序按照方向计算延长线 // if (GeometryTools.getDistance(currentCoordinate.y, currentCoordinate.x, preCoordinate.y, preCoordinate.x) < 3.0) { - // 获取当前点到下一个点的线方向 - val angle = Angle.angle(currentCoordinate, preCoordinate) - // 计算偏移距离 - val dx: Double = GeometryTools.convertDistanceToDegree( - 3.0, - currentCoordinate.y!! - ) * Math.cos(angle) - val dy: Double = GeometryTools.convertDistanceToDegree( - 3.0, - currentCoordinate.y!! - ) * Math.sin(angle) + // 获取当前点到下一个点的线方向 + val angle = Angle.angle(currentCoordinate, preCoordinate) + // 计算偏移距离 + val dx: Double = GeometryTools.convertDistanceToDegree( + 3.0, + currentCoordinate.y!! + ) * Math.cos(angle) + val dy: Double = GeometryTools.convertDistanceToDegree( + 3.0, + currentCoordinate.y!! + ) * Math.sin(angle) - // 计算偏移后的点 - preCoordinate = - Coordinate(currentCoordinate.getX() + dx, currentCoordinate.getY() + dy) + // 计算偏移后的点 + preCoordinate = + Coordinate(currentCoordinate.getX() + dx, currentCoordinate.getY() + dy) // } - zLevelReference.geometry = GeometryTools.createLineString(arrayListOf(GeoPoint(currentCoordinate.y, currentCoordinate.x), GeoPoint(preCoordinate.y, preCoordinate.x))).toString() + zLevelReference.geometry = GeometryTools.createLineString( + arrayListOf( + GeoPoint( + currentCoordinate.y, + currentCoordinate.x + ), GeoPoint(preCoordinate.y, preCoordinate.x) + ) + ).toString() referenceEntityList.add(zLevelReference) val zLevelNameReference = createZLevelReference(renderEntity) zLevelNameReference.properties["type"] = "zlevelName" zLevelNameReference.properties["name"] = zLevel.toString() - zLevelNameReference.geometry = GeometryTools.createGeometry(GeoPoint(preCoordinate.y, preCoordinate.x)).toString() + zLevelNameReference.geometry = + GeometryTools.createGeometry(GeoPoint(preCoordinate.y, preCoordinate.x)) + .toString() referenceEntityList.add(zLevelNameReference) } } @@ -1274,4 +1363,25 @@ class ImportPreProcess { zLevelReference.properties["qi_table"] = renderEntity.table return zLevelReference } + + /** + * 创建限速的文字动态数据,生成动态symbol + * */ + fun createSpeedLimitText(renderEntity: RenderEntity) { + if (renderEntity.properties.containsKey("maxSpeed")) { + renderEntity.properties["text-src"] = "@text:${renderEntity.properties["maxSpeed"]}" + } + } + + /** + * 多线转单线 + * */ + fun generateMulToLine(renderEntity: RenderEntity) { + val translateGeometry = renderEntity.wkt + if (translateGeometry != null) { + if (translateGeometry.geometryType == Geometry.TYPENAME_MULTILINESTRING) { // 如果是多线,只取第一条线 + renderEntity.geometry = renderEntity.wkt!!.getGeometryN(0).toString() + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt b/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt index 8e7a5889..4f682b40 100644 --- a/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt +++ b/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt @@ -177,6 +177,8 @@ class TaskDownloadScope( override fun onComplete() { taskBean.status = FileDownloadStatus.DONE downloadData.postValue(taskBean) + //移除当前任务,进行下一个任务下载逻辑 + downloadManager.launchNext(taskBean.id) //任务与当前一致,需要更新渲染图层 if (MapParamUtils.getTaskId() == taskBean.id) { downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer() 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 51342551..9f933f8a 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 @@ -196,7 +196,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? // 定位到指定位置 niMapController.mMapView.vtmMap.animator() // .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 )) - .animateTo(GeoPoint(39.63769191655024, 115.58991663847937)) + .animateTo(GeoPoint(40.07290793293324, 116.24617660398738 )) } R.id.personal_center_menu_open_all_layer -> { 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 853115d1..d0eb6560 100644 --- a/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt +++ b/app/src/main/java/com/navinfo/omqs/util/SignUtil.kt @@ -24,6 +24,9 @@ import org.locationtech.jts.geom.Point import org.oscim.core.GeoPoint import java.lang.reflect.Field +/* +* 要素详情解析类及左侧提前显示内容解析说明 +* */ class SignUtil { companion object { @@ -82,7 +85,7 @@ class SignUtil { } //全封闭 DataCodeEnum.OMDB_CON_ACCESS.code -> { - if (data.properties["conAccess"] === "1") "全封闭" else "" + if (data.properties["conAccess"] == "1") "全封闭" else "" } //匝道 DataCodeEnum.OMDB_RAMP_1.code, @@ -175,9 +178,9 @@ class SignUtil { DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code, DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code, DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code, DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code -> "道路属性" - DataCodeEnum.OMDB_LINK_FORM1_1.code, DataCodeEnum.OMDB_LINK_FORM1_2.code, DataCodeEnum.OMDB_LINK_FORM1_3.code, DataCodeEnum.OMDB_LINK_FORM2_1.code, DataCodeEnum.OMDB_LINK_FORM2_2.code, DataCodeEnum.OMDB_LINK_FORM2_3.code, DataCodeEnum.OMDB_LINK_FORM2_4.code, DataCodeEnum.OMDB_LINK_FORM2_5.code, DataCodeEnum.OMDB_LINK_FORM2_6.code, DataCodeEnum.OMDB_LINK_FORM2_7.code, DataCodeEnum.OMDB_LINK_FORM2_8.code, DataCodeEnum.OMDB_LINK_FORM2_9.code, DataCodeEnum.OMDB_LINK_FORM2_10.code, DataCodeEnum.OMDB_LINK_FORM2_11.code, DataCodeEnum.OMDB_LINK_FORM2_12.code, DataCodeEnum.OMDB_LINK_FORM2_13.code -> "道路形态" + DataCodeEnum.OMDB_LINK_FORM1_1.code, DataCodeEnum.OMDB_LINK_FORM1_2.code, DataCodeEnum.OMDB_LINK_FORM1_3.code, DataCodeEnum.OMDB_LINK_FORM2_1.code, DataCodeEnum.OMDB_LINK_FORM2_2.code, DataCodeEnum.OMDB_LINK_FORM2_3.code, DataCodeEnum.OMDB_LINK_FORM2_4.code, DataCodeEnum.OMDB_LINK_FORM2_5.code, DataCodeEnum.OMDB_LINK_FORM2_6.code, DataCodeEnum.OMDB_LINK_FORM2_7.code, DataCodeEnum.OMDB_LINK_FORM2_8.code, DataCodeEnum.OMDB_LINK_FORM2_9.code, DataCodeEnum.OMDB_LINK_FORM2_10.code, DataCodeEnum.OMDB_LINK_FORM2_11.code, DataCodeEnum.OMDB_LINK_FORM2_12.code, DataCodeEnum.OMDB_LINK_FORM2_13.code -> "形态" - else -> DataCodeEnum.findTableNameByCode(data.code) + else -> DataCodeEnum.findTableSubNameByCode(data.code) } } @@ -790,12 +793,88 @@ class SignUtil { list.add(TwoItemAdapterItem(title = "起终点标识", text = "${data.properties["startEnd"]}")) list.add(TwoItemAdapterItem(title = "高度层次", text = "${data.properties["zlevel"]}")) } + //道路边界类型 + DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code -> { + list.add(TwoItemAdapterItem(title = "道路边界线ID", text = "${data.properties["roadBoundaryLinkPid"]}")) + list.add(TwoItemAdapterItem(title = "道路边界类型", text = when (data.properties["boundaryType"]?.toInt()) { + 0 -> "不应用" + 1 -> "无标线无可区分边界" + 2 -> "标线" + 3 -> "路牙" + 4 -> "护栏" + 5 -> "墙" + 6 -> "铺设路面边缘" + 7 -> "虚拟三角岛" + 8 -> "障碍物" + 9 -> "杆状障碍物" + else -> "" + })) + } //车道类型 DataCodeEnum.OMDB_LANE_TYPE_ACCESS.code -> { list.add(TwoItemAdapterItem(title = "车道中心线ID", text = "${data.properties["laneLinkPid"]}")) list.add(TwoItemAdapterItem(title = "车道类型", text = getLaneType(data))) } + //设施分离 + DataCodeEnum.OMDB_LINK_SEPARATION.code -> { + list.add(TwoItemAdapterItem(title = "设施分离", text = when (data.properties["separation"]) { + "1" -> "坚固护栏" + "2" -> "非坚固护栏" + else -> "" + })) + } + //中央隔离带 + DataCodeEnum.OMDB_LINK_MEDIAN.code -> { + list.add(TwoItemAdapterItem(title = "设施分离", text = when (data.properties["medianSurface"]) { + "0" -> "未铺设" + "1" -> "铺设" + "2" -> "混合" + else -> "" + })) + } + //路牙 + DataCodeEnum.OMDB_OBJECT_CURB.code -> { + list.add(TwoItemAdapterItem(title = "是否符合高精地图", text = when (data.properties["compliant"]) { + "0" -> "否" + "1" -> "是" + else -> "" + })) + } + //平行墙 + DataCodeEnum.OMDB_OBJECT_WALL.code -> { + list.add(TwoItemAdapterItem(title = "类型", text = when (data.properties["type"]) { + "1" -> "隧道墙" + "3" -> "其他墙" + else -> "" + })) + } + //警示区 + DataCodeEnum.OMDB_OBJECT_WARNING_AREA.code -> { + list.add(TwoItemAdapterItem(title = "颜色", text = when (data.properties["color"]) { + "0" -> "未验证" + "1" -> "白色" + "2" -> "黄色" + "3" -> "红色" + else -> "" + })) + list.add(TwoItemAdapterItem(title = "材质", text = when (data.properties["material"]) { + "1" -> "有突起的材质" + "2" -> "喷漆材质" + else -> "" + })) + } + //护栏 + DataCodeEnum.OMDB_OBJECT_BARRIER.code -> { + list.add(TwoItemAdapterItem(title = "护栏类型", text = when (data.properties["barrierType"]) { + "0" -> "护栏" + "1" -> "新泽西护栏" + "2" -> "安全护栏" + "3" -> "围栏" + "4" -> "其他护栏" + else -> "" + })) + } } adapter.data = list return adapter diff --git a/app/src/main/res/menu/personal_center_menu.xml b/app/src/main/res/menu/personal_center_menu.xml index cc526bbd..f98ddb5f 100644 --- a/app/src/main/res/menu/personal_center_menu.xml +++ b/app/src/main/res/menu/personal_center_menu.xml @@ -64,7 +64,7 @@ + android:title="版本:24QE1_V1.2.3_20231201_A" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8b897586..ccd482b8 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,7 +4,6 @@ #FF2271FF #FF00C800 #FFFFB400 - #FFFFFF #F1EBEB #4954ED @@ -12,7 +11,6 @@ #2631DD #C1C0C8 #FFF5F7FE - #dadade #f4f4fc #6c14c4 diff --git a/collect-library/resources/rendertheme.xsd b/collect-library/resources/rendertheme.xsd index 150d511c..773ec248 100644 --- a/collect-library/resources/rendertheme.xsd +++ b/collect-library/resources/rendertheme.xsd @@ -245,6 +245,7 @@ + @@ -262,6 +263,10 @@ + + + + diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 9e113d24..6da9f562 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1555,8 +1555,10 @@ - + + + @@ -1616,12 +1618,34 @@ + + + + + + + + + + + + + + + + + + + + + + - + @@ -1629,7 +1653,7 @@ - + @@ -1648,7 +1672,7 @@ - + @@ -1656,7 +1680,7 @@ - + @@ -1761,6 +1785,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1795,7 +1871,7 @@ - + @@ -1882,6 +1958,11 @@ + + + + + @@ -1908,18 +1989,18 @@ - - + + + - - + + + + src="assets:omdb/icon_arrow_right_bottom.svg" > @@ -1929,18 +2010,20 @@ - - + --> + - - + --> + + src="assets:omdb/icon_arrow_right_bottom.svg" > @@ -1987,7 +2070,7 @@ + src="assets:omdb/icon_arrow_right.svg" symbol-width="24" > @@ -2101,23 +2184,24 @@ - + + - + - + - + - + diff --git a/collect-library/src/main/assets/omdb/icon_2013_4.svg b/collect-library/src/main/assets/omdb/icon_2013_4.svg index 934f848e..bb0c9bfa 100644 --- a/collect-library/src/main/assets/omdb/icon_2013_4.svg +++ b/collect-library/src/main/assets/omdb/icon_2013_4.svg @@ -2,60 +2,95 @@ - - - - - - + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2013_5.svg b/collect-library/src/main/assets/omdb/icon_2013_5.svg new file mode 100644 index 00000000..f8babad6 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2013_5.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2070_0.svg b/collect-library/src/main/assets/omdb/icon_2070_0.svg new file mode 100644 index 00000000..8a03268f --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2070_0.svg @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2071_0.jpg b/collect-library/src/main/assets/omdb/icon_2071_0.jpg new file mode 100644 index 00000000..c1cdee0b Binary files /dev/null and b/collect-library/src/main/assets/omdb/icon_2071_0.jpg differ diff --git a/collect-library/src/main/assets/omdb/icon_2071_0.svg b/collect-library/src/main/assets/omdb/icon_2071_0.svg new file mode 100644 index 00000000..4f9f7fc0 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2071_0.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2071_1.png b/collect-library/src/main/assets/omdb/icon_2071_1.png new file mode 100644 index 00000000..53b887f8 Binary files /dev/null and b/collect-library/src/main/assets/omdb/icon_2071_1.png differ diff --git a/collect-library/src/main/assets/omdb/icon_2071_1.svg b/collect-library/src/main/assets/omdb/icon_2071_1.svg new file mode 100644 index 00000000..6c162381 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2071_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2071_2.png b/collect-library/src/main/assets/omdb/icon_2071_2.png new file mode 100644 index 00000000..924fda38 Binary files /dev/null and b/collect-library/src/main/assets/omdb/icon_2071_2.png differ diff --git a/collect-library/src/main/assets/omdb/icon_2071_2.svg b/collect-library/src/main/assets/omdb/icon_2071_2.svg new file mode 100644 index 00000000..b428533e --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2071_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg b/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg index 0dec78b2..dd758dd1 100644 --- a/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg +++ b/collect-library/src/main/assets/omdb/icon_2092_acc_e.svg @@ -1 +1,24 @@ - \ No newline at end of file + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_0.svg b/collect-library/src/main/assets/omdb/icon_3007_0.svg new file mode 100644 index 00000000..5cd7a867 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_0.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_1.svg b/collect-library/src/main/assets/omdb/icon_3007_1.svg new file mode 100644 index 00000000..92b42e64 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_1.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_2.svg b/collect-library/src/main/assets/omdb/icon_3007_2.svg new file mode 100644 index 00000000..2ae3a4a2 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_2.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3007_3.svg b/collect-library/src/main/assets/omdb/icon_3007_3.svg new file mode 100644 index 00000000..80f04c4a --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3007_3.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3010_0.svg b/collect-library/src/main/assets/omdb/icon_3010_0.svg new file mode 100644 index 00000000..f8babad6 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3010_0.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_3010_1.svg b/collect-library/src/main/assets/omdb/icon_3010_1.svg new file mode 100644 index 00000000..384bff2f --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_3010_1.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4002_0.png b/collect-library/src/main/assets/omdb/icon_4002_0.png new file mode 100644 index 00000000..f2d54af2 Binary files /dev/null and b/collect-library/src/main/assets/omdb/icon_4002_0.png differ diff --git a/collect-library/src/main/assets/omdb/icon_4002_0.svg b/collect-library/src/main/assets/omdb/icon_4002_0.svg index 4c7be369..1fa23bd3 100644 --- a/collect-library/src/main/assets/omdb/icon_4002_0.svg +++ b/collect-library/src/main/assets/omdb/icon_4002_0.svg @@ -1,16 +1,20 @@ +<<<<<<< HEAD - + - + .h{stroke:#db4646;stroke-width:2.1px;}.h,.i{fill:none;}.j{fill:#a74d4b;opacity:.7;}.j,.i,.k,.l,.m,.n{stroke-width:0px;}.j,.k{isolation:isolate;}.i{opacity:0;}.k{fill:#ff5f4c;opacity:.3;}.l{fill:#fff;}.m{fill:url(#f);}.n{fill:url(#g);} + + - @@ -18,16 +22,16 @@ - - - - - - - + + + + + + + - \ No newline at end of file + +======= + +>>>>>>> 231d7c429d62e54c11acce062a03219ecc511632 diff --git a/collect-library/src/main/assets/omdb/icon_4002_1.png b/collect-library/src/main/assets/omdb/icon_4002_1.png new file mode 100644 index 00000000..19dbf19a Binary files /dev/null and b/collect-library/src/main/assets/omdb/icon_4002_1.png differ diff --git a/collect-library/src/main/assets/omdb/icon_4002_1.svg b/collect-library/src/main/assets/omdb/icon_4002_1.svg index b7c66fc1..f81b6338 100644 --- a/collect-library/src/main/assets/omdb/icon_4002_1.svg +++ b/collect-library/src/main/assets/omdb/icon_4002_1.svg @@ -1,16 +1,20 @@ +<<<<<<< HEAD - + - + .h{stroke:#db4646;}.h,.i{stroke-width:2.1px;}.h,.i,.j,.k{fill:none;}.i,.k{stroke:#2f2f2f;}.l{fill:#363333;opacity:.7;}.l,.m{isolation:isolate;}.l,.m,.j,.n,.o,.p{stroke-width:0px;}.m{fill:#262d34;opacity:.2;}.j{opacity:0;}.k{stroke-linecap:round;stroke-width:1.4px;}.n{fill:#fff;}.o{fill:url(#f);}.p{fill:url(#g);} + + - @@ -18,24 +22,21 @@ - - - - - - - - - - - - + + + + + + + + + + + + - \ No newline at end of file + +======= + +>>>>>>> 231d7c429d62e54c11acce062a03219ecc511632 diff --git a/collect-library/src/main/assets/omdb/icon_4003_0.svg b/collect-library/src/main/assets/omdb/icon_4003_0.svg index 932d090d..a4b0b73b 100644 --- a/collect-library/src/main/assets/omdb/icon_4003_0.svg +++ b/collect-library/src/main/assets/omdb/icon_4003_0.svg @@ -1,39 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4003_1.svg b/collect-library/src/main/assets/omdb/icon_4003_1.svg index 14efe86d..656c30ea 100644 --- a/collect-library/src/main/assets/omdb/icon_4003_1.svg +++ b/collect-library/src/main/assets/omdb/icon_4003_1.svg @@ -1,47 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4004_0.svg b/collect-library/src/main/assets/omdb/icon_4004_0.svg index ada8b8eb..6f7cd500 100644 --- a/collect-library/src/main/assets/omdb/icon_4004_0.svg +++ b/collect-library/src/main/assets/omdb/icon_4004_0.svg @@ -1,35 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4006_0.svg b/collect-library/src/main/assets/omdb/icon_4006_0.svg index 5b844f39..af94a709 100644 --- a/collect-library/src/main/assets/omdb/icon_4006_0.svg +++ b/collect-library/src/main/assets/omdb/icon_4006_0.svg @@ -1 +1,57 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_arrow_right_bottom.svg b/collect-library/src/main/assets/omdb/icon_arrow_right_bottom.svg new file mode 100644 index 00000000..6cb7a703 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_arrow_right_bottom.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_bike.svg b/collect-library/src/main/assets/omdb/icon_bike.svg new file mode 100644 index 00000000..3ad5d240 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_bike.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_pole_barrier.svg b/collect-library/src/main/assets/omdb/icon_pole_barrier.svg index f57358c0..205cd84f 100644 --- a/collect-library/src/main/assets/omdb/icon_pole_barrier.svg +++ b/collect-library/src/main/assets/omdb/icon_pole_barrier.svg @@ -1,92 +1,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - \ No newline at end of file diff --git a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt index 4b834f83..6f94fe5b 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/enums/DataCodeEnum.kt @@ -3,90 +3,96 @@ package com.navinfo.collect.library.enums /* * 要素枚举定义 * */ -public enum class DataCodeEnum(var tableName: String, var code: String) { - OMDB_NODE_FORM("点形态", "1007-6"), - OMDB_NODE_PA("点形态PA", "1007-6"), - OMDB_CHECKPOINT("检查点", "1012"), - OMDB_RD_LINK("道路线", "2001"), - OMDB_RD_LINK_FUNCTION_CLASS("道路功能等级", "2002"), - OMDB_LINK_ATTRIBUTE("道路属性", "2004"), - OMDB_LINK_ATTRIBUTE_SA("道路属性-SA", "2004-1"), - OMDB_LINK_ATTRIBUTE_PA("道路属性-PA", "2004-2"), - OMDB_LINK_ATTRIBUTE_FORNTAGE("道路属性-辅路", "2004-3"), - OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS("道路属性-主辅路出入口", "2004-4"), - OMDB_RD_LINK_KIND("道路种别", "2008"), - OMDB_LINK_DIRECT("道路方向", "2010"), - OMDB_LINK_NAME("道路名", "2011"), - OMDB_LANE_MARK_BOUNDARYTYPE("车道边界类型", "2013"), - OMDB_LINK_CONSTRUCTION("道路施工", "2017"), - OMDB_LINK_SPEEDLIMIT("常规线限速", "2019"), - OMDB_LINK_SPEEDLIMIT_COND("条件线限速", "2020"), - OMDB_LINK_SPEEDLIMIT_VAR("可变线限速", "2021"), - OMDB_CON_ACCESS("全封闭", "2022"), - OMDB_RAMP("匝道", "2037"), - OMDB_RAMP_1("普通路连接匝道", "2037-1"), - OMDB_RAMP_2("高速入口匝道", "2037-2"), - OMDB_RAMP_3("高速出口匝道", "2037-3"), - OMDB_RAMP_4("高速连接匝道", "2037-4"), - OMDB_RAMP_5("高速直连入口匝道", "2037-5"), - OMDB_RAMP_6("高速直连出口匝道", "2037-6"), - OMDB_RAMP_7("高速直连出口匝道高速出入口匝道", "2037-7"), - OMDB_MULTI_DIGITIZED("上下线分离", "2040"), - OMDB_LANE_NUM("车道数", "2041"), - OMDB_PHY_LANENUM("物理车道数", "2097"), - OMDB_VIADUCT("高架", "2043"), - OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "2083"), - OMDB_LANE_CONSTRUCTION("车道施工", "2090"), - OMDB_LANE_TYPE_ACCESS("车道类型","2092"), - OMDB_BRIDGE("桥", "2201"), - OMDB_BRIDGE_1("固定桥", "2201-1"), - OMDB_BRIDGE_2("可移动桥", "2201-2"), - OMDB_BRIDGE_3("跨线天桥", "2201-2"), - OMDB_TUNNEL("隧道", "2202"), - OMDB_ROUNDABOUT("环岛", "2204"), - OMDB_LINK_FORM1("道路形态1", "2205"), - OMDB_LINK_FORM1_1("U-Turn", "2205-1"), - OMDB_LINK_FORM1_2("提前右转", "2205-2"), - OMDB_LINK_FORM1_3("提前左转", "2205-3"), - OMDB_LINK_FORM2("道路形态2", "2206"), - OMDB_LINK_FORM2_1("IC", "2206-1"), - OMDB_LINK_FORM2_2("JCT", "2206-2"), - OMDB_LINK_FORM2_3("跨线地道", "2206-3"), - OMDB_LINK_FORM2_4("私道", "2206-4"), - OMDB_LINK_FORM2_5("步行街", "2206-5"), - OMDB_LINK_FORM2_6("公交专用道", "2206-6"), - OMDB_LINK_FORM2_7("POI 连接路", "2206-7"), - OMDB_LINK_FORM2_8("区域内道路", "2206-8"), - OMDB_LINK_FORM2_9("停车场出入口连接路", "2206-9"), - OMDB_LINK_FORM2_10("停车场内部虚拟连接路", "2206-10"), - OMDB_LINK_FORM2_11("风景路线", "2206-11"), - OMDB_LINK_FORM2_12("车辆测试路段", "2206-12"), - OMDB_LINK_FORM2_13("驾照考试路段", "2206-13"), - OMDB_LANE_ACCESS("通行车辆类型Lane", "2638"), - OMDB_OBJECT_OH_STRUCT("上方障碍物","3001"), - OMDB_OBJECT_TEXT("文字", "3002"), - OMDB_OBJECT_SYMBOL("符号", "3003"), - OMDB_OBJECT_ARROW("箭头", "3004"), - OMDB_TRAFFIC_SIGN("交通标牌", "3005"), - OMDB_POLE("杆状物", "3006"), - OMDB_FILL_AREA("导流区", "3012"), - OMDB_CROSS_WALK("人行横道", "3014"), - OMDB_OBJECT_STOPLOCATION("停止位置", "3016"), - OMDB_OBJECT_REFUGE_ISLAND("路口内交通岛", "3027"), - OMDB_INTERSECTION("路口", "4001"), - OMDB_SPEEDLIMIT("常规点限速", "4002"), - OMDB_SPEEDLIMIT_COND("条件点限速", "4003"), - OMDB_SPEEDLIMIT_VAR("可变点限速", "4004"), - OMDB_LANE_SPEEDLIMIT("车道点限速", "4005"), - OMDB_RESTRICTION("普通交限", "4006"), - OMDB_WARNINGSIGN("警示信息", "4009"), - OMDB_ELECTRONICEYE("电子眼", "4010"), - OMDB_ZLEVEL("立交", "4016"), - OMDB_TRAFFICLIGHT("交通灯", "4022"), - OMDB_TOLLGATE("收费站", "4023"), - OMDB_LANEINFO("车信", "4601"), - OMDB_CLM_LANEINFO("车信CLM", "4602"), - OMDB_LANE_LINK_LG("车道中心线", "5001"); +public enum class DataCodeEnum(var tableName: String,var tableSubName: String, var code: String) { + OMDB_NODE_FORM("点形态","点形态", "1007-6"), + OMDB_NODE_PA("点形态PA","点形态PA", "1007-6"), + OMDB_CHECKPOINT("检查点","检查点", "1012"), + OMDB_RD_LINK("道路线","道路线", "2001"), + OMDB_RD_LINK_FUNCTION_CLASS("道路功能等级", "功能等级", "2002"), + OMDB_LINK_ATTRIBUTE("道路属性","道路属性", "2004"), + OMDB_LINK_ATTRIBUTE_SA("道路属性-SA","道路属性", "2004-1"), + OMDB_LINK_ATTRIBUTE_PA("道路属性-PA","道路属性", "2004-2"), + OMDB_LINK_ATTRIBUTE_FORNTAGE("道路属性-辅路","道路属性", "2004-3"), + OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS("道路属性-主辅路出入口","道路属性", "2004-4"), + OMDB_RD_LINK_KIND("道路种别","道路种别", "2008"), + OMDB_LINK_DIRECT("道路方向","道路方向", "2010"), + OMDB_LINK_NAME("道路名","道路名", "2011"), + OMDB_LANE_MARK_BOUNDARYTYPE("车道边界类型","车道边界", "2013"), + OMDB_LINK_CONSTRUCTION("道路施工","道路施工", "2017"), + OMDB_LINK_SPEEDLIMIT("常规线限速","常规线限速", "2019"), + OMDB_LINK_SPEEDLIMIT_COND("条件线限速","条件线限速", "2020"), + OMDB_LINK_SPEEDLIMIT_VAR("可变线限速","可变线限速", "2021"), + OMDB_CON_ACCESS("全封闭","全封闭", "2022"), + OMDB_RAMP("匝道","匝道", "2037"), + OMDB_RAMP_1("普通路连接匝道","匝道", "2037-1"), + OMDB_RAMP_2("高速入口匝道","匝道", "2037-2"), + OMDB_RAMP_3("高速出口匝道","匝道", "2037-3"), + OMDB_RAMP_4("高速连接匝道","匝道", "2037-4"), + OMDB_RAMP_5("高速直连入口匝道","匝道", "2037-5"), + OMDB_RAMP_6("高速直连出口匝道", "匝道","2037-6"), + OMDB_RAMP_7("高速直连出口匝道高速出入口匝道", "匝道","2037-7"), + OMDB_MULTI_DIGITIZED("上下线分离", "上下线分离","2040"), + OMDB_LANE_NUM("车道数", "车道数","2041"), + OMDB_PHY_LANENUM("物理车道数", "物理车道数","2097"), + OMDB_VIADUCT("高架", "高架","2043"), + OMDB_LINK_SEPARATION("设施分离","设施分离", "2070"), + OMDB_LINK_MEDIAN("中央隔离带", "中央隔离带","2071"), + OMDB_RDBOUND_BOUNDARYTYPE("道路边界类型", "道路边界","2083"), + OMDB_LANE_CONSTRUCTION("车道施工", "车道施工","2090"), + OMDB_LANE_TYPE_ACCESS("车道类型","车道类型","2092"), + OMDB_BRIDGE("桥", "桥", "2201"), + OMDB_BRIDGE_1("固定桥", "固定桥","2201-1"), + OMDB_BRIDGE_2("可移动桥", "可移动桥", "2201-2"), + OMDB_BRIDGE_3("跨线天桥", "跨线天桥","2201-2"), + OMDB_TUNNEL("隧道","隧道", "2202"), + OMDB_ROUNDABOUT("环岛", "环岛", "2204"), + OMDB_LINK_FORM1("道路形态1","形态", "2205"), + OMDB_LINK_FORM1_1("U-Turn", "形态","2205-1"), + OMDB_LINK_FORM1_2("提前右转","形态", "2205-2"), + OMDB_LINK_FORM1_3("提前左转", "形态","2205-3"), + OMDB_LINK_FORM2("道路形态2", "形态","2206"), + OMDB_LINK_FORM2_1("IC", "形态","2206-1"), + OMDB_LINK_FORM2_2("JCT", "形态","2206-2"), + OMDB_LINK_FORM2_3("跨线地道", "形态","2206-3"), + OMDB_LINK_FORM2_4("私道", "形态","2206-4"), + OMDB_LINK_FORM2_5("步行街", "形态","2206-5"), + OMDB_LINK_FORM2_6("公交专用道", "形态","2206-6"), + OMDB_LINK_FORM2_7("POI 连接路", "形态","2206-7"), + OMDB_LINK_FORM2_8("区域内道路", "形态","2206-8"), + OMDB_LINK_FORM2_9("停车场出入口连接路", "形态","2206-9"), + OMDB_LINK_FORM2_10("停车场内部虚拟连接路","形态", "2206-10"), + OMDB_LINK_FORM2_11("风景路线", "形态","2206-11"), + OMDB_LINK_FORM2_12("车辆测试路段", "形态","2206-12"), + OMDB_LINK_FORM2_13("驾照考试路段", "形态","2206-13"), + OMDB_LANE_ACCESS("通行车辆类型Lane","通行车辆", "2638"), + OMDB_OBJECT_OH_STRUCT("上方障碍物","上方障碍物","3001"), + OMDB_OBJECT_TEXT("文字", "文字", "3002"), + OMDB_OBJECT_SYMBOL("符号", "符号", "3003"), + OMDB_OBJECT_ARROW("箭头", "箭头", "3004"), + OMDB_TRAFFIC_SIGN("交通标牌", "交通标牌","3005"), + OMDB_POLE("杆状物", "杆状物","3006"), + OMDB_OBJECT_WARNING_AREA("警示区","警示区", "3007"), + OMDB_OBJECT_BARRIER("护栏", "护栏","3009"), + OMDB_OBJECT_WALL("平行墙", "平行墙","3010"), + OMDB_FILL_AREA("导流区", "导流区","3012"), + OMDB_CROSS_WALK("人行横道", "人行横道","3014"), + OMDB_OBJECT_STOPLOCATION("停止位置", "停止位置", "3016"), + OMDB_OBJECT_CURB("路牙", "路牙","3019"), + OMDB_OBJECT_REFUGE_ISLAND("路口内交通岛", "交通岛", "3028"), + OMDB_INTERSECTION("路口", "路口","4001"), + OMDB_SPEEDLIMIT("常规点限速", "常规点限速","4002"), + OMDB_SPEEDLIMIT_COND("条件点限速", "条件点限速", "4003"), + OMDB_SPEEDLIMIT_VAR("可变点限速", "可变点限速","4004"), + OMDB_LANE_SPEEDLIMIT("车道点限速", "车道点限速", "4005"), + OMDB_RESTRICTION("普通交限", "普通交限", "4006"), + OMDB_WARNINGSIGN("警示信息", "警示信息", "4009"), + OMDB_ELECTRONICEYE("电子眼","电子眼", "4010"), + OMDB_ZLEVEL("立交", "立交", "4016"), + OMDB_TRAFFICLIGHT("交通灯", "交通灯","4022"), + OMDB_TOLLGATE("收费站", "收费站","4023"), + OMDB_LANEINFO("车信", "车信","4601"), + OMDB_CLM_LANEINFO("车信CLM", "车信CLM","4602"), + OMDB_LANE_LINK_LG("车道中心线", "车道中心线","5001"); companion object { fun findTableNameByCode(code: String): String { @@ -97,6 +103,14 @@ public enum class DataCodeEnum(var tableName: String, var code: String) { } return "" // 若未找到匹配的 code,则返回 null 或其他适当的默认值 } + fun findTableSubNameByCode(code: String): String { + for (enumInstance in DataCodeEnum.values()) { + if (enumInstance.code == code) { + return enumInstance.tableSubName + } + } + return "" // 若未找到匹配的 code,则返回 null 或其他适当的默认值 + } } } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java index 0db8f305..824e0b09 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java @@ -105,7 +105,7 @@ public class OMDBDataDecoder extends TileDecoder { Log.e("qj", "聚合交通标牌转换结束" + list1.size()); } //增加交通标牌聚合显示 - List list2 = GeometryTools.groupByDistance(DataCodeEnum.OMDB_TRAFFICLIGHT.getCode(), traffList, 5.0); + List list2 = GeometryTools.groupByDistance(DataCodeEnum.OMDB_TRAFFICLIGHT.getCode(), traffList, 2.0); if (list2 != null && list2.size() > 0) { Log.e("qj", "聚合红绿灯转换开始" + traffList.size()); list2.stream().iterator().forEachRemaining(new Consumer() { diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java index b6724bd5..8fa9f0fc 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java @@ -1,7 +1,6 @@ package com.navinfo.collect.library.map.source; import android.os.Build; -import android.util.Log; import androidx.annotation.RequiresApi; @@ -11,21 +10,17 @@ import com.navinfo.collect.library.utils.GeometryTools; import com.navinfo.collect.library.utils.MapParamUtils; import org.locationtech.jts.geom.Polygon; -import org.oscim.core.MapPosition; import org.oscim.layers.tile.MapTile; -import org.oscim.map.Map; import org.oscim.map.Viewport; import org.oscim.tiling.ITileDataSink; import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.QueryResult; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; import io.realm.Realm; -import io.realm.RealmConfiguration; import io.realm.RealmQuery; public class OMDBTileDataSource implements ITileDataSource { diff --git a/vtm b/vtm index dc42d457..c2d87b10 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit dc42d4579611037fb2ef6986390fe74368f0d29a +Subproject commit c2d87b1095d493a70a6b3a7aa366f9e6042300db