Merge branch 'master' of gitlab.navinfo.com:CollectVehicle/OneMapQS

This commit is contained in:
squallzhjch 2023-08-04 10:11:55 +08:00
commit 8578ea0afd
39 changed files with 640 additions and 316 deletions

View File

@ -5,42 +5,42 @@
"code": 1012,
"name": "检查点",
"zoomMin": 16,
"zoomMax": 19
"zoomMax": 22
},
"2001": {
"table": "OMDB_RD_LINK",
"code": 2001,
"name": "道路线",
"zoomMin": 16,
"zoomMax": 17
"zoomMax": 22
},
"2002": {
"table": "OMDB_RD_LINK_FUNCTION_CLASS",
"code": 2002,
"name": "道路功能等级",
"zoomMin": 16,
"zoomMax": 17
"zoomMax": 22
},
"2008": {
"table": "OMDB_RD_LINK_KIND",
"code": 2008,
"name": "道路种别",
"zoomMin": 16,
"zoomMax": 17
"zoomMax": 22
},
"2010": {
"table": "OMDB_LINK_DIRECT",
"code": 2010,
"name": "道路方向",
"zoomMin": 16,
"zoomMax": 17
"zoomMax": 22
},
"2011": {
"table": "OMDB_LINK_NAME",
"code": 2011,
"name": "道路名",
"zoomMin": 16,
"zoomMax": 17,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -54,8 +54,8 @@
"table": "OMDB_LANE_MARK_BOUNDARYTYPE",
"code": 2013,
"name": "车道边界类型",
"zoomMin": 18,
"zoomMax": 21,
"zoomMin": 19,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -70,21 +70,21 @@
"code": 2019,
"name": "常规线限速",
"zoomMin": 16,
"zoomMax": 17
"zoomMax": 22
},
"2020": {
"table": "OMDB_LINK_SPEEDLIMIT_COND",
"code": 2020,
"name": "条件线限速",
"zoomMin": 16,
"zoomMax": 17
"zoomMax": 22
},
"2021": {
"table": "OMDB_LINK_SPEEDLIMIT_VAR",
"code": 2021,
"name": "可变线限速",
"zoomMin": 16,
"zoomMax": 17
"zoomMax": 22
},
"2022": {
"table": "OMDB_CON_ACCESS",
@ -110,8 +110,8 @@
"table": "OMDB_RDBOUND_BOUNDARYTYPE",
"code": 2083,
"name": "道路边界类型",
"zoomMin": 18,
"zoomMax": 21
"zoomMin": 19,
"zoomMax": 22
},
"2201":{
"table": "OMDB_BRIDGE",
@ -123,7 +123,7 @@
"code": 2202,
"name": "隧道",
"zoomMin": 16,
"zoomMax": 21,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -138,7 +138,7 @@
"code": 4001,
"name": "路口",
"zoomMin": 16,
"zoomMax": 17,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -153,7 +153,7 @@
"code": 4002,
"name": "常规点限速",
"zoomMin": 16,
"zoomMax": 21,
"zoomMax": 22,
"transformer": [
{
"k": "maxSpeed",
@ -174,7 +174,7 @@
"code": 4003,
"name": "条件点限速",
"zoomMin": 16,
"zoomMax": 21,
"zoomMax": 22,
"transformer": [
{
"k": "maxSpeed",
@ -189,7 +189,7 @@
"code": 4004,
"name": "可变点限速",
"zoomMin": 16,
"zoomMax": 21,
"zoomMax": 22,
"transformer": [
{
"k": "location",
@ -216,7 +216,7 @@
"code": 4006,
"name": "普通交限",
"zoomMin": 16,
"zoomMax": 21,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -255,7 +255,7 @@
"code": 4010,
"name": "电子眼",
"zoomMin": 16,
"zoomMax": 21,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -273,7 +273,7 @@
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "generateDirectReferenceLine(direct=3)"
"vlib": "generateDirectReferenceLine()"
},
{
"k": "geometry",
@ -288,7 +288,7 @@
"code": 4022,
"name": "交通灯",
"zoomMin": 16,
"zoomMax": 21,
"zoomMax": 22,
"transformer": [
]
},
@ -297,7 +297,7 @@
"code": 4601,
"name": "车信",
"zoomMin": 16,
"zoomMax": 17,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -323,8 +323,8 @@
"table": "OMDB_LANE_LINK_LG",
"code": 5001,
"name": "车道中心线",
"zoomMin": 18,
"zoomMax": 21,
"zoomMin": 19,
"zoomMax": 22,
"transformer": [
{
"k": "geometry",
@ -338,6 +338,37 @@
"table": "OMDB_AREA",
"code": 5002,
"name": "面测试"
},
"3005":{
"table": "OMDB_TRAFFIC_SIGN",
"code": 3005,
"name": "交通标牌",
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "normalizationTrafficSignHeight()"
},{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "generateDirectReferenceLine('', 0.2)"
}
]
},
"3006":{
"table": "OMDB_POLE",
"code": 3006,
"name": "杆状物",
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "normalizationPoleHeight()"
}
]
}
}
}

View File

@ -67,7 +67,7 @@ class Constant {
/**
* 地图最多缩放级别23
*/
const val MAX_ZOOM = 23
const val MAX_ZOOM = 22
/**
* 是否自动定位

View File

@ -1,5 +1,6 @@
package com.navinfo.omqs.bean
import com.google.gson.annotations.Expose
import com.navinfo.collect.library.data.entity.RenderEntity
import com.navinfo.omqs.db.ImportPreProcess
import kotlin.reflect.KFunction
@ -8,8 +9,11 @@ import kotlin.reflect.full.declaredMemberFunctions
class ImportConfig {
@Expose
var tableMap: MutableMap<String, TableInfo> = mutableMapOf()
@Expose
val tableGroupName: String = "OMDB数据"
@Expose
var checked : Boolean = true
val preProcess: ImportPreProcess = ImportPreProcess()

View File

@ -150,11 +150,11 @@ class ImportOMDBHelper @AssistedInject constructor(
if (list != null) {
// 将list数据转换为map
for ((index, line) in list.withIndex()) {
Log.d("ImportOMDBHelper", "解析第:${index + 1}")
val map = gson.fromJson<Map<String, Any>>(
line,
object : TypeToken<Map<String, Any>>() {}.getType()
)
if (line == null || line.trim() == "") {
continue
}
Log.d("ImportOMDBHelper", "解析第:${index+1}")
val map = gson.fromJson<Map<String, Any>>(line, object:TypeToken<Map<String, Any>>(){}.getType())
.toMutableMap()
map["qi_table"] = currentConfig.table
map["qi_name"] = currentConfig.name

View File

@ -10,7 +10,9 @@ import org.json.JSONObject
import org.locationtech.jts.algorithm.Angle
import org.locationtech.jts.geom.Coordinate
import org.locationtech.jts.geom.Geometry
import org.locationtech.jts.io.WKTWriter
import org.oscim.core.GeoPoint
import kotlin.math.min
class ImportPreProcess {
@ -27,9 +29,9 @@ 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"]
|| linkInEntity.properties["snodePid"] == linkOutEntity.properties["snodePid"]|| linkInEntity.properties["enodePid"] == linkOutEntity.properties["enodePid"])
return false
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
}
@ -105,9 +107,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)
@ -124,8 +126,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 =
@ -144,8 +146,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()
@ -202,24 +210,22 @@ class ImportPreProcess {
/**
* 生成与对应方向相同的方向线用以绘制方向箭头
* */
fun generateDirectReferenceLine(renderEntity: RenderEntity, direction: String = "") {
fun generateDirectReferenceLine(renderEntity: RenderEntity, direction: String = "", distance: String = "") {
// 根据数据或angle计算方向对应的角度和偏移量
val geometry = renderEntity.wkt
var isReverse = false // 是否为逆向
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如果是线获取最后两个点的方向
var point = Coordinate(geometry?.coordinate)
var pointStartArray = mutableListOf<Coordinate>()
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
point = Coordinate(geometry?.coordinate)
val point = Coordinate(geometry?.coordinate)
pointStartArray.add(point)
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)
@ -232,27 +238,48 @@ class ImportPreProcess {
val p2: Coordinate = coordinates.get(coordinates.size - 1)
// 计算线段的方向
radian = Angle.angle(p1, p2)
point = p2
pointStartArray.add(p1)
} else if (Geometry.TYPENAME_POLYGON == geometry?.geometryType) {
// 记录下面数据的每一个点位
pointStartArray.addAll(geometry.coordinates)
// 获取当前的面数据对应的方向信息
var angle = if(renderEntity?.properties?.get("angle") == null) {
if (renderEntity?.properties?.get("heading") == null) {
0.0
} else {
renderEntity?.properties?.get("heading")?.toDouble()!!
}
} else renderEntity?.properties?.get("angle")?.toDouble()!!
angle=(450-angle)%360
radian = Math.toRadians(angle)
}
// 计算偏移距离
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)
var dx: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.cos(radian)
var dy: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.sin(radian)
if (distance.isNotEmpty()) {
dx = GeometryTools.convertDistanceToDegree(distance.toDouble(), geometry?.coordinate?.y!!) * Math.cos(radian)
dy = GeometryTools.convertDistanceToDegree(distance.toDouble(), geometry?.coordinate?.y!!) * Math.sin(radian)
}
val coorEnd = Coordinate(point.getX() + dx, point.getY() + dy)
for (pointStart in pointStartArray) {
val coorEnd = Coordinate(pointStart.getX() + dx, pointStart.getY() + dy, pointStart.z)
val angleReference = ReferenceEntity()
angleReference.renderEntityId = renderEntity.id
angleReference.name = "${renderEntity.name}参考方向"
angleReference.table = renderEntity.table
angleReference.zoomMin = renderEntity.zoomMin
angleReference.zoomMax = renderEntity.zoomMax
angleReference.taskId = renderEntity.taskId
// 与原有方向指向平行的线
angleReference.geometry = WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd)))
angleReference.properties["qi_table"] = renderEntity.table
angleReference.properties["type"] = "angle"
Realm.getDefaultInstance().insert(angleReference)
}
val angleReference = ReferenceEntity()
angleReference.renderEntityId = renderEntity.id
angleReference.name = "${renderEntity.name}参考方向"
angleReference.table = renderEntity.table
angleReference.zoomMin = renderEntity.zoomMin
angleReference.zoomMax = renderEntity.zoomMax
angleReference.taskId = renderEntity.taskId
// 与原有方向指向平行的线
angleReference.geometry = GeometryTools.createLineString(arrayOf(point, coorEnd)).toString()
angleReference.properties["qi_table"] = renderEntity.table
angleReference.properties["type"] = "angle"
Realm.getDefaultInstance().insert(angleReference)
}
fun addAngleFromGeometry(renderEntity: RenderEntity): String {
@ -322,10 +349,6 @@ class ImportPreProcess {
referenceEntity.renderEntityId = renderEntity.id
referenceEntity.name = "${renderEntity.name}参考方向"
referenceEntity.table = renderEntity.table
referenceEntity.zoomMin = renderEntity.zoomMin
referenceEntity.zoomMax = renderEntity.zoomMax
referenceEntity.taskId = renderEntity.taskId
// 与原数据使用相同的geometry
referenceEntity.geometry = renderEntity.geometry.toString()
referenceEntity.properties["qi_table"] = renderEntity.table
@ -339,6 +362,7 @@ class ImportPreProcess {
}
}
/**
* 生成默认道路名数据
* */
@ -425,4 +449,60 @@ class ImportPreProcess {
}
}
}
/**
* 处理杆状物的高程数据
* */
fun normalizationPoleHeight(renderEntity: RenderEntity) {
// 获取杆状物的高程数据
val geometry = renderEntity.wkt
if (geometry!=null) {
var minHeight=Double.MAX_VALUE
var maxHeight=Double.MIN_VALUE
for (coordinate in geometry.coordinates) {
if (coordinate.z<minHeight) {
minHeight = coordinate.z
}
if (coordinate.z>maxHeight) {
maxHeight = coordinate.z
}
}
for (coordinate in geometry.coordinates) {
if (coordinate.z == minHeight) {
coordinate.z = 0.0
}
if (coordinate.z == maxHeight) {
coordinate.z = 40.0
}
}
renderEntity.geometry = WKTWriter(3).write(GeometryTools.createLineString(geometry.coordinates))
}
}
/**
* 处理交通标牌的高程数据
* */
fun normalizationTrafficSignHeight(renderEntity: RenderEntity) {
// 获取交通标牌的高程数据
val geometry = renderEntity.wkt
if (geometry!=null) {
// 获取所有的高程信息,计算高程的中位数,方便对高程做定制化处理
var midHeight=0.0
var countHeight = 0.0
for (coordinate in geometry.coordinates) {
countHeight+=coordinate.z
}
midHeight = countHeight/geometry.coordinates.size
// 对高程数据做特殊处理
for (coordinate in geometry.coordinates) {
if (coordinate.z>=midHeight) {
coordinate.z = 40.0
} else {
coordinate.z = 30.0
}
}
renderEntity.geometry = WKTWriter(3).write(GeometryTools.getPolygonGeometry(geometry.coordinates))
}
}
}

View File

@ -164,7 +164,7 @@ class TaskUploadScope(
val objects = realm.where(QsRecordBean::class.java)
.equalTo("linkId", /*"84207223282277331"*/hadLinkDvoBean.linkPid).and()
.equalTo("taskId", hadLinkDvoBean.taskId).findAll()
.equalTo("taskId", taskBean.id).findAll()
if (objects != null && objects.size > 0) {
val copyList = realm.copyFromRealm(objects)
@ -241,7 +241,7 @@ class TaskUploadScope(
change(FileUploadStatus.ERROR)
}
} else {
change(FileUploadStatus.NONE)
change(FileUploadStatus.NONE,"无可上传数据")
}
} catch (e: Throwable) {
change(FileUploadStatus.ERROR)

View File

@ -465,7 +465,7 @@ class MainActivity : BaseActivity() {
if (leftFragment != null) {
supportFragmentManager.beginTransaction().remove(leftFragment!!).commit()
leftFragment = null
binding.mainActivityBottomSheetGroup.visibility = View.GONE
hideMainActivityBottomSheetGroup()
binding.mainActivityLeftFragment.visibility = View.GONE
}
// binding.mainActivityDrawer.open()
@ -767,19 +767,10 @@ class MainActivity : BaseActivity() {
binding.mainActivityLeftFragment.visibility = View.GONE
}
binding.mainActivityBottomSheetGroup.visibility = View.GONE
mapController.mMapView.setScaleBarLayer(GLViewport.Position.BOTTOM_CENTER, 128, 5)
hideMainActivityBottomSheetGroup()
} else {
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE
mapController.mMapView.setScaleBarLayer(GLViewport.Position.BOTTOM_CENTER, 128, 65)
showMainActivityBottomSheetGroup()
}
mapController.mMapView.vtmMap.animator().animateTo(
GeoPoint(
mapController.mMapView.vtmMap.mapPosition.geoPoint.latitude,
mapController.mMapView.vtmMap.mapPosition.geoPoint.longitude
)
)
}
private fun voiceOnTouchStart() {
@ -800,7 +791,7 @@ class MainActivity : BaseActivity() {
fun onClickTaskFragment() {
if (leftFragment !is TaskManagerFragment) {
if (leftFragment == null) {
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE
showMainActivityBottomSheetGroup()
binding.mainActivityLeftFragment.visibility = View.VISIBLE
}
leftFragment = TaskManagerFragment {
@ -820,7 +811,7 @@ class MainActivity : BaseActivity() {
fun onClickResFragment() {
if (leftFragment !is QsRecordListFragment) {
if (leftFragment == null) {
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE
showMainActivityBottomSheetGroup()
binding.mainActivityLeftFragment.visibility = View.VISIBLE
}
leftFragment = QsRecordListFragment {
@ -834,6 +825,28 @@ class MainActivity : BaseActivity() {
}
}
private fun showMainActivityBottomSheetGroup(){
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE
mapController.mMapView.setScaleBarLayer(GLViewport.Position.BOTTOM_CENTER, 128, 65)
mapController.mMapView.vtmMap.animator().animateTo(
GeoPoint(
mapController.mMapView.vtmMap.mapPosition.geoPoint.latitude,
mapController.mMapView.vtmMap.mapPosition.geoPoint.longitude
)
)
}
private fun hideMainActivityBottomSheetGroup(){
binding.mainActivityBottomSheetGroup.visibility = View.GONE
mapController.mMapView.setScaleBarLayer(GLViewport.Position.BOTTOM_CENTER, 128, 5)
mapController.mMapView.vtmMap.animator().animateTo(
GeoPoint(
mapController.mMapView.vtmMap.mapPosition.geoPoint.latitude,
mapController.mMapView.vtmMap.mapPosition.geoPoint.longitude
)
)
}
/**
* 显示轨迹回放布局
*/
@ -868,7 +881,7 @@ class MainActivity : BaseActivity() {
fun onClickOfflineMapFragment() {
if (leftFragment !is OfflineMapFragment) {
if (leftFragment == null) {
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE
showMainActivityBottomSheetGroup()
binding.mainActivityLeftFragment.visibility = View.VISIBLE
}
leftFragment = OfflineMapFragment {

View File

@ -126,7 +126,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
//116.25017070328308 40.061730653134696
// 定位到指定位置
niMapController.mMapView.vtmMap.animator()
.animateTo(GeoPoint( 40.061730653134696, 116.25017070328308))
.animateTo(GeoPoint( 40.055878135289966, 116.3011588289057 ))
}
// R.id.personal_center_menu_task_list -> {
// findNavController().navigate(R.id.TaskManagerFragment)

View File

@ -1,5 +1,6 @@
package com.navinfo.omqs.ui.fragment.tasklist
import android.util.Log
import android.view.LayoutInflater
import android.view.ViewGroup
import com.navinfo.collect.library.data.entity.HadLinkDvoBean
@ -37,6 +38,11 @@ class TaskAdapter(
val binding: AdapterTaskBinding =
holder.viewBinding as AdapterTaskBinding
val bean = data[position]
if(bean.linkStatus==1){
binding.taskHead.background = binding.root.context.getDrawable(R.drawable.selector_task_head)
}else{
binding.taskHead.background = binding.root.context.getDrawable(R.drawable.selector_task_head_add_link)
}
binding.taskLinkPid.text = "PID:${bean.linkPid}"
binding.taskMesh.text = "mesh:${bean.mesh}"
binding.root.isSelected = selectPosition == position

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/baseline_add_24_press" android:state_selected="true" />
<item android:drawable="@drawable/baseline_add_24" android:state_selected="false" />
<item android:drawable="@drawable/icon_add_road_p" android:state_selected="true" />
<item android:drawable="@drawable/icon_add_road_n" android:state_selected="false" />
</selector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_add_task_p" android:state_selected="true"></item>
<item android:drawable="@drawable/icon_add_task_n" />
</selector>

View File

@ -154,7 +154,7 @@
android:id="@+id/main_activity_task_line"
style="@style/top_right_drawer_btns_style"
android:onClick="@{()->mainActivity.onClickTaskLink()}"
android:src="@drawable/icon_calc_disance" />
android:src="@drawable/icon_add_road" />
<ImageButton
android:id="@+id/main_activity_menu"

View File

@ -58,6 +58,7 @@
android:layout_height="0dp"
android:layout_marginTop="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/task_search" />
app:layout_constraintTop_toBottomOf="@id/task_search"
tools:ignore="MissingClass" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -17,7 +17,7 @@
<item
android:id="@+id/personal_center_menu_import_data"
android:icon="@drawable/ic_baseline_import_export_24"
android:visible="false"
android:visible="true"
android:title="导入数据" />
<item
android:id="@+id/personal_center_menu_import_yuan_data"
@ -38,7 +38,7 @@
<item
android:id="@+id/personal_center_menu_version"
android:icon="@drawable/ic_baseline_layers_24"
android:title="版本ONE_QE_V1.4.0_20230721_A" />
android:title="版本ONE_QE_V1.5.0_20230728_A" />
</group>
<group android:checkableBehavior="single">
<item android:title="小标题">

View File

@ -144,6 +144,7 @@
<xs:attribute name="blend" default="-1" type="xs:integer" use="optional"/>
<xs:attribute name="blend-fill" default="#000000" type="tns:color" use="optional"/>
<xs:attribute name="mesh" default="false" type="xs:boolean" use="optional"/>
<xs:attribute name="repeat" default="true" type="xs:boolean" use="optional"/>
</xs:complexType>
<xs:complexType name="caption">

View File

@ -111,6 +111,8 @@
<!-- src="assets:textures/water.png" -->
<style-area fade="-1" fill="#99badf" id="water" />
<style-area fill="#3742fa" id="sign-bg" />
<!--###### LINE styles ######-->
<!-- base style for fixed width lines -->
@ -1480,21 +1482,10 @@
</m>
<m k="qi_table">
<!--车道数-->
<m v="OMDB_LANE_NUM">
</m>
<!-- 道路线 -->
<m v="OMDB_RD_LINK">
<!-- <m v="OMDB_RD_LINK">
<line stroke="#9c9c9c" width="1" />
</m>
<!-- 检查点 -->
<m v="OMDB_CHECKPOINT">
<symbol src="assets:omdb/icon_1012_0.svg" symbol-height="64"
symbol-width="64"></symbol>
</m>
</m>-->
<!--道路种别-->
<m v="OMDB_RD_LINK_KIND">
@ -1529,151 +1520,6 @@
</m>
</m>
<!--常规点限速-->
<m v="OMDB_SPEEDLIMIT">
<m k="speedFlag" v="0">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4002_0.svg" symbol-height="46"
symbol-width="46"></symbol>
</m>
<m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4002_1.svg" symbol-height="46"
symbol-width="46"></symbol>
</m>
</m>
<!--条件点限速-->
<m v="OMDB_SPEEDLIMIT_COND">
<m k="speedFlag" v="0">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4003_0.svg" symbol-height="46"
symbol-width="46"></symbol>
</m>
<m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4003_1.svg" symbol-height="46"
symbol-width="46"></symbol>
</m>
</m>
<!--可变点限速-->
<m v="OMDB_SPEEDLIMIT_VAR" >
<m k="speedFlag" v="0">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4004_0.svg" symbol-height="46"
symbol-width="46"></symbol>
</m>
<m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4004_0.svg" symbol-height="46"
symbol-width="46"></symbol>
</m>
</m>
<!--车道中心线-->
<m v="OMDB_LANE_LINK_LG">
<m k="width" v="~">
<line stroke="#7A88A0" width="5" />
</m>
</m>0
<!-- 道路边界类型 -->
<m v="OMDB_RDBOUND_BOUNDARYTYPE">
<outline-layer id="boundaryType" stroke="#8e44ad" width="0.1" />
<m k="boundaryType" v="0|2|3|4|5|6|7|8|9">
<line stroke="#ffffff" use="boundaryType" width="0.1"/>
</m>
<m k="boundaryType" v="1">
<!--无标线无可区分边界-->
<line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.2"/>
</m>
</m>
<!-- 车道边界类型 -->
<m v="OMDB_LANE_MARK_BOUNDARYTYPE">
<outline-layer id="boundary" stroke="#ffffff" width="0.1" />
<m k="boundaryType" v="2">
<!--标线-->
<m k="markType" v="0|1|4|5|6|7|8">
<!--其他|实线-->
<m k="markColor" v="1">
<line stroke="#ffffff" use="boundaryType" />
</m>
<m k="markColor" v="2">
<line stroke="#eccc68" use="boundaryType" />
</m>
<m k="markColor" v="6">
<line stroke="#0000ff" use="boundaryType" />
</m>
<m k="markColor" v="7">
<line stroke="#00ff00" use="boundaryType" />
</m>
<m k="markColor" v="0|9">
<line stroke="#8e44ad" use="boundaryType" />
</m>
</m>
<m k="markType" v="2|3">
<!--其他|实线-->
<m v="0|1|2|3|4|5|6|7|8">
<!--其他|实线-->
<m k="markColor" v="1">
<line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.1"/>
</m>
<m k="markColor" v="2">
<line dasharray="12,6" repeat-start="0" stroke="#eccc68" width="0.1"/>
</m>
<m k="markColor" v="6">
<line dasharray="12,6" repeat-start="0" stroke="#0000ff" width="0.1"/>
</m>
<m k="markColor" v="7">
<line dasharray="12,6" repeat-start="0" stroke="#00ff00" width="0.1"/>
</m>
<m k="markColor" v="0|9">
<line dasharray="12,6" repeat-start="0" stroke="#8e44ad" width="0.1"/>
</m>
</m>
</m>
</m>
<m k="boundaryType" v="0|3|4|5|6|7|8|9">
<line stroke="#ffffff" use="boundaryType" />
</m>
<!--只区分虚线与实线-->
<m k="boundaryType" v="1">
<line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.1"/>
</m>
</m>
<!--隧道-->
<m v="OMDB_TUNNEL">
<m k="formOfWay">
<line dasharray="0.2,0.2" stroke="#d4237a" width="0.2" />
</m>
<m k="type" v="s_2_p">
<symbol repeat="false" repeat-start="0" rotate="false"
src="assets:omdb/icon_2202_0.svg" symbol-height="32" symbol-width="32"></symbol>
</m>
<m k="type" v="e_2_p">
<symbol repeat="false" repeat-start="0" rotate="false"
src="assets:omdb/icon_2202_1.svg" symbol-height="32" symbol-width="32"></symbol>
</m>
</m>
<!--道路方向-->
<m v="OMDB_LINK_DIRECT">
<m k="direct">
@ -1686,54 +1532,9 @@
</m>
</m>
<!--交通灯-->
<m v="OMDB_TRAFFICLIGHT">
<symbol repeat="false" rotate="false" src="assets:omdb/icon_4022_0.svg"
symbol-height="69" symbol-width="69"></symbol>
</m>
<!--普通交限-->
<m v="OMDB_RESTRICTION">
<m k="angle">
<symbol repeat="false" repeat-start="0" rotate="false"
src="assets:omdb/icon_4006_0.svg" symbol-height="69" symbol-width="69"></symbol>
</m>
<m k="type" v="angle">
<symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true"
src="assets:omdb/icon_arrow_right.svg" symbol-height="76"
symbol-width="76"></symbol>
</m>
<m k="type" v="s_2_e">
<line use="s2e" />
</m>
</m>
<!--电子眼-->
<m v="OMDB_ELECTRONICEYE">
<caption dy="-30" fill="#000000" k="name" priority="0" size="14"
stroke="#ffffff" stroke-width="1.0"></caption>
<m k="type" v="angle">
<symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true"
src="assets:omdb/icon_4010.svg" symbol-height="36" symbol-width="28"></symbol>
</m>
<m k="type" v="s_2_e">
<line use="s2e" />
</m>
</m>
<!-- 路口 -->
<m v="OMDB_INTERSECTION">
<m k="type" v="node">
<symbol src="assets:symbols/dot_blue_dark.svg"></symbol>
</m>
<m k="intersectionPid">
<symbol src="assets:symbols/dot_magenta.svg"></symbol>
</m>
</m>
<!-- 道路名 -->
<m v="OMDB_LINK_NAME">
<text use="road"></text>
<text use="road" size="16"></text>
</m>
<!-- 车信 -->
@ -2137,5 +1938,217 @@
</m>
</m>
</m>
<m v="OMDB_POLE">
<line stroke="#000000" width="2" cap="butt"></line>
</m>
<m v="OMDB_TRAFFIC_SIGN">
<area use="sign-bg" repeat="false" stroke="#ff0000" stroke-width="2"></area>
<m k="type" v="angle">
<line stroke="#00ff00" width="0.1"></line>
</m>
</m>
<m v="OMDB_AREA">
<area use="sign-bg" repeat="true" src="assets:omdb/area_test.jpg" stroke="#ff0000" stroke-width="2"></area>
</m>
<!-- 路口 -->
<m v="OMDB_INTERSECTION">
<m k="type" v="node">
<symbol src="assets:symbols/dot_blue_dark.svg"></symbol>
</m>
<m k="intersectionPid">
<symbol src="assets:symbols/dot_magenta.svg"></symbol>
</m>
</m>
<!--车道中心线-->
<m v="OMDB_LANE_LINK_LG">
<m k="width" v="~">
<line stroke="#7A88A0" width="3.8" />
</m>
</m>
<!--隧道-->
<m v="OMDB_TUNNEL">
<m k="formOfWay">
<line dasharray="4,4" stroke="#4624FF" width="0.4" />
</m>
<m k="type" v="s_2_p">
<symbol repeat="false" repeat-start="0" rotate="false"
src="assets:omdb/icon_2202_0.svg" symbol-height="24" symbol-width="24"></symbol>
</m>
<m k="type" v="e_2_p">
<symbol repeat="false" repeat-start="0" rotate="false"
src="assets:omdb/icon_2202_1.svg" symbol-height="24" symbol-width="24"></symbol>
</m>
</m>
<!-- 检查点 -->
<m v="OMDB_CHECKPOINT">
<symbol src="assets:omdb/icon_1012_0.svg" symbol-height="56"
symbol-width="56"></symbol>
</m>
<!-- 道路边界类型 -->
<m v="OMDB_RDBOUND_BOUNDARYTYPE">
<outline-layer id="boundaryType" stroke="#8e44ad" width="0.1" />
<m k="boundaryType" v="0|2|3|4|5|6|7|8|9">
<line stroke="#ffffff" use="boundaryType" width="0.1"/>
</m>
<m k="boundaryType" v="1">
<!--无标线无可区分边界-->
<line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.2"/>
</m>
</m>
<!-- 车道边界类型 -->
<m v="OMDB_LANE_MARK_BOUNDARYTYPE">
<outline-layer id="boundary" stroke="#ffffff" width="0.1" />
<m k="boundaryType" v="2">
<!--标线-->
<m k="markType" v="0|1|4|5|6|7|8">
<!--其他|实线-->
<m k="markColor" v="1">
<line stroke="#ffffff" use="boundaryType" />
</m>
<m k="markColor" v="2">
<line stroke="#eccc68" use="boundaryType" />
</m>
<m k="markColor" v="6">
<line stroke="#0000ff" use="boundaryType" />
</m>
<m k="markColor" v="7">
<line stroke="#00ff00" use="boundaryType" />
</m>
<m k="markColor" v="0|9">
<line stroke="#8e44ad" use="boundaryType" />
</m>
</m>
<m k="markType" v="2|3">
<!--其他|实线-->
<m v="0|1|2|3|4|5|6|7|8">
<!--其他|实线-->
<m k="markColor" v="1">
<line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.1"/>
</m>
<m k="markColor" v="2">
<line dasharray="12,6" repeat-start="0" stroke="#eccc68" width="0.1"/>
</m>
<m k="markColor" v="6">
<line dasharray="12,6" repeat-start="0" stroke="#0000ff" width="0.1"/>
</m>
<m k="markColor" v="7">
<line dasharray="12,6" repeat-start="0" stroke="#00ff00" width="0.1"/>
</m>
<m k="markColor" v="0|9">
<line dasharray="12,6" repeat-start="0" stroke="#8e44ad" width="0.1"/>
</m>
</m>
</m>
</m>
<m k="boundaryType" v="0|3|4|5|6|7|8|9">
<line stroke="#ffffff" use="boundaryType" />
</m>
<!--只区分虚线与实线-->
<m k="boundaryType" v="1">
<line dasharray="12,6" repeat-start="0" stroke="#ffffff" width="0.1"/>
</m>
</m>
<!--常规点限速-->
<m v="OMDB_SPEEDLIMIT">
<m k="speedFlag" v="0">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4002_0.svg" symbol-height="42"
symbol-width="42"></symbol>
</m>
<m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4002_1.svg" symbol-height="42"
symbol-width="42"></symbol>
</m>
</m>
<!--条件点限速-->
<m v="OMDB_SPEEDLIMIT_COND">
<m k="speedFlag" v="0">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4003_0.svg" symbol-height="42"
symbol-width="42"></symbol>
</m>
<m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4003_1.svg" symbol-height="42"
symbol-width="42"></symbol>
</m>
</m>
<!--可变点限速-->
<m v="OMDB_SPEEDLIMIT_VAR" >
<m k="speedFlag" v="0">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4004_0.svg" symbol-height="42"
symbol-width="42"></symbol>
</m>
<m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4004_0.svg" symbol-height="42"
symbol-width="42"></symbol>
</m>
</m>
<!--交通灯-->
<m v="OMDB_TRAFFICLIGHT">
<symbol repeat="false" rotate="false" src="assets:omdb/icon_4022_0.svg"
symbol-height="56" symbol-width="56"></symbol>
</m>
<!--普通交限-->
<m v="OMDB_RESTRICTION">
<m k="angle">
<symbol repeat="false" repeat-start="0" rotate="false"
src="assets:omdb/icon_4006_0.svg" symbol-height="56" symbol-width="56"></symbol>
</m>
<m k="type" v="angle">
<symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true"
src="assets:omdb/icon_arrow_right.svg" symbol-height="64"
symbol-width="64"></symbol>
</m>
<m k="type" v="s_2_e">
<line use="s2e" />
</m>
</m>
<!--电子眼-->
<m v="OMDB_ELECTRONICEYE">
<caption dy="-30" fill="#0000FF" k="name" priority="0" size="12"
stroke="#ffffff" stroke-width="1.0"></caption>
<m k="type" v="angle">
<symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true"
src="assets:omdb/icon_4010.svg" symbol-height="24" symbol-width="18"></symbol>
</m>
<m k="type" v="s_2_e">
<line use="s2e" />
</m>
</m>
</m>
</rendertheme>

View 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

View 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

View 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

View 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

View File

@ -1 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="136" height="136" viewBox="0 0 136 136"><defs><style>.a,.f{fill:#fff;}.a{opacity:0;}.b{fill:#ff5f4c;opacity:0.304;}.c{fill:#a74d4b;opacity:0.708;}.d{fill:url(#a);}.e{fill:url(#b);}.f{stroke:#db4646;stroke-width:3px;}.g{stroke:none;}.h{fill:none;}</style><radialGradient id="a" cx="0.21" cy="0.134" r="1.274" gradientTransform="matrix(0.849, 0.529, -0.307, 0.493, 0.073, -0.043)" gradientUnits="objectBoundingBox"><stop offset="0" stop-color="#ff9287"/><stop offset="0.786" stop-color="#ff5f4c"/><stop offset="1" stop-color="#ff5f4c"/></radialGradient><radialGradient id="b" cx="0.5" cy="0.5" r="0.5" gradientUnits="objectBoundingBox"><stop offset="0" stop-color="#e75545"/><stop offset="0.793" stop-color="#c4483b"/><stop offset="1" stop-color="#983b31"/></radialGradient></defs><g transform="translate(-956 -396)"><rect class="a" width="136" height="136" transform="translate(956 396)"/><g transform="translate(989.164 429.346)"><g transform="translate(10.653 81.66)"><ellipse class="b" cx="24.183" cy="8.497" rx="24.183" ry="8.497"/><ellipse class="c" cx="8.497" cy="3.268" rx="8.497" ry="3.268" transform="translate(15.687 5.229)"/></g><g transform="translate(0 0)"><path class="d" d="M22.956,71.538q-.792-.8-1.543-1.533A36.466,36.466,0,0,1,0,36.4C0,16.3,15.6,0,34.837,0S69.673,16.3,69.673,36.4c0,15.235-8.954,28.283-21.664,33.711q-.588.673-1.219,1.424A73.582,73.582,0,0,0,35.337,90.157S30.335,78.981,22.956,71.538Z" transform="translate(0 0)"/><circle class="e" cx="27.451" cy="27.451" r="27.451" transform="translate(7.029 7.568)"/></g></g><g transform="translate(10174 7640)"><g class="f" transform="translate(-9178 -7204)"><circle class="g" cx="28" cy="28" r="28"/><circle class="h" cx="28" cy="28" r="26.5"/></g></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="136"
height="136" viewBox="0 0 136 136">
<defs>
<style>
.a,.f{fill:#fff;}.a{opacity:0;}.b{fill:#ff5f4c;opacity:0.304;}.c{fill:#a74d4b;opacity:0.708;}.d{fill:url(#a);}.e{fill:url(#b);}.f{stroke:#db4646;stroke-width:3px;}.g{stroke:none;}.h{fill:none;}
</style>
<radialGradient id="a" cx="0.21" cy="0.134" r="1.274"
gradientTransform="matrix(0.849, 0.529, -0.307, 0.493, 0.073, -0.043)"
gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#ff9287" />
<stop offset="0.786" stop-color="#ff5f4c" />
<stop offset="1" stop-color="#ff5f4c" />
</radialGradient>
<radialGradient id="b" cx="0.5" cy="0.5" r="0.5" gradientUnits="objectBoundingBox">
<stop offset="0" stop-color="#e75545" />
<stop offset="0.793" stop-color="#c4483b" />
<stop offset="1" stop-color="#983b31" />
</radialGradient>
</defs>
<g transform="translate(-956 -396)">
<rect class="a" width="136" height="136" transform="translate(956 396)" />
<g transform="translate(989.164 429.346)">
<g transform="translate(10.653 81.66)">
<ellipse class="b" cx="24.183" cy="8.497" rx="24.183" ry="8.497" />
<ellipse class="c" cx="8.497" cy="3.268" rx="8.497" ry="3.268"
transform="translate(15.687 5.229)" />
</g>
<g transform="translate(0 0)">
<path class="d"
d="M22.956,71.538q-.792-.8-1.543-1.533A36.466,36.466,0,0,1,0,36.4C0,16.3,15.6,0,34.837,0S69.673,16.3,69.673,36.4c0,15.235-8.954,28.283-21.664,33.711q-.588.673-1.219,1.424A73.582,73.582,0,0,0,35.337,90.157S30.335,78.981,22.956,71.538Z"
transform="translate(0 0)" />
<circle class="e" cx="27.451" cy="27.451" r="27.451"
transform="translate(7.029 7.568)" />
</g>
</g>
<g transform="translate(10174 7640)">
<g class="f" transform="translate(-9178 -7204)">
<circle class="g" cx="28" cy="28" r="28" />
<circle class="h" cx="28" cy="28" r="26.5" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@ -72,7 +72,7 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, traceP
vectorNiLocationTileLayer = VectorTileLayer(mMapView.vtmMap, mapLifeNiLocationTileSource)
labelNiLocationLayer =
LabelLayer(mMapView.vtmMap, vectorNiLocationTileLayer, LabelTileLoaderHook(), 15)
LabelLayer(mMapView.vtmMap, vectorNiLocationTileLayer, LabelTileLoaderHook())
if (vectorNiLocationTileLayer != null) {
addLayer(vectorNiLocationTileLayer, NIMapView.LAYER_GROUPS.BASE)
@ -110,8 +110,7 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, traceP
omdbReferenceLabelLayer = LabelLayer(
mMapView.vtmMap,
omdbReferenceTileLayer,
LabelTileLoaderHook(),
Constant.OMDB_MIN_ZOOM
LabelTileLoaderHook()
)
if (omdbReferenceTileLayer != null) {
addLayer(omdbReferenceTileLayer, NIMapView.LAYER_GROUPS.VECTOR_TILE)
@ -124,8 +123,7 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, traceP
omdbLabelLayer = LabelLayer(
mMapView.vtmMap,
omdbVectorTileLayer,
LabelTileLoaderHook(),
Constant.OMDB_MIN_ZOOM
LabelTileLoaderHook()
)
if (omdbVectorTileLayer != null) {
addLayer(omdbVectorTileLayer, NIMapView.LAYER_GROUPS.VECTOR_TILE)

View File

@ -8,7 +8,6 @@ import android.util.Log;
import androidx.annotation.RequiresApi;
import com.navinfo.collect.library.data.entity.GeometryFeatureEntity;
import com.navinfo.collect.library.data.entity.RenderEntity;
import org.locationtech.jts.geom.Coordinate;
@ -20,8 +19,6 @@ import org.locationtech.jts.geom.MultiPoint;
import org.locationtech.jts.geom.MultiPolygon;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.geom.Polygon;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKBReader;
import org.oscim.core.MapElement;
import org.oscim.core.Tag;
import org.oscim.core.Tile;
@ -146,8 +143,9 @@ public class OMDBDataDecoder extends TileDecoder {
private void processCoordinateArray(Coordinate[] coordinates, boolean removeLast) {
int length = removeLast ? coordinates.length - 1 : coordinates.length;
for (int i = 0; i < length; i++) {
// double z = longitudeToX(MercatorProjection.pixelXToLongitudeWithScale(MercatorProjection.metersToPixelsWithScale((float) coordinates[i].z, coordinates[i].y, mTileScale), mTileScale))* mTileScale/8;
mMapElement.addPoint((float) ((longitudeToX(coordinates[i].x) - mTileX) * mTileScale),
(float) ((latitudeToY(coordinates[i].y) - mTileY) * mTileScale));
(float) ((latitudeToY(coordinates[i].y) - mTileY) * mTileScale), 0);
}
// int length = removeLast ? coordinates.length - 1 : coordinates.length;

View File

@ -140,8 +140,10 @@ public class OMDBReferenceDecoder extends TileDecoder {
private void processCoordinateArray(Coordinate[] coordinates, boolean removeLast) {
int length = removeLast ? coordinates.length - 1 : coordinates.length;
for (int i = 0; i < length; i++) {
// 将Z坐标的米转换为屏幕像素坐标
// double z = longitudeToX(MercatorProjection.pixelXToLongitudeWithScale(MercatorProjection.metersToPixelsWithScale((float) coordinates[i].z, coordinates[i].y, mTileScale), mTileScale))* mTileScale/8;
mMapElement.addPoint((float) ((longitudeToX(coordinates[i].x) - mTileX) * mTileScale),
(float) ((latitudeToY(coordinates[i].y) - mTileY) * mTileScale));
(float) ((latitudeToY(coordinates[i].y) - mTileY) * mTileScale), 0);
}
// int length = removeLast ? coordinates.length - 1 : coordinates.length;

View File

@ -10,7 +10,8 @@ public class OMDBReferenceTileSource extends TileSource {
@Override
public ITileDataSource getDataSource() {
return new OverzoomTileDataSource(new OMDBReferenceDataSource(), Constant.OVER_ZOOM);
//return new OverzoomTileDataSource(new OMDBReferenceDataSource(), Constant.OVER_ZOOM);
return new OMDBReferenceDataSource();
}
@Override

View File

@ -10,7 +10,8 @@ public class OMDBTileSource extends TileSource {
@Override
public ITileDataSource getDataSource() {
return new OverzoomTileDataSource(new OMDBTileDataSource(), Constant.OVER_ZOOM);
// return new OverzoomTileDataSource(new OMDBTileDataSource(), Constant.OVER_ZOOM);
return new OMDBTileDataSource();
}
@Override

View File

@ -12,7 +12,8 @@ public class RealmDBTileSource extends TileSource {
@Override
public ITileDataSource getDataSource() {
return new OverzoomTileDataSource(new RealmDBTileDataSource(), Constant.OVER_ZOOM);
//return new OverzoomTileDataSource(new RealmDBTileDataSource(), Constant.OVER_ZOOM);
return new RealmDBTileDataSource();
}
@Override

View File

@ -30,8 +30,8 @@ public class Constant {
}
public static String[] HAD_LAYER_INVISIABLE_ARRAY;
public static final int OVER_ZOOM = 21;
public static final int MAX_ZOOM = 23;
public static final int OVER_ZOOM = 22;
public static final int MAX_ZOOM = 22;
public static final int OMDB_MIN_ZOOM = 16;
public static int TASK_ID = -1;

View File

@ -222,9 +222,7 @@ public class GeometryTools {
Geometry geometry;
try {
geometry = reader.read(wkt);
if (geometry != null) {
return geometry;
}

2
vtm

@ -1 +1 @@
Subproject commit c74bcd29c24cddf395fa9654ef0b69d0c88ac3ad
Subproject commit 4c9926d105877fce305025e8f85651ccea947c4f