feat: 添加车信测试图标
This commit is contained in:
parent
8551ce43a7
commit
c1616ed744
@ -224,7 +224,7 @@
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateDirectReferenceLine(direct=3)"
|
||||
"vlib": "generateDirectReferenceLine()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
@ -250,19 +250,19 @@
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "translateBack()"
|
||||
"vlib": "translateRight(direct=3)"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "translateRight()"
|
||||
"vlib": "unpackingLaneInfo()"
|
||||
},
|
||||
{
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "generateDirectReferenceLine()"
|
||||
"vlib": "generateS2EReferenceLine()"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -16,6 +16,7 @@ import org.oscim.core.GeoPoint
|
||||
class ImportPreProcess {
|
||||
val code2NameMap = Code2NameMap()
|
||||
lateinit var cacheRdLink: Map<String?, RenderEntity>
|
||||
val defaultTranslateDistance = 3.0
|
||||
|
||||
fun checkCircleRoad(renderEntity: RenderEntity): Boolean {
|
||||
val linkInId = renderEntity.properties["linkIn"]
|
||||
@ -50,9 +51,9 @@ class ImportPreProcess {
|
||||
}
|
||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) { // angle为与正北方向的顺时针夹角
|
||||
var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
|
||||
if (isReverse) {
|
||||
angle += 180
|
||||
}
|
||||
// if (isReverse) {
|
||||
// angle += 180
|
||||
// }
|
||||
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||
angle=(450-angle)%360
|
||||
radian = Math.toRadians(angle)
|
||||
@ -65,20 +66,26 @@ class ImportPreProcess {
|
||||
val p2: Coordinate = coordinates.get(coordinates.size - 1)
|
||||
// 计算线段的方向
|
||||
radian = Angle.angle(p1, p2)
|
||||
point = p2
|
||||
point = p1
|
||||
}
|
||||
|
||||
// 计算偏移距离
|
||||
val dx: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.cos(radian)
|
||||
val dy: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.sin(radian)
|
||||
val dx: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.cos(radian)
|
||||
val dy: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.sin(radian)
|
||||
|
||||
// 计算偏移后的点
|
||||
val coord =
|
||||
Coordinate(point.getX() + dy, point.getY() - dx)
|
||||
|
||||
// 将这个点记录在数据中
|
||||
val geometryTranslate: Geometry = GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y))
|
||||
renderEntity.geometry = geometryTranslate.toString()
|
||||
// 记录偏移后的点位或线数据,如果数据为线时,记录的偏移后数据为倒数第二个点右移后,方向与线的最后两个点平行同向的单位向量
|
||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
||||
val geometryTranslate: Geometry = GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y))
|
||||
renderEntity.geometry = geometryTranslate.toString()
|
||||
} else {
|
||||
val coorEnd = Coordinate(coord.x+dx, coord.y+dy)
|
||||
val geometryTranslate: Geometry = GeometryTools.createLineString(arrayOf(coord, coorEnd))
|
||||
renderEntity.geometry = geometryTranslate.toString()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -98,9 +105,9 @@ class ImportPreProcess {
|
||||
var point = Coordinate(geometry?.coordinate)
|
||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
||||
var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
|
||||
if (isReverse) {
|
||||
angle += 180
|
||||
}
|
||||
// if (isReverse) {
|
||||
// angle += 180
|
||||
// }
|
||||
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||
angle=(450-angle)%360
|
||||
radian = Math.toRadians(angle)
|
||||
@ -117,8 +124,8 @@ class ImportPreProcess {
|
||||
}
|
||||
|
||||
// 计算偏移距离
|
||||
val dx: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.cos(radian)
|
||||
val dy: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.sin(radian)
|
||||
val dx: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.cos(radian)
|
||||
val dy: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.sin(radian)
|
||||
|
||||
// 计算偏移后的点
|
||||
val coord =
|
||||
@ -137,8 +144,14 @@ class ImportPreProcess {
|
||||
val translateGeometry = renderEntity.wkt
|
||||
val startGeometry = GeometryTools.createGeometry(renderEntity.properties["geometry"])
|
||||
|
||||
val pointEnd = translateGeometry!!.coordinates[translateGeometry.numPoints-1] // 获取这个geometry对应的结束点坐标
|
||||
val pointStart = startGeometry!!.coordinates[startGeometry.numPoints-1] // 获取这个geometry对应的结束点坐标
|
||||
var pointEnd = translateGeometry!!.coordinates[translateGeometry.numPoints-1] // 获取这个geometry对应的结束点坐标
|
||||
var pointStart = startGeometry!!.coordinates[startGeometry.numPoints-1] // 获取这个geometry对应的结束点坐标
|
||||
if (translateGeometry.geometryType == Geometry.TYPENAME_LINESTRING) { // 如果是线数据,则取倒数第二个点作为偏移的起止点
|
||||
pointEnd = translateGeometry!!.coordinates[translateGeometry.numPoints-2] // 获取这个geometry对应的结束点坐标
|
||||
}
|
||||
if (startGeometry.geometryType == Geometry.TYPENAME_LINESTRING) { // 如果是线数据,则取倒数第二个点作为偏移的起止点
|
||||
pointStart = startGeometry!!.coordinates[startGeometry.numPoints-2] // 获取这个geometry对应的结束点坐标
|
||||
}
|
||||
|
||||
// 将这个起终点的线记录在数据中
|
||||
val startEndReference = ReferenceEntity()
|
||||
@ -162,7 +175,7 @@ class ImportPreProcess {
|
||||
if (direction.isNotEmpty()) {
|
||||
val paramDirections = direction.split("=")
|
||||
if (paramDirections.size>=2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
|
||||
isReverse = true;
|
||||
isReverse = true
|
||||
}
|
||||
}
|
||||
var radian = 0.0 // geometry的角度,如果是点,获取angle,如果是线,获取最后两个点的方向
|
||||
@ -170,9 +183,9 @@ class ImportPreProcess {
|
||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
||||
point = Coordinate(geometry?.coordinate)
|
||||
var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
|
||||
if (isReverse) {
|
||||
angle += 180
|
||||
}
|
||||
// if (isReverse) {
|
||||
// angle += 180
|
||||
// }
|
||||
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||
angle=(450-angle)%360
|
||||
radian = Math.toRadians(angle)
|
||||
@ -185,12 +198,12 @@ class ImportPreProcess {
|
||||
val p2: Coordinate = coordinates.get(coordinates.size - 1)
|
||||
// 计算线段的方向
|
||||
radian = Angle.angle(p1, p2)
|
||||
point = p2
|
||||
point = p1
|
||||
}
|
||||
|
||||
// 计算偏移距离
|
||||
val dx: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.cos(radian)
|
||||
val dy: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.sin(radian)
|
||||
val dx: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.cos(radian)
|
||||
val dy: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.sin(radian)
|
||||
|
||||
val coorEnd = Coordinate(point.getX() + dx, point.getY() + dy)
|
||||
|
||||
@ -254,6 +267,35 @@ class ImportPreProcess {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析车信数据二级属性
|
||||
* */
|
||||
fun unpackingLaneInfo(renderEntity: RenderEntity) {
|
||||
if (renderEntity.code == 4601) {
|
||||
if (!renderEntity.properties["laneinfoGroup"].isNullOrEmpty()&&renderEntity.properties["laneinfoGroup"]!="null") {
|
||||
// 解析laneinfoGroup,将数组中的属性放会properties
|
||||
val laneinfoGroup = JSONArray(renderEntity.properties["laneinfoGroup"].toString().replace("{", "[").replace("}", "]"))
|
||||
// 分别获取两个数组中的数据,取第一个作为主数据,另外两个作为辅助渲染数据
|
||||
val laneInfoDirectArray = JSONArray(laneinfoGroup[0].toString())
|
||||
val laneInfoTypeArray = JSONArray(laneinfoGroup[1].toString())
|
||||
|
||||
for (i in 0 until laneInfoDirectArray.length()) {
|
||||
// 根据后续的数据生成辅助表数据
|
||||
val referenceEntity = ReferenceEntity()
|
||||
referenceEntity.renderEntityId = renderEntity.id
|
||||
referenceEntity.name = "${renderEntity.name}参考方向"
|
||||
referenceEntity.table = renderEntity.table
|
||||
// 与原数据使用相同的geometry
|
||||
referenceEntity.geometry = renderEntity.geometry.toString()
|
||||
referenceEntity.properties["qi_table"] = renderEntity.table
|
||||
referenceEntity.properties["currentDirect"] = laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_")
|
||||
referenceEntity.properties["currentType"] = laneInfoTypeArray[i].toString().split(",").distinct().joinToString("_")
|
||||
Realm.getDefaultInstance().insert(referenceEntity)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
@ -112,7 +112,7 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) :
|
||||
viewModel.readRealmData()
|
||||
// 定位到指定位置
|
||||
niMapController.mMapView.vtmMap.animator()
|
||||
.animateTo(GeoPoint( 39.799624915997725, 116.51407667184905 ))
|
||||
.animateTo(GeoPoint( 39.79440941020727, 116.51302718503038 ))
|
||||
}
|
||||
// R.id.personal_center_menu_task_list -> {
|
||||
// findNavController().navigate(R.id.TaskManagerFragment)
|
||||
|
@ -1600,7 +1600,7 @@
|
||||
</m>
|
||||
</m>
|
||||
<!-- 道路线 -->
|
||||
<m v="OMDB_RD_LINK">
|
||||
<m k="qi_table" v="OMDB_RD_LINK">
|
||||
<line stroke="#9c9c9c" width="1" />
|
||||
</m>
|
||||
<!--道路种别-->
|
||||
@ -1818,8 +1818,9 @@
|
||||
<m k="type" v="s_2_e">
|
||||
<line use="s2e" />
|
||||
</m>
|
||||
</m>
|
||||
<!-- 路口 -->
|
||||
</m>
|
||||
|
||||
<!-- 路口 -->
|
||||
<m v="OMDB_INTERSECTION">
|
||||
<m k="type" v="node">
|
||||
<symbol src="assets:symbols/dot_blue_dark.svg"></symbol>
|
||||
@ -1834,7 +1835,21 @@
|
||||
</m>
|
||||
<!-- 车信 -->
|
||||
<m v="OMDB_LANEINFO">
|
||||
<text use="road"></text>
|
||||
<m k="currentType" v="0">
|
||||
<m k="currentDirect">
|
||||
<symbol repeat="false" repeat-start="0" repeat-gap="2000"
|
||||
src="assets:omdb/1301_0_j.svg" symbol-height="29" symbol-width="29"></symbol>
|
||||
</m>
|
||||
</m>
|
||||
<m k="currentType" v="1|2">
|
||||
<m k="currentDirect">
|
||||
<symbol repeat="false" repeat-start="0" repeat-gap="2000"
|
||||
src="assets:omdb/1301_1_j.svg" symbol-height="29" symbol-width="29"></symbol>
|
||||
</m>
|
||||
</m>
|
||||
<m k="type" v="s_2_e">
|
||||
<line use="s2e" />
|
||||
</m>
|
||||
</m>
|
||||
</m>
|
||||
</rendertheme>
|
1
collect-library/src/main/assets/omdb/1301_0_j.svg
Normal file
1
collect-library/src/main/assets/omdb/1301_0_j.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" width="30" height="18" viewBox="0 0 30 18"><defs><style>.e{fill:none;}.f{fill:#2271ff;}</style></defs><g id="c"><g id="d"><path class="f" d="M25.1,7.7h-3.1l3.5,4.2h-7.4c.5-.4,1.1-1.3,1.5-2.1,.5-1,.4-3.3,.4-3.3V3.5l3.5,2.9V3.7L19.1,.1l-4.6,3.6v2.7l3.8-3.1v3.3s.3,1.9-.5,3c-.6,.9-1.5,1.8-2.1,2.2h-3c1.8-2.9,.8-8-3.2-7.9H3.8L6.9,.4h-2.1L.9,5l3.9,4.4h2.3l-3.2-3.5h5c3.6,0,3.5,5.7,0,5.9H.8v2.1H25.4l-3.1,3.8h2.9l4-4.9-4-5.1h0Z"/><rect class="e" width="30" height="18"/></g></g></svg>
|
After Width: | Height: | Size: 563 B |
1
collect-library/src/main/assets/omdb/1301_0_v.svg
Normal file
1
collect-library/src/main/assets/omdb/1301_0_v.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" width="30" height="24" viewBox="0 0 30 24"><defs><style>.e{fill:none;}.f{fill:#2271ff;}</style></defs><g id="c"><g id="d"><path class="f" d="M19.3,20.2v-2.6l-3.5,2.9v-3s0-1.8-.4-2.9c-.3-.5-.7-1.2-1.1-1.7h6.4L26.5,3.4l1.5,4.6,1.5-2.3L27.5,.2l-5.7,.7-1.3,2.2,4.4-.6-5.2,8.4H1v2H11.1c.6,.1,1.6,.5,2.2,1.3,.8,1.1,.7,3,.7,3v3.3l-3.7-3.1v2.7l4.5,3.6,4.5-3.6h0Z"/><rect class="e" width="30" height="24"/></g></g></svg>
|
After Width: | Height: | Size: 496 B |
1
collect-library/src/main/assets/omdb/1301_1_j.svg
Normal file
1
collect-library/src/main/assets/omdb/1301_1_j.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" width="30" height="18" viewBox="0 0 30 18"><defs><style>.d{fill:none;}.e{fill:#ffb400;}</style></defs><g id="c"><path class="e" d="M25.1,7.7h-3.1c0,0,3.5,4.2,3.5,4.2h-7.4c.5-.4,1.1-1.3,1.5-2.1,.5-1,.4-3.3,.4-3.3V3.5s3.5,2.9,3.5,2.9V3.7c0,0-4.4-3.6-4.4-3.6l-4.6,3.6v2.7c0,0,3.8-3.1,3.8-3.1v3.3s.3,1.9-.5,3c-.6,.9-1.5,1.8-2.1,2.2h-3c1.8-2.9,.8-8-3.2-7.9H3.8S6.9,.4,6.9,.4h-2.1c0,0-3.9,4.6-3.9,4.6l3.9,4.4h2.3s-3.2-3.5-3.2-3.5h5c3.6,.1,3.5,5.7,0,5.9h0s-8.1,0-8.1,0v2.1H25.4s-3.1,3.8-3.1,3.8h2.9c0,0,4-4.9,4-4.9l-4-5.1Z"/><rect class="d" width="30" height="18"/></g></svg>
|
After Width: | Height: | Size: 653 B |
1
collect-library/src/main/assets/omdb/1301_1_v.svg
Normal file
1
collect-library/src/main/assets/omdb/1301_1_v.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" width="30" height="24" viewBox="0 0 30 24"><defs><style>.d{fill:none;}.e{fill:#ffb400;}</style></defs><g id="c"><path class="e" d="M19.3,20.2v-2.6c0,0-3.5,2.9-3.5,2.9v-3s0-1.8-.4-2.9c-.3-.5-.7-1.2-1.1-1.7h6.4s0,0,0,0L26.5,3.4l1.5,4.6,1.5-2.3L27.5,.2l-5.7,.7-1.3,2.2,4.4-.6-5.2,8.4H1s0,2,0,2H11.1c.6,.1,1.6,.5,2.2,1.3,.8,1.1,.7,3,.7,3v3.3s-3.7-3.1-3.7-3.1v2.7c0,0,4.5,3.6,4.5,3.6l4.5-3.6Z"/><rect class="d" width="30" height="24"/></g></svg>
|
After Width: | Height: | Size: 525 B |
Loading…
x
Reference in New Issue
Block a user