fix: 修改普通交限的显示
This commit is contained in:
parent
12e9fd1a2a
commit
22f52429f4
@ -131,7 +131,7 @@
|
||||
"k": "geometry",
|
||||
"v": "~",
|
||||
"klib": "geometry",
|
||||
"vlib": "translateRight()"
|
||||
"vlib": "translateRightWithAngle()"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -5,6 +5,7 @@ import com.navinfo.collect.library.utils.GeometryTools
|
||||
import org.locationtech.jts.algorithm.Angle
|
||||
import org.locationtech.jts.geom.Coordinate
|
||||
import org.locationtech.jts.geom.Geometry
|
||||
import org.oscim.core.GeoPoint
|
||||
|
||||
|
||||
class ImportPreProcess {
|
||||
@ -37,8 +38,8 @@ class ImportPreProcess {
|
||||
}
|
||||
|
||||
// 计算偏移距离
|
||||
val dx: Double = GeometryTools.convertDistanceToDegree(5.0, geometry?.coordinate?.y!!) * Math.cos(radian)
|
||||
val dy: Double = GeometryTools.convertDistanceToDegree(5.0, geometry?.coordinate?.y!!) * Math.sin(radian)
|
||||
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 coord =
|
||||
@ -50,6 +51,42 @@ class ImportPreProcess {
|
||||
return renderEntity
|
||||
}
|
||||
|
||||
/**
|
||||
* 将要素按照点位角度的垂直方向右移5米,并生成一个按照垂直角度指向方向的线段,用以显示有方向的图标
|
||||
* */
|
||||
fun translateRightWithAngle(renderEntity: RenderEntity): RenderEntity {
|
||||
// 获取当前renderEntity的geometry
|
||||
val geometry = renderEntity.wkt
|
||||
var radian = 0.0 // geometry的角度,如果是点,获取angle,如果是线,获取最后两个点的方向
|
||||
var point = Coordinate(geometry?.coordinate)
|
||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
||||
val angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
|
||||
radian = Math.toRadians(angle)
|
||||
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
|
||||
val p1: Coordinate = geometry.coordinates.get(geometry.coordinates.size - 2)
|
||||
val p2: Coordinate = geometry.coordinates.get(geometry.coordinates.size - 1)
|
||||
// 计算线段的方向
|
||||
radian = Angle.angle(p1, p2)
|
||||
point = p2
|
||||
}
|
||||
|
||||
// 根据角度计算偏移距离
|
||||
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 coordMid =
|
||||
// Coordinate(point.getX() + dy, point.getY() - dx)
|
||||
val pointStart = GeoPoint(point.getY() - dx, point.getX() + dy)
|
||||
// val pointStart = GeoPoint(pointMid.latitude-dy, pointMid.longitude-dx)
|
||||
val pointEnd = GeoPoint(pointStart.latitude- dx, pointStart.longitude+ dy)
|
||||
|
||||
// 将这个线记录在数据中
|
||||
val geometryTranslate: Geometry = GeometryTools.createLineString(listOf(pointStart, pointEnd))
|
||||
renderEntity.geometry = geometryTranslate.toString()
|
||||
return renderEntity
|
||||
}
|
||||
|
||||
fun addAngleFromGeometry(renderEntity: RenderEntity): String {
|
||||
if (!renderEntity.properties.containsKey("angle")) {
|
||||
if (renderEntity.wkt!=null) {
|
||||
|
@ -94,6 +94,7 @@
|
||||
<xs:enumeration value="name"/>
|
||||
<xs:enumeration value="maxSpeed"/><!--最高速度-->
|
||||
<xs:enumeration value="minSpeed"/><!--最低速度-->
|
||||
<xs:enumeration value="angle"/><!--角度-->
|
||||
<xs:enumeration value="ref"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
@ -1730,7 +1730,7 @@
|
||||
stroke-width="1.0"></caption>
|
||||
</m>
|
||||
<m v="1">
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="16" stroke="#ffffff"
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
<symbol src="assets:omdb/icon_4002_1.png" symbol-width="46" symbol-height="46"></symbol>
|
||||
<!-- <circle fill="#ffffff" radius="28" scale-radius="true" stroke="#00ff00" stroke-width="6"/>-->
|
||||
@ -1818,14 +1818,14 @@
|
||||
<m k="speedFlag">
|
||||
<m v="0">
|
||||
<!-- <symbol src="assets:omdb/round_speedlimit.svg" symbol-width="30" symbol-height="30"></symbol>-->
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="16" stroke="#ffffff"
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
<symbol src="assets:omdb/icon_4003_0.png" symbol-width="46" symbol-height="46"></symbol>
|
||||
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
</m>
|
||||
<m v="1">
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="16" stroke="#ffffff"
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
<symbol src="assets:omdb/icon_4003_1.png" symbol-width="46" symbol-height="46"></symbol>
|
||||
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
@ -1837,14 +1837,14 @@
|
||||
<m v="OMDB_SPEEDLIMIT_VAR">
|
||||
<m v="0">
|
||||
<!-- <symbol src="assets:omdb/round_speedlimit.svg" symbol-width="30" symbol-height="30"></symbol>-->
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="16" stroke="#ffffff"
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
<symbol src="assets:omdb/icon_4004_0.png" symbol-width="46" symbol-height="46"></symbol>
|
||||
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
</m>
|
||||
<m v="1">
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="16" stroke="#ffffff"
|
||||
<caption k="maxSpeed" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
<symbol src="assets:omdb/icon_4004_1.png" symbol-width="46" symbol-height="46"></symbol>
|
||||
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
|
||||
@ -1860,7 +1860,7 @@
|
||||
<m k="direct">
|
||||
<m v="2">
|
||||
<!-- <lineSymbol src="assets:omdb/oneway_right.svg"></lineSymbol>-->
|
||||
<symbol src="assets:omdb/oneway_right.svg" ></symbol>
|
||||
<lineSymbol src="assets:omdb/oneway_right.svg" ></lineSymbol>
|
||||
</m>
|
||||
<m v="3">
|
||||
<!-- <lineSymbol src="assets:omdb/oneway_left.svg"></lineSymbol>-->
|
||||
@ -1874,7 +1874,10 @@
|
||||
</m>
|
||||
<!--普通交限-->
|
||||
<m v="OMDB_RESTRICTION">
|
||||
<symbol src="assets:omdb/icon_4006_0.png" repeat="false" symbol-width="46" symbol-height="46" rotate="false"></symbol>
|
||||
<symbol src="assets:omdb/icon_4006_0.png" repeat="false" symbol-width="35" symbol-height="35" rotate="true" repeat-start="0" ></symbol>
|
||||
<!-- <line stroke="#14582c" width="0.1"/>-->
|
||||
<!-- <caption k="angle" fill="#000000" priority="0" size="14" stroke="#ffffff"-->
|
||||
<!-- stroke-width="1.0"></caption>-->
|
||||
</m>
|
||||
</m>
|
||||
</rendertheme>
|
@ -22,7 +22,7 @@ open class RenderEntity() : RealmObject() {
|
||||
lateinit var name: String //要素名
|
||||
lateinit var table: String //要素表名
|
||||
var code: Int = 0 // 要素编码
|
||||
var geometry: String = ""
|
||||
var geometry: String = "" // 要素渲染参考的geometry,该数据可能会在导入预处理环节被修改,原始geometry会保存在properties的geometry字段下
|
||||
get() {
|
||||
wkt = GeometryTools.createGeometry(field)
|
||||
return field
|
||||
|
Loading…
x
Reference in New Issue
Block a user