feat: 增加路口内交通岛、上方障碍物的渲染,修改符号、文字颜色

This commit is contained in:
2023-09-25 14:56:02 +08:00
parent 0c416fec0d
commit 0f5c9bfb8d
19 changed files with 133 additions and 49 deletions

View File

@@ -178,6 +178,23 @@
}
]
},
"3001":{
"table": "OMDB_OBJECT_OH_STRUCT",
"code": 3001,
"name": "上方障碍物",
"zoomMin": 15,
"zoomMax": 20,
"catch":true,
"checkLinkId": false,
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "getPolygonCenterPoint()"
}
]
},
"3002":{
"table": "OMDB_OBJECT_TEXT",
"code": 3002,
@@ -276,6 +293,15 @@
"catch":true,
"zoomMax": 20
},
"3027":{
"table": "OMDB_OBJECT_REFUGE_ISLAND",
"code": 3027,
"name": "路口内交通岛",
"catch":true,
"checkLinkId": false,
"zoomMin": 18,
"zoomMax": 20
},
"4001": {
"table": "OMDB_INTERSECTION",
"code": 4001,

View File

@@ -93,11 +93,6 @@ class Constant {
const val DEBUG = true
/**
* 地图最多缩放级别20
*/
const val MAX_ZOOM = 20
/**
* 是否自动定位
*/

View File

@@ -845,8 +845,46 @@ class ImportPreProcess {
val listResult = mutableListOf<ReferenceEntity>()
val coorEnd = Coordinate(pointStart.getX() + dx, pointStart.getY() + dy, pointStart.z)
renderEntity.geometry = WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd)))
// renderEntity.geometry = WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd)))
renderEntity.geometry = GeometryTools.createGeometry(GeoPoint(centerPoint!!.y, centerPoint.x)).toString()
val code = renderEntity.properties["signType"]
renderEntity.properties["src"] = "assets:omdb/appendix/1105_${code}_0.svg"
}
/**
* 获取上方障碍物中心点坐标
*
* */
fun getPolygonCenterPoint(renderEntity: RenderEntity, containsDirect: Boolean = false) {
// 获取中心坐标点将中心坐标作为数据的新的geometry位置
val centerPoint = renderEntity.wkt?.centroid
if (containsDirect) {
// 根据heading方向自动生成新的Geometry
var radian = 0.0
val pointStart = Coordinate(centerPoint!!.x, centerPoint.y)
var angle =
if (renderEntity?.properties?.get("heading") == null) 0.0 else renderEntity?.properties?.get(
"heading"
)?.toDouble()!!
// angle角度为与正北方向的顺时针夹角将其转换为与X轴正方向的逆时针夹角即为正东方向的夹角
angle = ((450 - angle) % 360)
radian = Math.toRadians(angle)
// 计算偏移距离
var dx: Double = GeometryTools.convertDistanceToDegree(
defaultTranslateDistance,
centerPoint.y
) * Math.cos(radian)
var dy: Double = GeometryTools.convertDistanceToDegree(
defaultTranslateDistance,
centerPoint.y
) * Math.sin(radian)
val listResult = mutableListOf<ReferenceEntity>()
val coorEnd = Coordinate(pointStart.getX() + dx, pointStart.getY() + dy, pointStart.z)
renderEntity.geometry = WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd)))
} else {
renderEntity.geometry = GeometryTools.createGeometry(GeoPoint(centerPoint!!.y, centerPoint.x)).toString()
}
}
}

View File

@@ -191,7 +191,7 @@ class MainActivity : BaseActivity() {
viewModel.speakMode = SpeakMode(this)
// 在mapController初始化前获取当前OMDB图层显隐
viewModel.refreshOMDBLayer(LayerConfigUtils.getLayerConfigList())
mapController.mMapView.vtmMap.viewport().maxZoomLevel = Constant.MAX_ZOOM
mapController.mMapView.vtmMap.viewport().maxZoomLevel = com.navinfo.collect.library.system.Constant.MAX_ZOOM
//关联生命周期
binding.lifecycleOwner = this
//给xml转递对象

View File

@@ -167,7 +167,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
// 定位到指定位置
niMapController.mMapView.vtmMap.animator()
// .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 ))
.animateTo(GeoPoint(40.5016054261786, 115.82381251427815))
.animateTo(GeoPoint(40.50704534740206, 115.80404946472662))
}
R.id.personal_center_menu_open_all_layer -> {