diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json
index db3273a8..a211f51e 100644
--- a/app/src/main/assets/omdb_config.json
+++ b/app/src/main/assets/omdb_config.json
@@ -224,7 +224,7 @@
"k": "geometry",
"v": "~",
"klib": "geometry",
- "vlib": "generateDirectReferenceLine()"
+ "vlib": "generateDirectReferenceLine(direct=3)"
},
{
"k": "geometry",
@@ -239,12 +239,6 @@
"code": 4022,
"name": "交通灯",
"transformer": [
- {
- "k": "angle",
- "v": "~",
- "klib": "angle",
- "vlib": "0"
- }
]
},
"4601":{
diff --git a/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt b/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt
index 1d74d315..5c6683b2 100644
--- a/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt
+++ b/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt
@@ -38,7 +38,7 @@ class ImportConfig {
if (renderEntity.properties.containsKey(k)) { // json配置的key可以匹配到数据
for (v in processKeyOrValue(value)) {
if ("~" == v ) { // ~符可以匹配任意元素
- if (valuelib.endsWith("()")) { // 以()结尾,说明该value配置是一个function,需要通过反射调用指定方法
+ if (valuelib.endsWith(")")) { // 以()结尾,说明该value配置是一个function,需要通过反射调用指定方法
// 获取方法名
val methodName = valuelib.substringBefore("(")
// 获取参数
@@ -51,8 +51,9 @@ class ImportConfig {
methodParams[1] to renderEntity
)
for ((index, value) in params.withIndex()) {
- if (methodParams.size>index+1) {
- callByParams[methodParams[index+1]] = value
+ // 前2个参数确定为对象本身和RenderEntity,因此自定义参数从index+2开始设置
+ if (methodParams.size>index+2) {
+ callByParams[methodParams[index+2]] = value
}
}
when(val result = method.callBy(callByParams)) { // 如果方法返回的数据类型是boolean,且返回为false,则该数据不处理
@@ -66,7 +67,7 @@ class ImportConfig {
}
break@m
} else if (renderEntity.properties[k] == v) { // 完全匹配
- if (valuelib.endsWith("()")) { // 以()结尾,说明该value配置是一个function,需要通过反射调用指定方法
+ if (valuelib.endsWith(")")) { // 以()结尾,说明该value配置是一个function,需要通过反射调用指定方法
// 获取方法名
val methodName = valuelib.substringBefore("(")
// 获取参数
@@ -79,8 +80,9 @@ class ImportConfig {
methodParams[1] to renderEntity
)
for ((index, value) in params.withIndex()) {
- if (methodParams.size>index+1) {
- callByParams[methodParams[index+1]] = value
+ // 前2个参数确定为对象本身和RenderEntity,因此自定义参数从index+2开始设置
+ if (methodParams.size>index+2) {
+ callByParams[methodParams[index+2]] = value
}
}
when(val result = method.callBy(callByParams)) {
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 f556e19c..de475584 100644
--- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
+++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt
@@ -26,7 +26,7 @@ class ImportPreProcess {
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"]
+ 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
}
@@ -48,11 +48,13 @@ class ImportPreProcess {
isReverse = true;
}
}
- if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
+ 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
}
+ // angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
+ angle=(450-angle)%360
radian = Math.toRadians(angle)
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
var coordinates = geometry.coordinates
@@ -99,6 +101,8 @@ class ImportPreProcess {
if (isReverse) {
angle += 180
}
+ // angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
+ angle=(450-angle)%360
radian = Math.toRadians(angle)
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
var coordinates = geometry.coordinates
@@ -169,6 +173,8 @@ class ImportPreProcess {
if (isReverse) {
angle += 180
}
+ // angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
+ angle=(450-angle)%360
radian = Math.toRadians(angle)
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
var coordinates = geometry.coordinates
@@ -186,7 +192,7 @@ 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 coorEnd = Coordinate(point.getX() + dy, point.getY() - dx)
+ val coorEnd = Coordinate(point.getX() + dx, point.getY() + dy)
val angleReference = ReferenceEntity()
angleReference.renderEntityId = renderEntity.id
@@ -249,102 +255,6 @@ class ImportPreProcess {
}
- /**
- * 自动生成普通交限的参考数据
- * */
- fun generateRestrictionRerference(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) {
- var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
- radian = Math.toRadians(angle)
- }
-
- // 计算偏移距离
- val dx: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.sin(radian)
- val dy: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.cos(radian)
-
- // 计算偏移后的点
- val pointTranS =
- GeoPoint(point.getY() - dx, point.getX() + dy) // 向右偏移的点
-
- // 计算与原有方向平行的终点坐标
- val pointTranE = GeoPoint(pointTranS.latitude + dy, pointTranS.longitude + dx)
-
- renderEntity.geometry = GeometryTools.createGeometry(pointTranS).toString()
-
- // 将这个点记录在数据中
- val startEndReference = ReferenceEntity()
- startEndReference.renderEntityId = renderEntity.id
- startEndReference.name = "普通交限参考线"
- startEndReference.table = renderEntity.table
- // 起终点坐标组成的线
- startEndReference.geometry = GeometryTools.createLineString(listOf(GeoPoint(point.y, point.x), pointTranS)).toString()
- startEndReference.properties["qi_table"] = renderEntity.table
- startEndReference.properties["type"] = "s_2_e"
- Realm.getDefaultInstance().insert(startEndReference)
-
- val angleReference = ReferenceEntity()
- angleReference.renderEntityId = renderEntity.id
- angleReference.name = "普通交限参考方向"
- angleReference.table = renderEntity.table
- // 与原有方向指向平行的线
- angleReference.geometry = GeometryTools.createLineString(listOf(pointTranS, pointTranE)).toString()
- angleReference.properties["qi_table"] = renderEntity.table
- angleReference.properties["type"] = "angle"
- Realm.getDefaultInstance().insert(angleReference)
- }
-
- /**
- * 自动生成电子眼的参考数据
- * */
- fun generateElectronicEyeRerference(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) {
- var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
- radian = Math.toRadians(angle)
- }
-
- // 计算偏移距离
- val dx: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.sin(radian)
- val dy: Double = GeometryTools.convertDistanceToDegree(3.0, geometry?.coordinate?.y!!) * Math.cos(radian)
-
- // 计算偏移后的点
- val pointTranS =
- GeoPoint(point.getY() - dx, point.getX() + dy) // 向右偏移的点
-
- // 计算与原有方向平行的终点坐标
- val pointTranE = GeoPoint(pointTranS.latitude + dy, pointTranS.longitude + dx)
-
- renderEntity.geometry = GeometryTools.createGeometry(pointTranS).toString()
-
- // 记录参考数据,绘制电子眼方向
- val startEndReference = ReferenceEntity()
- startEndReference.renderEntityId = renderEntity.id
- startEndReference.name = "电子眼参考线"
- startEndReference.table = renderEntity.table
- // 起终点坐标组成的线
- startEndReference.geometry = GeometryTools.createLineString(listOf(GeoPoint(point.y, point.x), pointTranS)).toString()
- startEndReference.properties["qi_table"] = renderEntity.table
- startEndReference.properties["type"] = "s_2_e"
- Realm.getDefaultInstance().insert(startEndReference)
-
- val angleReference = ReferenceEntity()
- angleReference.renderEntityId = renderEntity.id
- angleReference.name = "电子眼参考方向"
- angleReference.table = renderEntity.table
- // 与原有方向指向平行的线
- angleReference.geometry = GeometryTools.createLineString(listOf(pointTranS, pointTranE)).toString()
- angleReference.properties["qi_table"] = renderEntity.table
- angleReference.properties["type"] = "angle"
- Realm.getDefaultInstance().insert(angleReference)
- }
-
/**
* 生成默认道路名数据
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt
index c46932f7..d1a82fbd 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt
@@ -230,7 +230,7 @@ class MainActivity : BaseActivity() {
}
//监听地图中点变化
viewModel.liveDataCenterPoint.observe(this) {
- Log.e("qj", "${it.longitude}")
+// Log.e("qj", "${it.longitude}")
try {
if (it != null && it.longitude != null && it.latitude != null) {
binding.mainActivityGeometry.text = "经纬度:${
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 69881185..3c687be0 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
@@ -112,7 +112,7 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) :
viewModel.readRealmData()
// 定位到指定位置
niMapController.mMapView.vtmMap.animator()
- .animateTo(GeoPoint( 39.80130797136839, 116.51808677349096 ))
+ .animateTo(GeoPoint( 39.799624915997725, 116.51407667184905 ))
}
// R.id.personal_center_menu_task_list -> {
// findNavController().navigate(R.id.TaskManagerFragment)
diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml
index 543f0a22..29d2d7b1 100644
--- a/collect-library/src/main/assets/editormarker.xml
+++ b/collect-library/src/main/assets/editormarker.xml
@@ -1809,6 +1809,7 @@