diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index aec0edc4..91c1c6b6 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -498,11 +498,6 @@ "vlib": "generateAddWidthLine()" } ] - }, - "5002":{ - "table": "OMDB_AREA", - "code": 5002, - "name": "面测试" } } }, 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 "违章", 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 ba12d237..bac74fc2 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -168,15 +168,16 @@ 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() +// val listResult = mutableListOf() currentConfig?.let { val list = FileIOUtils.readFile2List(txtFile, "UTF-8") Log.d("ImportOMDBHelper", "开始解析:${txtFile?.name}") @@ -317,28 +318,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) { @@ -609,24 +610,23 @@ 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"] } +// } + realm.commitTransaction() // 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"] } - } } } catch (e: Exception) { + realm.cancelTransaction() throw e } } 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 180b7289..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 } @@ -58,7 +58,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 // 是否为逆向 @@ -135,7 +135,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 @@ -309,7 +309,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 @@ -333,7 +333,7 @@ class ImportPreProcess { } } else renderEntity?.properties?.get("angle")?.toDouble()!! - angle = (450 - angle) % 360 + angle = -((450 - angle) % 360) radian = Math.toRadians(angle) } @@ -460,9 +460,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) } @@ -696,7 +697,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 @@ -717,7 +718,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/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index fc3a1260..cb9bbb5f 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1555,404 +1555,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -2306,8 +1910,8 @@ + src="assets:omdb/icon_arrow_right.svg" symbol-height="56" + symbol-width="56"> 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() { diff --git a/vtm b/vtm index 985dc0a0..a087521b 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 985dc0a0d590ef6f6784ee2ee5c1c148dff1c46d +Subproject commit a087521b6e1b312d7ed2bdf20f83b0e674fad9b5