fix: 合并代码
@@ -5,42 +5,45 @@
|
|||||||
"code": 1012,
|
"code": 1012,
|
||||||
"name": "检查点",
|
"name": "检查点",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 19
|
||||||
},
|
},
|
||||||
"2001": {
|
"2001": {
|
||||||
"table": "OMDB_RD_LINK",
|
"table": "OMDB_RD_LINK",
|
||||||
"code": 2001,
|
"code": 2001,
|
||||||
"name": "道路线",
|
"name": "道路线",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 17
|
||||||
},
|
},
|
||||||
"2002": {
|
"2002": {
|
||||||
"table": "OMDB_RD_LINK_FUNCTION_CLASS",
|
"table": "OMDB_RD_LINK_FUNCTION_CLASS",
|
||||||
"code": 2002,
|
"code": 2002,
|
||||||
"name": "道路功能等级",
|
"name": "道路功能等级",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 19
|
||||||
},
|
},
|
||||||
"2008": {
|
"2008": {
|
||||||
"table": "OMDB_RD_LINK_KIND",
|
"table": "OMDB_RD_LINK_KIND",
|
||||||
"code": 2008,
|
"code": 2008,
|
||||||
"name": "道路种别",
|
"name": "道路种别",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 19,
|
||||||
|
"checkLinkId": false
|
||||||
},
|
},
|
||||||
"2010": {
|
"2010": {
|
||||||
"table": "OMDB_LINK_DIRECT",
|
"table": "OMDB_LINK_DIRECT",
|
||||||
"code": 2010,
|
"code": 2010,
|
||||||
"name": "道路方向",
|
"name": "道路方向",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 19,
|
||||||
|
"checkLinkId": false
|
||||||
},
|
},
|
||||||
"2011": {
|
"2011": {
|
||||||
"table": "OMDB_LINK_NAME",
|
"table": "OMDB_LINK_NAME",
|
||||||
"code": 2011,
|
"code": 2011,
|
||||||
"name": "道路名",
|
"name": "道路名",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 19,
|
||||||
|
"checkLinkId": false,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -54,8 +57,9 @@
|
|||||||
"table": "OMDB_LANE_MARK_BOUNDARYTYPE",
|
"table": "OMDB_LANE_MARK_BOUNDARYTYPE",
|
||||||
"code": 2013,
|
"code": 2013,
|
||||||
"name": "车道边界类型",
|
"name": "车道边界类型",
|
||||||
"zoomMin": 19,
|
"zoomMin": 18,
|
||||||
"zoomMax": 22,
|
"zoomMax": 21,
|
||||||
|
"checkLinkId": false,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -70,21 +74,21 @@
|
|||||||
"code": 2019,
|
"code": 2019,
|
||||||
"name": "常规线限速",
|
"name": "常规线限速",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 19
|
||||||
},
|
},
|
||||||
"2020": {
|
"2020": {
|
||||||
"table": "OMDB_LINK_SPEEDLIMIT_COND",
|
"table": "OMDB_LINK_SPEEDLIMIT_COND",
|
||||||
"code": 2020,
|
"code": 2020,
|
||||||
"name": "条件线限速",
|
"name": "条件线限速",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 19
|
||||||
},
|
},
|
||||||
"2021": {
|
"2021": {
|
||||||
"table": "OMDB_LINK_SPEEDLIMIT_VAR",
|
"table": "OMDB_LINK_SPEEDLIMIT_VAR",
|
||||||
"code": 2021,
|
"code": 2021,
|
||||||
"name": "可变线限速",
|
"name": "可变线限速",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22
|
"zoomMax": 19
|
||||||
},
|
},
|
||||||
"2022": {
|
"2022": {
|
||||||
"table": "OMDB_CON_ACCESS",
|
"table": "OMDB_CON_ACCESS",
|
||||||
@@ -110,20 +114,31 @@
|
|||||||
"table": "OMDB_RDBOUND_BOUNDARYTYPE",
|
"table": "OMDB_RDBOUND_BOUNDARYTYPE",
|
||||||
"code": 2083,
|
"code": 2083,
|
||||||
"name": "道路边界类型",
|
"name": "道路边界类型",
|
||||||
"zoomMin": 19,
|
"zoomMin": 18,
|
||||||
"zoomMax": 22
|
"zoomMax": 21,
|
||||||
|
"checkLinkId": false
|
||||||
},
|
},
|
||||||
"2201":{
|
"2201":{
|
||||||
"table": "OMDB_BRIDGE",
|
"table": "OMDB_BRIDGE",
|
||||||
"code": 2201,
|
"code": 2201,
|
||||||
"name": "桥"
|
"name": "桥",
|
||||||
|
"zoomMin": 16,
|
||||||
|
"zoomMax": 21,
|
||||||
|
"transformer": [
|
||||||
|
{
|
||||||
|
"k": "geometry",
|
||||||
|
"v": "~",
|
||||||
|
"klib": "geometry",
|
||||||
|
"vlib": "generateS2EReferencePoint(bridgeType,OMDB_BRIDGE)"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"2202":{
|
"2202":{
|
||||||
"table": "OMDB_TUNNEL",
|
"table": "OMDB_TUNNEL",
|
||||||
"code": 2202,
|
"code": 2202,
|
||||||
"name": "隧道",
|
"name": "隧道",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 21,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -138,7 +153,7 @@
|
|||||||
"code": 4001,
|
"code": 4001,
|
||||||
"name": "路口",
|
"name": "路口",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 19,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -153,7 +168,7 @@
|
|||||||
"code": 4002,
|
"code": 4002,
|
||||||
"name": "常规点限速",
|
"name": "常规点限速",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 19,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "maxSpeed",
|
"k": "maxSpeed",
|
||||||
@@ -174,7 +189,7 @@
|
|||||||
"code": 4003,
|
"code": 4003,
|
||||||
"name": "条件点限速",
|
"name": "条件点限速",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 19,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "maxSpeed",
|
"k": "maxSpeed",
|
||||||
@@ -189,7 +204,7 @@
|
|||||||
"code": 4004,
|
"code": 4004,
|
||||||
"name": "可变点限速",
|
"name": "可变点限速",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 19,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "location",
|
"k": "location",
|
||||||
@@ -216,7 +231,7 @@
|
|||||||
"code": 4006,
|
"code": 4006,
|
||||||
"name": "普通交限",
|
"name": "普通交限",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 21,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -255,7 +270,7 @@
|
|||||||
"code": 4010,
|
"code": 4010,
|
||||||
"name": "电子眼",
|
"name": "电子眼",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 21,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -273,7 +288,7 @@
|
|||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
"v": "~",
|
"v": "~",
|
||||||
"klib": "geometry",
|
"klib": "geometry",
|
||||||
"vlib": "generateDirectReferenceLine()"
|
"vlib": "generateDirectReferenceLine(3)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -288,7 +303,7 @@
|
|||||||
"code": 4022,
|
"code": 4022,
|
||||||
"name": "交通灯",
|
"name": "交通灯",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 21,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -297,7 +312,7 @@
|
|||||||
"code": 4601,
|
"code": 4601,
|
||||||
"name": "车信",
|
"name": "车信",
|
||||||
"zoomMin": 16,
|
"zoomMin": 16,
|
||||||
"zoomMax": 22,
|
"zoomMax": 19,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -323,8 +338,8 @@
|
|||||||
"table": "OMDB_LANE_LINK_LG",
|
"table": "OMDB_LANE_LINK_LG",
|
||||||
"code": 5001,
|
"code": 5001,
|
||||||
"name": "车道中心线",
|
"name": "车道中心线",
|
||||||
"zoomMin": 19,
|
"zoomMin": 18,
|
||||||
"zoomMax": 22,
|
"zoomMax": 21,
|
||||||
"transformer": [
|
"transformer": [
|
||||||
{
|
{
|
||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
@@ -338,37 +353,6 @@
|
|||||||
"table": "OMDB_AREA",
|
"table": "OMDB_AREA",
|
||||||
"code": 5002,
|
"code": 5002,
|
||||||
"name": "面测试"
|
"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()"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -121,6 +121,7 @@ class TableInfo {
|
|||||||
val code: Int = 0
|
val code: Int = 0
|
||||||
val zoomMin: Int = 16
|
val zoomMin: Int = 16
|
||||||
val zoomMax: Int = 21
|
val zoomMax: Int = 21
|
||||||
|
val checkLinkId: Boolean = true//是否需要校验linkid
|
||||||
val name: String = ""
|
val name: String = ""
|
||||||
var checked : Boolean = true
|
var checked : Boolean = true
|
||||||
var transformer: MutableList<Transform> = mutableListOf()
|
var transformer: MutableList<Transform> = mutableListOf()
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.google.gson.Gson
|
|||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
import com.navinfo.collect.library.data.entity.ReferenceEntity
|
import com.navinfo.collect.library.data.entity.ReferenceEntity
|
||||||
import com.navinfo.collect.library.data.entity.RenderEntity
|
import com.navinfo.collect.library.data.entity.RenderEntity
|
||||||
|
import com.navinfo.collect.library.data.entity.TaskBean
|
||||||
import com.navinfo.omqs.Constant
|
import com.navinfo.omqs.Constant
|
||||||
import com.navinfo.omqs.bean.ImportConfig
|
import com.navinfo.omqs.bean.ImportConfig
|
||||||
import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory
|
import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory
|
||||||
@@ -101,10 +102,13 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
FIELD_TYPE_NULL -> rowMap[columnName] = ""
|
FIELD_TYPE_NULL -> rowMap[columnName] = ""
|
||||||
FIELD_TYPE_INTEGER -> rowMap[columnName] =
|
FIELD_TYPE_INTEGER -> rowMap[columnName] =
|
||||||
getInt(columnIndex)
|
getInt(columnIndex)
|
||||||
|
|
||||||
FIELD_TYPE_FLOAT -> rowMap[columnName] =
|
FIELD_TYPE_FLOAT -> rowMap[columnName] =
|
||||||
getFloat(columnIndex)
|
getFloat(columnIndex)
|
||||||
|
|
||||||
FIELD_TYPE_BLOB -> rowMap[columnName] =
|
FIELD_TYPE_BLOB -> rowMap[columnName] =
|
||||||
String(getBlob(columnIndex), Charsets.UTF_8)
|
String(getBlob(columnIndex), Charsets.UTF_8)
|
||||||
|
|
||||||
else -> rowMap[columnName] = getString(columnIndex)
|
else -> rowMap[columnName] = getString(columnIndex)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -123,7 +127,8 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
* @param omdbZipFile omdb数据抽取生成的Zip文件
|
* @param omdbZipFile omdb数据抽取生成的Zip文件
|
||||||
* @param configFile 对应的配置文件
|
* @param configFile 对应的配置文件
|
||||||
* */
|
* */
|
||||||
suspend fun importOmdbZipFile(omdbZipFile: File, taskId: Int): Flow<String> = withContext(Dispatchers.IO) {
|
suspend fun importOmdbZipFile(omdbZipFile: File, task: TaskBean): Flow<String> =
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
val unZipFolder = File(omdbZipFile.parentFile, "result")
|
val unZipFolder = File(omdbZipFile.parentFile, "result")
|
||||||
flow {
|
flow {
|
||||||
if (unZipFolder.exists()) {
|
if (unZipFolder.exists()) {
|
||||||
@@ -153,14 +158,18 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
if (line == null || line.trim() == "") {
|
if (line == null || line.trim() == "") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
Log.d("ImportOMDBHelper", "解析第:${index+1}行")
|
Log.d("ImportOMDBHelper", "解析第:${index + 1}行")
|
||||||
val map = gson.fromJson<Map<String, Any>>(line, object:TypeToken<Map<String, Any>>(){}.getType())
|
val map = gson.fromJson<Map<String, Any>>(
|
||||||
|
line,
|
||||||
|
object : TypeToken<Map<String, Any>>() {}.getType()
|
||||||
|
)
|
||||||
.toMutableMap()
|
.toMutableMap()
|
||||||
map["qi_table"] = currentConfig.table
|
map["qi_table"] = currentConfig.table
|
||||||
map["qi_name"] = currentConfig.name
|
map["qi_name"] = currentConfig.name
|
||||||
map["qi_code"] =
|
map["qi_code"] =
|
||||||
if (currentConfig.code == 0) currentConfig.code else currentEntry.key
|
if (currentConfig.code == 0) currentConfig.code else currentEntry.key
|
||||||
map["qi_code"] = if (currentConfig.code == 0) currentConfig.code else currentEntry.key
|
map["qi_code"] =
|
||||||
|
if (currentConfig.code == 0) currentConfig.code else currentEntry.key
|
||||||
map["qi_zoomMin"] = currentConfig.zoomMin
|
map["qi_zoomMin"] = currentConfig.zoomMin
|
||||||
map["qi_zoomMax"] = currentConfig.zoomMax
|
map["qi_zoomMax"] = currentConfig.zoomMax
|
||||||
|
|
||||||
@@ -170,32 +179,60 @@ class ImportOMDBHelper @AssistedInject constructor(
|
|||||||
renderEntity.code = map["qi_code"].toString().toInt()
|
renderEntity.code = map["qi_code"].toString().toInt()
|
||||||
renderEntity.name = map["qi_name"].toString()
|
renderEntity.name = map["qi_name"].toString()
|
||||||
renderEntity.table = map["qi_table"].toString()
|
renderEntity.table = map["qi_table"].toString()
|
||||||
renderEntity.taskId = taskId
|
renderEntity.taskId = task.id
|
||||||
renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt()
|
renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt()
|
||||||
renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt()
|
renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt()
|
||||||
|
|
||||||
// 其他数据插入到Properties中
|
// 其他数据插入到Properties中
|
||||||
renderEntity.geometry = map["geometry"].toString()
|
renderEntity.geometry = map["geometry"].toString()
|
||||||
|
|
||||||
for ((key, value) in map) {
|
for ((key, value) in map) {
|
||||||
when (value) {
|
when (value) {
|
||||||
is String -> renderEntity.properties.put(key, value)
|
|
||||||
is Int -> renderEntity.properties.put(
|
is String -> renderEntity.properties[key] = value
|
||||||
key,
|
|
||||||
value.toInt().toString()
|
is Int -> renderEntity.properties[key] = value.toInt().toString()
|
||||||
)
|
|
||||||
is Double -> renderEntity.properties.put(
|
is Double -> renderEntity.properties[key] = value.toDouble().toString()
|
||||||
key,
|
|
||||||
value.toDouble().toString()
|
else -> renderEntity.properties[key] = value.toString()
|
||||||
)
|
|
||||||
else -> renderEntity.properties.put(key, value.toString())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//如果要素不包括linkPid,需要从其他字段获得
|
||||||
|
if(!renderEntity.properties.containsKey("linkPid")){
|
||||||
|
//交限从进入线获取
|
||||||
|
if(renderEntity.properties.containsKey("linkIn")){
|
||||||
|
renderEntity.properties["linkPid"]= renderEntity.properties["linkIn"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//遍历判断只显示与任务Link相关的任务数据
|
||||||
|
if (currentConfig.checkLinkId && renderEntity.properties.containsKey("linkPid")) {
|
||||||
|
|
||||||
|
var currentLinkPid = renderEntity.properties["linkPid"]
|
||||||
|
|
||||||
|
task.hadLinkDvoList.forEach {
|
||||||
|
if (it.linkPid == currentLinkPid) {
|
||||||
|
renderEntity.enable = 1
|
||||||
|
Log.e("qj", "${renderEntity.name}==包括任务link")
|
||||||
|
return@forEach
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
renderEntity.enable = 2
|
||||||
|
Log.e("qj", "${renderEntity.name}==不包括任务linkPid")
|
||||||
|
}
|
||||||
|
|
||||||
listResult.add(renderEntity)
|
listResult.add(renderEntity)
|
||||||
|
|
||||||
// 对renderEntity做预处理后再保存
|
// 对renderEntity做预处理后再保存
|
||||||
val resultEntity = importConfig.transformProperties(renderEntity)
|
val resultEntity = importConfig.transformProperties(renderEntity)
|
||||||
|
|
||||||
if (resultEntity != null) {
|
if (resultEntity != null) {
|
||||||
realm.insert(renderEntity)
|
realm.insert(renderEntity)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,15 +26,21 @@ class ImportPreProcess {
|
|||||||
// 根据linkIn和linkOut获取对应的link数据
|
// 根据linkIn和linkOut获取对应的link数据
|
||||||
val linkInEntity = cacheRdLink[linkInId]
|
val linkInEntity = cacheRdLink[linkInId]
|
||||||
val linkOutEntity = cacheRdLink[linkOutId]
|
val linkOutEntity = cacheRdLink[linkOutId]
|
||||||
Log.d("checkCircleRoad", "LinkInEntity: ${linkInId}- ${linkInEntity?.properties?.get("snodePid")},LinkOutEntity: ${linkOutId}- ${linkOutEntity?.properties?.get("enodePid")}")
|
Log.d(
|
||||||
|
"checkCircleRoad",
|
||||||
|
"LinkInEntity: ${linkInId}- ${linkInEntity?.properties?.get("snodePid")},LinkOutEntity: ${linkOutId}- ${
|
||||||
|
linkOutEntity?.properties?.get("enodePid")
|
||||||
|
}"
|
||||||
|
)
|
||||||
// 查询linkIn的sNode和linkOut的eNode是否相同,如果相同,认为数据是环形路口,返回false
|
// 查询linkIn的sNode和linkOut的eNode是否相同,如果相同,认为数据是环形路口,返回false
|
||||||
if (linkInEntity!=null&&linkOutEntity!=null) {
|
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"]) {
|
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 false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算指定数据指定方向的坐标
|
* 计算指定数据指定方向的坐标
|
||||||
* @param direction 判断当前数据是否为逆向,给定的应该是一个a=b的表达式,a为对应的properties的key,b为对应的值
|
* @param direction 判断当前数据是否为逆向,给定的应该是一个a=b的表达式,a为对应的properties的key,b为对应的值
|
||||||
@@ -47,17 +53,20 @@ class ImportPreProcess {
|
|||||||
var isReverse = false // 是否为逆向
|
var isReverse = false // 是否为逆向
|
||||||
if (direction.isNotEmpty()) {
|
if (direction.isNotEmpty()) {
|
||||||
val paramDirections = direction.split("=")
|
val paramDirections = direction.split("=")
|
||||||
if (paramDirections.size>=2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
|
if (paramDirections.size >= 2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
|
||||||
isReverse = true;
|
isReverse = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) { // angle为与正北方向的顺时针夹角
|
if (Geometry.TYPENAME_POINT == geometry?.geometryType) { // angle为与正北方向的顺时针夹角
|
||||||
var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
|
var angle =
|
||||||
|
if (renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get(
|
||||||
|
"angle"
|
||||||
|
)?.toDouble()!!
|
||||||
// if (isReverse) {
|
// if (isReverse) {
|
||||||
// angle += 180
|
// angle += 180
|
||||||
// }
|
// }
|
||||||
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||||
angle=(450-angle)%360
|
angle = (450 - angle) % 360
|
||||||
radian = Math.toRadians(angle)
|
radian = Math.toRadians(angle)
|
||||||
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
|
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
|
||||||
var coordinates = geometry.coordinates
|
var coordinates = geometry.coordinates
|
||||||
@@ -72,8 +81,14 @@ class ImportPreProcess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算偏移距离
|
// 计算偏移距离
|
||||||
val dx: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.cos(radian)
|
val dx: Double = GeometryTools.convertDistanceToDegree(
|
||||||
val dy: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.sin(radian)
|
defaultTranslateDistance,
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.cos(radian)
|
||||||
|
val dy: Double = GeometryTools.convertDistanceToDegree(
|
||||||
|
defaultTranslateDistance,
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.sin(radian)
|
||||||
|
|
||||||
// 计算偏移后的点
|
// 计算偏移后的点
|
||||||
val coord =
|
val coord =
|
||||||
@@ -81,11 +96,13 @@ class ImportPreProcess {
|
|||||||
|
|
||||||
// 记录偏移后的点位或线数据,如果数据为线时,记录的偏移后数据为倒数第二个点右移后,方向与线的最后两个点平行同向的单位向量
|
// 记录偏移后的点位或线数据,如果数据为线时,记录的偏移后数据为倒数第二个点右移后,方向与线的最后两个点平行同向的单位向量
|
||||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
||||||
val geometryTranslate: Geometry = GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y))
|
val geometryTranslate: Geometry =
|
||||||
|
GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y))
|
||||||
renderEntity.geometry = geometryTranslate.toString()
|
renderEntity.geometry = geometryTranslate.toString()
|
||||||
} else {
|
} else {
|
||||||
val coorEnd = Coordinate(coord.x+dx, coord.y+dy)
|
val coorEnd = Coordinate(coord.x + dx, coord.y + dy)
|
||||||
val geometryTranslate: Geometry = GeometryTools.createLineString(arrayOf(coord, coorEnd))
|
val geometryTranslate: Geometry =
|
||||||
|
GeometryTools.createLineString(arrayOf(coord, coorEnd))
|
||||||
renderEntity.geometry = geometryTranslate.toString()
|
renderEntity.geometry = geometryTranslate.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -99,19 +116,22 @@ class ImportPreProcess {
|
|||||||
var isReverse = false // 是否为逆向
|
var isReverse = false // 是否为逆向
|
||||||
if (direction.isNotEmpty()) {
|
if (direction.isNotEmpty()) {
|
||||||
val paramDirections = direction.split("=")
|
val paramDirections = direction.split("=")
|
||||||
if (paramDirections.size>=2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
|
if (paramDirections.size >= 2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
|
||||||
isReverse = true;
|
isReverse = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var radian = 0.0 // geometry的角度,如果是点,获取angle,如果是线,获取最后两个点的方向
|
var radian = 0.0 // geometry的角度,如果是点,获取angle,如果是线,获取最后两个点的方向
|
||||||
var point = Coordinate(geometry?.coordinate)
|
var point = Coordinate(geometry?.coordinate)
|
||||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
||||||
var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
|
var angle =
|
||||||
|
if (renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get(
|
||||||
|
"angle"
|
||||||
|
)?.toDouble()!!
|
||||||
// if (isReverse) {
|
// if (isReverse) {
|
||||||
// angle += 180
|
// angle += 180
|
||||||
// }
|
// }
|
||||||
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||||
angle=(450-angle)%360
|
angle = (450 - angle) % 360
|
||||||
radian = Math.toRadians(angle)
|
radian = Math.toRadians(angle)
|
||||||
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
|
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
|
||||||
var coordinates = geometry.coordinates
|
var coordinates = geometry.coordinates
|
||||||
@@ -126,15 +146,22 @@ class ImportPreProcess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算偏移距离
|
// 计算偏移距离
|
||||||
val dx: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.cos(radian)
|
val dx: Double = GeometryTools.convertDistanceToDegree(
|
||||||
val dy: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.sin(radian)
|
defaultTranslateDistance,
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.cos(radian)
|
||||||
|
val dy: Double = GeometryTools.convertDistanceToDegree(
|
||||||
|
defaultTranslateDistance,
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.sin(radian)
|
||||||
|
|
||||||
// 计算偏移后的点
|
// 计算偏移后的点
|
||||||
val coord =
|
val coord =
|
||||||
Coordinate(point.getX() - dx, point.getY() - dy)
|
Coordinate(point.getX() - dx, point.getY() - dy)
|
||||||
|
|
||||||
// 将这个点记录在数据中
|
// 将这个点记录在数据中
|
||||||
val geometryTranslate: Geometry = GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y))
|
val geometryTranslate: Geometry =
|
||||||
|
GeometryTools.createGeometry(doubleArrayOf(coord.x, coord.y))
|
||||||
renderEntity.geometry = geometryTranslate.toString()
|
renderEntity.geometry = geometryTranslate.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,13 +173,17 @@ class ImportPreProcess {
|
|||||||
val translateGeometry = renderEntity.wkt
|
val translateGeometry = renderEntity.wkt
|
||||||
val startGeometry = GeometryTools.createGeometry(renderEntity.properties["geometry"])
|
val startGeometry = GeometryTools.createGeometry(renderEntity.properties["geometry"])
|
||||||
|
|
||||||
var pointEnd = translateGeometry!!.coordinates[translateGeometry.numPoints-1] // 获取这个geometry对应的结束点坐标
|
var pointEnd =
|
||||||
var pointStart = startGeometry!!.coordinates[startGeometry.numPoints-1] // 获取这个geometry对应的结束点坐标
|
translateGeometry!!.coordinates[translateGeometry.numPoints - 1] // 获取这个geometry对应的结束点坐标
|
||||||
|
var pointStart =
|
||||||
|
startGeometry!!.coordinates[startGeometry.numPoints - 1] // 获取这个geometry对应的结束点坐标
|
||||||
if (translateGeometry.geometryType == Geometry.TYPENAME_LINESTRING) { // 如果是线数据,则取倒数第二个点作为偏移的起止点
|
if (translateGeometry.geometryType == Geometry.TYPENAME_LINESTRING) { // 如果是线数据,则取倒数第二个点作为偏移的起止点
|
||||||
pointEnd = translateGeometry!!.coordinates[translateGeometry.numPoints-2] // 获取这个geometry对应的结束点坐标
|
pointEnd =
|
||||||
|
translateGeometry!!.coordinates[translateGeometry.numPoints - 2] // 获取这个geometry对应的结束点坐标
|
||||||
}
|
}
|
||||||
if (startGeometry.geometryType == Geometry.TYPENAME_LINESTRING) { // 如果是线数据,则取倒数第二个点作为偏移的起止点
|
if (startGeometry.geometryType == Geometry.TYPENAME_LINESTRING) { // 如果是线数据,则取倒数第二个点作为偏移的起止点
|
||||||
pointStart = startGeometry!!.coordinates[startGeometry.numPoints-2] // 获取这个geometry对应的结束点坐标
|
pointStart =
|
||||||
|
startGeometry!!.coordinates[startGeometry.numPoints - 2] // 获取这个geometry对应的结束点坐标
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将这个起终点的线记录在数据中
|
// 将这个起终点的线记录在数据中
|
||||||
@@ -163,60 +194,91 @@ class ImportPreProcess {
|
|||||||
startEndReference.zoomMin = renderEntity.zoomMin
|
startEndReference.zoomMin = renderEntity.zoomMin
|
||||||
startEndReference.zoomMax = renderEntity.zoomMax
|
startEndReference.zoomMax = renderEntity.zoomMax
|
||||||
startEndReference.taskId = renderEntity.taskId
|
startEndReference.taskId = renderEntity.taskId
|
||||||
|
startEndReference.enable = renderEntity.enable
|
||||||
// 起终点坐标组成的线
|
// 起终点坐标组成的线
|
||||||
startEndReference.geometry = GeometryTools.createLineString(arrayOf<Coordinate>(pointStart, pointEnd)).toString()
|
startEndReference.geometry =
|
||||||
|
GeometryTools.createLineString(arrayOf<Coordinate>(pointStart, pointEnd)).toString()
|
||||||
startEndReference.properties["qi_table"] = renderEntity.table
|
startEndReference.properties["qi_table"] = renderEntity.table
|
||||||
startEndReference.properties["type"] = "s_2_e"
|
startEndReference.properties["type"] = "s_2_e"
|
||||||
Realm.getDefaultInstance().insert(startEndReference)
|
Realm.getDefaultInstance().insert(startEndReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateS2EReferencePoint(renderEntity: RenderEntity) {
|
fun generateS2EReferencePoint(
|
||||||
|
renderEntity: RenderEntity,
|
||||||
|
proKey: String = "",
|
||||||
|
table: String = ""
|
||||||
|
) {
|
||||||
val geometry = GeometryTools.createGeometry(renderEntity.properties["geometry"])
|
val geometry = GeometryTools.createGeometry(renderEntity.properties["geometry"])
|
||||||
|
|
||||||
val pointEnd = geometry!!.coordinates[geometry.numPoints-1] // 获取这个geometry对应的结束点坐标
|
val pointEnd = geometry!!.coordinates[geometry.numPoints - 1] // 获取这个geometry对应的结束点坐标
|
||||||
val pointStart = geometry!!.coordinates[0] // 获取这个geometry对应的起点
|
val pointStart = geometry!!.coordinates[0] // 获取这个geometry对应的起点
|
||||||
|
|
||||||
// 将这个起终点的线记录在数据中
|
// 将这个起终点的线记录在数据中
|
||||||
val startReference = ReferenceEntity()
|
val startReference = ReferenceEntity()
|
||||||
startReference.renderEntityId = renderEntity.id
|
startReference.renderEntityId = renderEntity.id
|
||||||
startReference.name = "${renderEntity.name}参考线"
|
startReference.name = "${renderEntity.name}参考点"
|
||||||
startReference.table = renderEntity.table
|
startReference.table = renderEntity.table
|
||||||
startReference.zoomMin = renderEntity.zoomMin
|
startReference.zoomMin = renderEntity.zoomMin
|
||||||
startReference.zoomMax = renderEntity.zoomMax
|
startReference.zoomMax = renderEntity.zoomMax
|
||||||
startReference.taskId = renderEntity.taskId
|
startReference.taskId = renderEntity.taskId
|
||||||
|
startReference.enable = renderEntity.enable
|
||||||
|
|
||||||
// 起点坐标
|
// 起点坐标
|
||||||
startReference.geometry = GeometryTools.createGeometry(GeoPoint(pointStart.y,pointStart.x)).toString()
|
startReference.geometry =
|
||||||
|
GeometryTools.createGeometry(GeoPoint(pointStart.y, pointStart.x)).toString()
|
||||||
|
startReference.properties = renderEntity.properties
|
||||||
startReference.properties["qi_table"] = renderEntity.table
|
startReference.properties["qi_table"] = renderEntity.table
|
||||||
|
Log.e("qj","generateS2EReferencePoint===$table===$proKey")
|
||||||
|
if (renderEntity.table == table) {
|
||||||
|
Log.e("qj","generateS2EReferencePoint===开始")
|
||||||
|
if (renderEntity.properties.containsKey(proKey)) {
|
||||||
|
startReference.properties["type"] = "s_2_p_${renderEntity.properties[proKey]}"
|
||||||
|
Log.e("qj","generateS2EReferencePoint===s_2_p_${renderEntity.properties[proKey]}")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
startReference.properties["type"] = "s_2_p"
|
startReference.properties["type"] = "s_2_p"
|
||||||
|
}
|
||||||
|
|
||||||
Realm.getDefaultInstance().insert(startReference)
|
Realm.getDefaultInstance().insert(startReference)
|
||||||
|
|
||||||
val endReference = ReferenceEntity()
|
val endReference = ReferenceEntity()
|
||||||
endReference.renderEntityId = renderEntity.id
|
endReference.renderEntityId = renderEntity.id
|
||||||
endReference.name = "${renderEntity.name}参考线"
|
endReference.name = "${renderEntity.name}参考点"
|
||||||
endReference.table = renderEntity.table
|
endReference.table = renderEntity.table
|
||||||
endReference.zoomMin = renderEntity.zoomMin
|
endReference.zoomMin = renderEntity.zoomMin
|
||||||
endReference.zoomMax = renderEntity.zoomMax
|
endReference.zoomMax = renderEntity.zoomMax
|
||||||
endReference.taskId = renderEntity.taskId
|
endReference.taskId = renderEntity.taskId
|
||||||
|
endReference.enable = renderEntity.enable
|
||||||
|
|
||||||
// 终点坐标
|
// 终点坐标
|
||||||
endReference.geometry = GeometryTools.createGeometry(GeoPoint(pointEnd.y,pointEnd.x)).toString()
|
endReference.geometry =
|
||||||
|
GeometryTools.createGeometry(GeoPoint(pointEnd.y, pointEnd.x)).toString()
|
||||||
|
endReference.properties = renderEntity.properties
|
||||||
endReference.properties["qi_table"] = renderEntity.table
|
endReference.properties["qi_table"] = renderEntity.table
|
||||||
|
if (renderEntity.table == table) {
|
||||||
|
if (renderEntity.properties.containsKey(proKey)) {
|
||||||
|
endReference.properties["type"] = "e_2_p_${renderEntity.properties[proKey]}"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
endReference.properties["type"] = "e_2_p"
|
endReference.properties["type"] = "e_2_p"
|
||||||
|
}
|
||||||
Realm.getDefaultInstance().insert(endReference)
|
Realm.getDefaultInstance().insert(endReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成与对应方向相同的方向线,用以绘制方向箭头
|
* 生成与对应方向相同的方向线,用以绘制方向箭头
|
||||||
* */
|
* */
|
||||||
fun generateDirectReferenceLine(renderEntity: RenderEntity, direction: String = "", distance: String = "") {
|
fun generateDirectReferenceLine(
|
||||||
|
renderEntity: RenderEntity,
|
||||||
|
direction: String = "",
|
||||||
|
distance: String = ""
|
||||||
|
) {
|
||||||
// 根据数据或angle计算方向对应的角度和偏移量
|
// 根据数据或angle计算方向对应的角度和偏移量
|
||||||
val geometry = renderEntity.wkt
|
val geometry = renderEntity.wkt
|
||||||
var isReverse = false // 是否为逆向
|
var isReverse = false // 是否为逆向
|
||||||
if (direction.isNotEmpty()) {
|
if (direction.isNotEmpty()) {
|
||||||
val paramDirections = direction.split("=")
|
val paramDirections = direction.split("=")
|
||||||
if (paramDirections.size>=2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
|
if (paramDirections.size >= 2 && renderEntity.properties[paramDirections[0].trim()] == paramDirections[1].trim()) {
|
||||||
isReverse = true
|
isReverse = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -225,9 +287,12 @@ class ImportPreProcess {
|
|||||||
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
if (Geometry.TYPENAME_POINT == geometry?.geometryType) {
|
||||||
val point = Coordinate(geometry?.coordinate)
|
val point = Coordinate(geometry?.coordinate)
|
||||||
pointStartArray.add(point)
|
pointStartArray.add(point)
|
||||||
var angle = if(renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get("angle")?.toDouble()!!
|
var angle =
|
||||||
|
if (renderEntity?.properties?.get("angle") == null) 0.0 else renderEntity?.properties?.get(
|
||||||
|
"angle"
|
||||||
|
)?.toDouble()!!
|
||||||
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||||
angle=(450-angle)%360
|
angle = (450 - angle) % 360
|
||||||
radian = Math.toRadians(angle)
|
radian = Math.toRadians(angle)
|
||||||
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
|
} else if (Geometry.TYPENAME_LINESTRING == geometry?.geometryType) {
|
||||||
var coordinates = geometry.coordinates
|
var coordinates = geometry.coordinates
|
||||||
@@ -243,7 +308,7 @@ class ImportPreProcess {
|
|||||||
// 记录下面数据的每一个点位
|
// 记录下面数据的每一个点位
|
||||||
pointStartArray.addAll(geometry.coordinates)
|
pointStartArray.addAll(geometry.coordinates)
|
||||||
// 获取当前的面数据对应的方向信息
|
// 获取当前的面数据对应的方向信息
|
||||||
var angle = if(renderEntity?.properties?.get("angle") == null) {
|
var angle = if (renderEntity?.properties?.get("angle") == null) {
|
||||||
if (renderEntity?.properties?.get("heading") == null) {
|
if (renderEntity?.properties?.get("heading") == null) {
|
||||||
0.0
|
0.0
|
||||||
} else {
|
} else {
|
||||||
@@ -251,16 +316,28 @@ class ImportPreProcess {
|
|||||||
}
|
}
|
||||||
} else renderEntity?.properties?.get("angle")?.toDouble()!!
|
} else renderEntity?.properties?.get("angle")?.toDouble()!!
|
||||||
|
|
||||||
angle=(450-angle)%360
|
angle = (450 - angle) % 360
|
||||||
radian = Math.toRadians(angle)
|
radian = Math.toRadians(angle)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算偏移距离
|
// 计算偏移距离
|
||||||
var dx: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.cos(radian)
|
var dx: Double = GeometryTools.convertDistanceToDegree(
|
||||||
var dy: Double = GeometryTools.convertDistanceToDegree(defaultTranslateDistance, geometry?.coordinate?.y!!) * Math.sin(radian)
|
defaultTranslateDistance,
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.cos(radian)
|
||||||
|
var dy: Double = GeometryTools.convertDistanceToDegree(
|
||||||
|
defaultTranslateDistance,
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.sin(radian)
|
||||||
if (distance.isNotEmpty()) {
|
if (distance.isNotEmpty()) {
|
||||||
dx = GeometryTools.convertDistanceToDegree(distance.toDouble(), geometry?.coordinate?.y!!) * Math.cos(radian)
|
dx = GeometryTools.convertDistanceToDegree(
|
||||||
dy = GeometryTools.convertDistanceToDegree(distance.toDouble(), geometry?.coordinate?.y!!) * Math.sin(radian)
|
distance.toDouble(),
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.cos(radian)
|
||||||
|
dy = GeometryTools.convertDistanceToDegree(
|
||||||
|
distance.toDouble(),
|
||||||
|
geometry?.coordinate?.y!!
|
||||||
|
) * Math.sin(radian)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (pointStart in pointStartArray) {
|
for (pointStart in pointStartArray) {
|
||||||
@@ -273,8 +350,10 @@ class ImportPreProcess {
|
|||||||
angleReference.zoomMin = renderEntity.zoomMin
|
angleReference.zoomMin = renderEntity.zoomMin
|
||||||
angleReference.zoomMax = renderEntity.zoomMax
|
angleReference.zoomMax = renderEntity.zoomMax
|
||||||
angleReference.taskId = renderEntity.taskId
|
angleReference.taskId = renderEntity.taskId
|
||||||
|
angleReference.enable = renderEntity.enable
|
||||||
// 与原有方向指向平行的线
|
// 与原有方向指向平行的线
|
||||||
angleReference.geometry = WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd)))
|
angleReference.geometry =
|
||||||
|
WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd)))
|
||||||
angleReference.properties["qi_table"] = renderEntity.table
|
angleReference.properties["qi_table"] = renderEntity.table
|
||||||
angleReference.properties["type"] = "angle"
|
angleReference.properties["type"] = "angle"
|
||||||
Realm.getDefaultInstance().insert(angleReference)
|
Realm.getDefaultInstance().insert(angleReference)
|
||||||
@@ -284,10 +363,10 @@ class ImportPreProcess {
|
|||||||
|
|
||||||
fun addAngleFromGeometry(renderEntity: RenderEntity): String {
|
fun addAngleFromGeometry(renderEntity: RenderEntity): String {
|
||||||
if (!renderEntity.properties.containsKey("angle")) {
|
if (!renderEntity.properties.containsKey("angle")) {
|
||||||
if (renderEntity.wkt!=null) {
|
if (renderEntity.wkt != null) {
|
||||||
val geometry = renderEntity.wkt
|
val geometry = renderEntity.wkt
|
||||||
var angle: String = "90"
|
var angle: String = "90"
|
||||||
if (geometry?.numPoints!!>=2) {
|
if (geometry?.numPoints!! >= 2) {
|
||||||
val p1: Coordinate = geometry?.coordinates?.get(geometry.coordinates.size - 2)!!
|
val p1: Coordinate = geometry?.coordinates?.get(geometry.coordinates.size - 2)!!
|
||||||
val p2: Coordinate = geometry?.coordinates?.get(geometry.coordinates.size - 1)!!
|
val p2: Coordinate = geometry?.coordinates?.get(geometry.coordinates.size - 1)!!
|
||||||
// 弧度转角度
|
// 弧度转角度
|
||||||
@@ -307,7 +386,8 @@ class ImportPreProcess {
|
|||||||
* 解析车道边线数据二级属性
|
* 解析车道边线数据二级属性
|
||||||
* */
|
* */
|
||||||
fun unpackingLaneBoundary(renderEntity: RenderEntity) {
|
fun unpackingLaneBoundary(renderEntity: RenderEntity) {
|
||||||
var shape:JSONObject = JSONObject(mapOf(
|
var shape: JSONObject = JSONObject(
|
||||||
|
mapOf(
|
||||||
"lateralOffset" to 0,
|
"lateralOffset" to 0,
|
||||||
"markType" to 1,
|
"markType" to 1,
|
||||||
"markColor" to 0,
|
"markColor" to 0,
|
||||||
@@ -315,8 +395,9 @@ class ImportPreProcess {
|
|||||||
"markSeqNum" to 1,
|
"markSeqNum" to 1,
|
||||||
"markWidth" to 10,
|
"markWidth" to 10,
|
||||||
"markingCount" to 1
|
"markingCount" to 1
|
||||||
))
|
)
|
||||||
if (renderEntity.code == 2013&&!renderEntity.properties["shapeList"].isNullOrEmpty()&&renderEntity.properties["shapeList"]!="null") {
|
)
|
||||||
|
if (renderEntity.code == 2013 && !renderEntity.properties["shapeList"].isNullOrEmpty() && renderEntity.properties["shapeList"] != "null") {
|
||||||
// 解析shapeList,将数组中的属性放会properties
|
// 解析shapeList,将数组中的属性放会properties
|
||||||
val shapeList = JSONArray(renderEntity.properties["shapeList"])
|
val shapeList = JSONArray(renderEntity.properties["shapeList"])
|
||||||
for (i in 0 until shapeList.length()) {
|
for (i in 0 until shapeList.length()) {
|
||||||
@@ -336,9 +417,12 @@ class ImportPreProcess {
|
|||||||
* */
|
* */
|
||||||
fun unpackingLaneInfo(renderEntity: RenderEntity) {
|
fun unpackingLaneInfo(renderEntity: RenderEntity) {
|
||||||
if (renderEntity.code == 4601) {
|
if (renderEntity.code == 4601) {
|
||||||
if (!renderEntity.properties["laneinfoGroup"].isNullOrEmpty()&&renderEntity.properties["laneinfoGroup"]!="null") {
|
if (!renderEntity.properties["laneinfoGroup"].isNullOrEmpty() && renderEntity.properties["laneinfoGroup"] != "null") {
|
||||||
// 解析laneinfoGroup,将数组中的属性放会properties
|
// 解析laneinfoGroup,将数组中的属性放会properties
|
||||||
val laneinfoGroup = JSONArray(renderEntity.properties["laneinfoGroup"].toString().replace("{", "[").replace("}", "]"))
|
val laneinfoGroup = JSONArray(
|
||||||
|
renderEntity.properties["laneinfoGroup"].toString().replace("{", "[")
|
||||||
|
.replace("}", "]")
|
||||||
|
)
|
||||||
// 分别获取两个数组中的数据,取第一个作为主数据,另外两个作为辅助渲染数据
|
// 分别获取两个数组中的数据,取第一个作为主数据,另外两个作为辅助渲染数据
|
||||||
val laneInfoDirectArray = JSONArray(laneinfoGroup[0].toString())
|
val laneInfoDirectArray = JSONArray(laneinfoGroup[0].toString())
|
||||||
val laneInfoTypeArray = JSONArray(laneinfoGroup[1].toString())
|
val laneInfoTypeArray = JSONArray(laneinfoGroup[1].toString())
|
||||||
@@ -352,9 +436,12 @@ class ImportPreProcess {
|
|||||||
// 与原数据使用相同的geometry
|
// 与原数据使用相同的geometry
|
||||||
referenceEntity.geometry = renderEntity.geometry.toString()
|
referenceEntity.geometry = renderEntity.geometry.toString()
|
||||||
referenceEntity.properties["qi_table"] = renderEntity.table
|
referenceEntity.properties["qi_table"] = renderEntity.table
|
||||||
referenceEntity.properties["currentDirect"] = laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_")
|
referenceEntity.properties["currentDirect"] =
|
||||||
referenceEntity.properties["currentType"] = laneInfoTypeArray[i].toString().split(",").distinct().joinToString("_")
|
laneInfoDirectArray[i].toString().split(",").distinct().joinToString("_")
|
||||||
referenceEntity.properties["symbol"] = "assets:omdb/4601/bus/1301_"+referenceEntity.properties["currentDirect"]+".svg"
|
referenceEntity.properties["currentType"] =
|
||||||
|
laneInfoTypeArray[i].toString().split(",").distinct().joinToString("_")
|
||||||
|
referenceEntity.properties["symbol"] =
|
||||||
|
"assets:omdb/4601/bus/1301_" + referenceEntity.properties["currentDirect"] + ".svg"
|
||||||
Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString())
|
Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString())
|
||||||
Realm.getDefaultInstance().insert(referenceEntity)
|
Realm.getDefaultInstance().insert(referenceEntity)
|
||||||
}
|
}
|
||||||
@@ -368,25 +455,27 @@ class ImportPreProcess {
|
|||||||
* */
|
* */
|
||||||
fun generateRoadName(renderEntity: RenderEntity) {
|
fun generateRoadName(renderEntity: RenderEntity) {
|
||||||
// LinkName的真正名称数据,是保存在properties的shapeList中的,因此需要解析shapeList数据
|
// LinkName的真正名称数据,是保存在properties的shapeList中的,因此需要解析shapeList数据
|
||||||
var shape :JSONObject? = null
|
var shape: JSONObject? = null
|
||||||
if (renderEntity.properties.containsKey("shapeList")) {
|
if (renderEntity.properties.containsKey("shapeList")) {
|
||||||
val shapeListJsonArray: JSONArray = JSONArray(renderEntity.properties["shapeList"])
|
val shapeListJsonArray: JSONArray = JSONArray(renderEntity.properties["shapeList"])
|
||||||
for (i in 0 until shapeListJsonArray.length()) {
|
for (i in 0 until shapeListJsonArray.length()) {
|
||||||
val shapeJSONObject = shapeListJsonArray.getJSONObject(i)
|
val shapeJSONObject = shapeListJsonArray.getJSONObject(i)
|
||||||
if (shapeJSONObject["nameClass"]==1) {
|
if (shapeJSONObject["nameClass"] == 1) {
|
||||||
if (shape == null) {
|
if (shape == null) {
|
||||||
shape = shapeJSONObject
|
shape = shapeJSONObject
|
||||||
}
|
}
|
||||||
// 获取第一官方名
|
// 获取第一官方名
|
||||||
//("名称分类"NAME_CLASS =“1 官方名”,且名称序号SEQ_NUM 最小者)
|
//("名称分类"NAME_CLASS =“1 官方名”,且名称序号SEQ_NUM 最小者)
|
||||||
if (shapeJSONObject["seqNum"].toString().toInt()< shape!!["seqNum"].toString().toInt()) {
|
if (shapeJSONObject["seqNum"].toString().toInt() < shape!!["seqNum"].toString()
|
||||||
|
.toInt()
|
||||||
|
) {
|
||||||
shape = shapeJSONObject
|
shape = shapeJSONObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 获取最小的shape值,将其记录增加记录在properties的name属性下
|
// 获取最小的shape值,将其记录增加记录在properties的name属性下
|
||||||
if(shape!=null) {
|
if (shape != null) {
|
||||||
renderEntity.properties["name"] = shape["name"].toString()
|
renderEntity.properties["name"] = shape["name"].toString()
|
||||||
} else {
|
} else {
|
||||||
renderEntity.properties["name"] = ""
|
renderEntity.properties["name"] = ""
|
||||||
@@ -398,9 +487,10 @@ class ImportPreProcess {
|
|||||||
* */
|
* */
|
||||||
fun generateElectronName(renderEntity: RenderEntity) {
|
fun generateElectronName(renderEntity: RenderEntity) {
|
||||||
// 解析电子眼的kind,将其转换为渲染的简要名称
|
// 解析电子眼的kind,将其转换为渲染的简要名称
|
||||||
var shape :JSONObject? = null
|
var shape: JSONObject? = null
|
||||||
if (renderEntity.properties.containsKey("kind")) {
|
if (renderEntity.properties.containsKey("kind")) {
|
||||||
renderEntity.properties["name"] = code2NameMap.electronEyeKindMap[renderEntity.properties["kind"].toString().toInt()]
|
renderEntity.properties["name"] =
|
||||||
|
code2NameMap.electronEyeKindMap[renderEntity.properties["kind"].toString().toInt()]
|
||||||
} else {
|
} else {
|
||||||
renderEntity.properties["name"] = ""
|
renderEntity.properties["name"] = ""
|
||||||
}
|
}
|
||||||
@@ -421,38 +511,41 @@ class ImportPreProcess {
|
|||||||
angleReference.zoomMin = renderEntity.zoomMin
|
angleReference.zoomMin = renderEntity.zoomMin
|
||||||
angleReference.zoomMax = renderEntity.zoomMax
|
angleReference.zoomMax = renderEntity.zoomMax
|
||||||
angleReference.taskId = renderEntity.taskId
|
angleReference.taskId = renderEntity.taskId
|
||||||
|
angleReference.enable = renderEntity.enable
|
||||||
Realm.getDefaultInstance().insert(angleReference)
|
Realm.getDefaultInstance().insert(angleReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * 生成默认路口数据的参考数据
|
|
||||||
// * */
|
|
||||||
// fun generateIntersectionReference(renderEntity: RenderEntity) {
|
|
||||||
// // 路口数据的其他点位,是保存在nodeList对应的数组下
|
|
||||||
// if (renderEntity.properties.containsKey("nodeList")) {
|
|
||||||
// val nodeListJsonArray: JSONArray = JSONArray(renderEntity.properties["nodeList"])
|
|
||||||
// for (i in 0 until nodeListJsonArray.length()) {
|
|
||||||
// val nodeJSONObject = nodeListJsonArray.getJSONObject(i)
|
|
||||||
// val intersectionReference = ReferenceEntity()
|
|
||||||
// intersectionReference.renderEntityId = renderEntity.id
|
|
||||||
// intersectionReference.name = "${renderEntity.name}参考点"
|
|
||||||
// intersectionReference.table = renderEntity.table
|
|
||||||
// intersectionReference.zoomMin = renderEntity.zoomMin
|
|
||||||
// intersectionReference.zoomMax = renderEntity.zoomMax
|
|
||||||
// intersectionReference.taskId = renderEntity.taskId
|
|
||||||
// // 与原有方向指向平行的线
|
|
||||||
// intersectionReference.geometry = GeometryTools.createGeometry(nodeJSONObject["geometry"].toString()).toString()
|
|
||||||
// intersectionReference.properties["qi_table"] = renderEntity.table
|
|
||||||
// intersectionReference.properties["type"] = "node"
|
|
||||||
// Realm.getDefaultInstance().insert(intersectionReference)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
/**
|
/**
|
||||||
* 生成默认路口数据的参考数据
|
* 生成默认路口数据的参考数据
|
||||||
* */
|
* */
|
||||||
fun generateIntersectionReference(renderEntity: RenderEntity) {
|
fun generateIntersectionReference(renderEntity: RenderEntity) {
|
||||||
|
// 路口数据的其他点位,是保存在nodeList对应的数组下
|
||||||
|
if (renderEntity.properties.containsKey("nodeList")) {
|
||||||
|
val nodeListJsonArray: JSONArray = JSONArray(renderEntity.properties["nodeList"])
|
||||||
|
for (i in 0 until nodeListJsonArray.length()) {
|
||||||
|
val nodeJSONObject = nodeListJsonArray.getJSONObject(i)
|
||||||
|
val intersectionReference = ReferenceEntity()
|
||||||
|
intersectionReference.renderEntityId = renderEntity.id
|
||||||
|
intersectionReference.name = "${renderEntity.name}参考点"
|
||||||
|
intersectionReference.table = renderEntity.table
|
||||||
|
intersectionReference.zoomMin = renderEntity.zoomMin
|
||||||
|
intersectionReference.zoomMax = renderEntity.zoomMax
|
||||||
|
intersectionReference.taskId = renderEntity.taskId
|
||||||
|
intersectionReference.enable = renderEntity.enable
|
||||||
|
// 与原有方向指向平行的线
|
||||||
|
intersectionReference.geometry =
|
||||||
|
GeometryTools.createGeometry(nodeJSONObject["geometry"].toString()).toString()
|
||||||
|
intersectionReference.properties["qi_table"] = renderEntity.table
|
||||||
|
intersectionReference.properties["type"] = "node"
|
||||||
|
Realm.getDefaultInstance().insert(intersectionReference)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 生成默认路口数据的参考数据
|
||||||
|
* */
|
||||||
|
fun generateIntersectionDynamic(renderEntity: RenderEntity) {
|
||||||
// 路口数据的其他点位,是保存在nodeList对应的数组下
|
// 路口数据的其他点位,是保存在nodeList对应的数组下
|
||||||
if (renderEntity.properties.containsKey("type")) {
|
if (renderEntity.properties.containsKey("type")) {
|
||||||
if (renderEntity.properties["type"] == "0") {
|
if (renderEntity.properties["type"] == "0") {
|
||||||
@@ -469,14 +562,14 @@ class ImportPreProcess {
|
|||||||
fun normalizationPoleHeight(renderEntity: RenderEntity) {
|
fun normalizationPoleHeight(renderEntity: RenderEntity) {
|
||||||
// 获取杆状物的高程数据
|
// 获取杆状物的高程数据
|
||||||
val geometry = renderEntity.wkt
|
val geometry = renderEntity.wkt
|
||||||
if (geometry!=null) {
|
if (geometry != null) {
|
||||||
var minHeight=Double.MAX_VALUE
|
var minHeight = Double.MAX_VALUE
|
||||||
var maxHeight=Double.MIN_VALUE
|
var maxHeight = Double.MIN_VALUE
|
||||||
for (coordinate in geometry.coordinates) {
|
for (coordinate in geometry.coordinates) {
|
||||||
if (coordinate.z<minHeight) {
|
if (coordinate.z < minHeight) {
|
||||||
minHeight = coordinate.z
|
minHeight = coordinate.z
|
||||||
}
|
}
|
||||||
if (coordinate.z>maxHeight) {
|
if (coordinate.z > maxHeight) {
|
||||||
maxHeight = coordinate.z
|
maxHeight = coordinate.z
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -488,7 +581,8 @@ class ImportPreProcess {
|
|||||||
coordinate.z = 40.0
|
coordinate.z = 40.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
renderEntity.geometry = WKTWriter(3).write(GeometryTools.createLineString(geometry.coordinates))
|
renderEntity.geometry =
|
||||||
|
WKTWriter(3).write(GeometryTools.createLineString(geometry.coordinates))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -498,24 +592,25 @@ class ImportPreProcess {
|
|||||||
fun normalizationTrafficSignHeight(renderEntity: RenderEntity) {
|
fun normalizationTrafficSignHeight(renderEntity: RenderEntity) {
|
||||||
// 获取交通标牌的高程数据
|
// 获取交通标牌的高程数据
|
||||||
val geometry = renderEntity.wkt
|
val geometry = renderEntity.wkt
|
||||||
if (geometry!=null) {
|
if (geometry != null) {
|
||||||
// 获取所有的高程信息,计算高程的中位数,方便对高程做定制化处理
|
// 获取所有的高程信息,计算高程的中位数,方便对高程做定制化处理
|
||||||
var midHeight=0.0
|
var midHeight = 0.0
|
||||||
var countHeight = 0.0
|
var countHeight = 0.0
|
||||||
for (coordinate in geometry.coordinates) {
|
for (coordinate in geometry.coordinates) {
|
||||||
countHeight+=coordinate.z
|
countHeight += coordinate.z
|
||||||
}
|
}
|
||||||
midHeight = countHeight/geometry.coordinates.size
|
midHeight = countHeight / geometry.coordinates.size
|
||||||
|
|
||||||
// 对高程数据做特殊处理
|
// 对高程数据做特殊处理
|
||||||
for (coordinate in geometry.coordinates) {
|
for (coordinate in geometry.coordinates) {
|
||||||
if (coordinate.z>=midHeight) {
|
if (coordinate.z >= midHeight) {
|
||||||
coordinate.z = 40.0
|
coordinate.z = 40.0
|
||||||
} else {
|
} else {
|
||||||
coordinate.z = 30.0
|
coordinate.z = 30.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
renderEntity.geometry = WKTWriter(3).write(GeometryTools.getPolygonGeometry(geometry.coordinates))
|
renderEntity.geometry =
|
||||||
|
WKTWriter(3).write(GeometryTools.getPolygonGeometry(geometry.coordinates))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -121,7 +121,6 @@ class RealmOperateHelper() {
|
|||||||
|
|
||||||
suspend fun queryLink(linkPid: String): RenderEntity? {
|
suspend fun queryLink(linkPid: String): RenderEntity? {
|
||||||
var link: RenderEntity? = null
|
var link: RenderEntity? = null
|
||||||
withContext(Dispatchers.IO) {
|
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = Realm.getDefaultInstance()
|
||||||
val realmR = realm.where(RenderEntity::class.java)
|
val realmR = realm.where(RenderEntity::class.java)
|
||||||
.equalTo("table", "OMDB_RD_LINK")
|
.equalTo("table", "OMDB_RD_LINK")
|
||||||
@@ -131,10 +130,27 @@ class RealmOperateHelper() {
|
|||||||
if (realmR != null) {
|
if (realmR != null) {
|
||||||
link = realm.copyFromRealm(realmR)
|
link = realm.copyFromRealm(realmR)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return link
|
return link
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun queryLinkToMutableRenderEntityList(linkPid: String): MutableList<RenderEntity>? {
|
||||||
|
val resultList = mutableListOf<RenderEntity>()
|
||||||
|
|
||||||
|
val realm = Realm.getDefaultInstance()
|
||||||
|
|
||||||
|
val realmR = realm.where(RenderEntity::class.java)
|
||||||
|
.equalTo("properties['${LinkTable.linkPid}']", linkPid)
|
||||||
|
.findAll()
|
||||||
|
|
||||||
|
val dataList = realm.copyFromRealm(realmR)
|
||||||
|
|
||||||
|
dataList.forEach {
|
||||||
|
resultList.add(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultList
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据当前点位查询匹配的除Link外的其他要素数据
|
* 根据当前点位查询匹配的除Link外的其他要素数据
|
||||||
* @param point 点位经纬度信息
|
* @param point 点位经纬度信息
|
||||||
@@ -150,7 +166,6 @@ class RealmOperateHelper() {
|
|||||||
sort: Boolean = true
|
sort: Boolean = true
|
||||||
): MutableList<RenderEntity> {
|
): MutableList<RenderEntity> {
|
||||||
val result = mutableListOf<RenderEntity>()
|
val result = mutableListOf<RenderEntity>()
|
||||||
withContext(Dispatchers.IO) {
|
|
||||||
val polygon = getPolygonFromPoint(point, buffer, bufferType)
|
val polygon = getPolygonFromPoint(point, buffer, bufferType)
|
||||||
// 根据polygon查询相交的tile号
|
// 根据polygon查询相交的tile号
|
||||||
val tileXSet = mutableSetOf<Int>()
|
val tileXSet = mutableSetOf<Int>()
|
||||||
@@ -164,8 +179,9 @@ class RealmOperateHelper() {
|
|||||||
val xEnd = tileXSet.stream().max(Comparator.naturalOrder()).orElse(null)
|
val xEnd = tileXSet.stream().max(Comparator.naturalOrder()).orElse(null)
|
||||||
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
|
val yStart = tileYSet.stream().min(Comparator.naturalOrder()).orElse(null)
|
||||||
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
|
val yEnd = tileYSet.stream().max(Comparator.naturalOrder()).orElse(null)
|
||||||
|
val realm = Realm.getDefaultInstance()
|
||||||
// 查询realm中对应tile号的数据
|
// 查询realm中对应tile号的数据
|
||||||
val realmList = Realm.getDefaultInstance().where(RenderEntity::class.java)
|
val realmList = realm.where(RenderEntity::class.java)
|
||||||
.notEqualTo("table", "OMDB_RD_LINK")
|
.notEqualTo("table", "OMDB_RD_LINK")
|
||||||
.and()
|
.and()
|
||||||
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd")
|
.rawPredicate("tileX>=$xStart and tileX<=$xEnd and tileY>=$yStart and tileY<=$yEnd")
|
||||||
@@ -175,13 +191,13 @@ class RealmOperateHelper() {
|
|||||||
polygon.intersects(it.wkt)
|
polygon.intersects(it.wkt)
|
||||||
}?.toList()
|
}?.toList()
|
||||||
queryResult?.let {
|
queryResult?.let {
|
||||||
result.addAll(queryResult)
|
|
||||||
}
|
|
||||||
if (sort) {
|
if (sort) {
|
||||||
result.clear()
|
result.addAll(sortRenderEntity(point, realm.copyFromRealm(it)))
|
||||||
result.addAll(sortRenderEntity(point, result))
|
} else {
|
||||||
|
result.addAll(realm.copyFromRealm(it))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -213,8 +229,7 @@ class RealmOperateHelper() {
|
|||||||
@RequiresApi(Build.VERSION_CODES.N)
|
@RequiresApi(Build.VERSION_CODES.N)
|
||||||
fun sortRenderEntity(point: Point, unSortList: List<RenderEntity>): List<RenderEntity> {
|
fun sortRenderEntity(point: Point, unSortList: List<RenderEntity>): List<RenderEntity> {
|
||||||
val sortList = unSortList.stream().sorted { renderEntity, renderEntity2 ->
|
val sortList = unSortList.stream().sorted { renderEntity, renderEntity2 ->
|
||||||
val near = point.distance(renderEntity.wkt) - point.distance(renderEntity2.wkt)
|
point.distance(renderEntity.wkt).compareTo(point.distance(renderEntity2.wkt))
|
||||||
if (near < 0) -1 else 1
|
|
||||||
}.toList()
|
}.toList()
|
||||||
return sortList
|
return sortList
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class TaskDownloadScope(
|
|||||||
downloadJob = launch() {
|
downloadJob = launch() {
|
||||||
FileManager.checkOMDBFileInfo(taskBean)
|
FileManager.checkOMDBFileInfo(taskBean)
|
||||||
if (taskBean.status == FileDownloadStatus.IMPORT) {
|
if (taskBean.status == FileDownloadStatus.IMPORT) {
|
||||||
importData(taskId = taskBean.id)
|
importData(task = taskBean)
|
||||||
} else {
|
} else {
|
||||||
download()
|
download()
|
||||||
}
|
}
|
||||||
@@ -127,7 +127,7 @@ class TaskDownloadScope(
|
|||||||
/**
|
/**
|
||||||
* 导入数据
|
* 导入数据
|
||||||
*/
|
*/
|
||||||
private suspend fun importData(file: File? = null, taskId: Int? = 0) {
|
private suspend fun importData(file: File? = null, task: TaskBean? = null) {
|
||||||
try {
|
try {
|
||||||
Log.e("jingo", "importData SSS")
|
Log.e("jingo", "importData SSS")
|
||||||
change(FileDownloadStatus.IMPORTING)
|
change(FileDownloadStatus.IMPORTING)
|
||||||
@@ -138,8 +138,8 @@ class TaskDownloadScope(
|
|||||||
downloadManager.context,
|
downloadManager.context,
|
||||||
fileNew
|
fileNew
|
||||||
)
|
)
|
||||||
if (taskId != null) {
|
if (task != null) {
|
||||||
importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, taskId).collect {
|
importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, task).collect {
|
||||||
Log.e("jingo", "数据安装 $it")
|
Log.e("jingo", "数据安装 $it")
|
||||||
if (it == "finish") {
|
if (it == "finish") {
|
||||||
change(FileDownloadStatus.DONE)
|
change(FileDownloadStatus.DONE)
|
||||||
@@ -187,7 +187,7 @@ class TaskDownloadScope(
|
|||||||
startPosition = 0
|
startPosition = 0
|
||||||
}
|
}
|
||||||
if (fileTemp.length() > 0 && taskBean.fileSize > 0 && fileTemp.length() == taskBean.fileSize) {
|
if (fileTemp.length() > 0 && taskBean.fileSize > 0 && fileTemp.length() == taskBean.fileSize) {
|
||||||
importData(fileTemp, taskBean.id)
|
importData(fileTemp, taskBean)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -228,7 +228,7 @@ class TaskDownloadScope(
|
|||||||
randomAccessFile?.close()
|
randomAccessFile?.close()
|
||||||
inputStream = null
|
inputStream = null
|
||||||
randomAccessFile = null
|
randomAccessFile = null
|
||||||
importData(taskId = taskBean.id)
|
importData(task = taskBean)
|
||||||
} else {
|
} else {
|
||||||
change(FileDownloadStatus.PAUSE)
|
change(FileDownloadStatus.PAUSE)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -406,7 +406,7 @@ class MainActivity : BaseActivity() {
|
|||||||
this
|
this
|
||||||
).setTitle("坐标定位").setView(view)
|
).setTitle("坐标定位").setView(view)
|
||||||
val editText = view.findViewById<EditText>(R.id.dialog_edittext)
|
val editText = view.findViewById<EditText>(R.id.dialog_edittext)
|
||||||
editText.hint = "请输入经纬度例如:\n116.1234567,39.1234567\n116.1234567 39.1234567"
|
editText.hint = "请输入经纬度例如:116.1234567,39.1234567"
|
||||||
inputDialog.setNegativeButton("取消") { dialog, _ ->
|
inputDialog.setNegativeButton("取消") { dialog, _ ->
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
}
|
}
|
||||||
@@ -505,7 +505,7 @@ class MainActivity : BaseActivity() {
|
|||||||
* 点击搜索
|
* 点击搜索
|
||||||
*/
|
*/
|
||||||
fun onClickSearch() {
|
fun onClickSearch() {
|
||||||
|
jumpPosition()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ class MainViewModel @Inject constructor(
|
|||||||
Map.SCALE_EVENT, Map.MOVE_EVENT, Map.ROTATE_EVENT -> liveDataCenterPoint.value =
|
Map.SCALE_EVENT, Map.MOVE_EVENT, Map.ROTATE_EVENT -> liveDataCenterPoint.value =
|
||||||
mapPosition
|
mapPosition
|
||||||
}
|
}
|
||||||
if(mapController.mMapView.vtmMap.mapPosition.zoomLevel>=16){
|
if (mapController.mMapView.vtmMap.mapPosition.zoomLevel >= 16) {
|
||||||
|
|
||||||
}
|
}
|
||||||
currentMapZoomLevel = mapController.mMapView.vtmMap.mapPosition.zoomLevel
|
currentMapZoomLevel = mapController.mMapView.vtmMap.mapPosition.zoomLevel
|
||||||
@@ -219,7 +219,7 @@ class MainViewModel @Inject constructor(
|
|||||||
object : OnGeoPointClickListener {
|
object : OnGeoPointClickListener {
|
||||||
override fun onMapClick(tag: String, point: GeoPoint) {
|
override fun onMapClick(tag: String, point: GeoPoint) {
|
||||||
if (tag == TAG) {
|
if (tag == TAG) {
|
||||||
viewModelScope.launch(Dispatchers.Default) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
//线选择状态
|
//线选择状态
|
||||||
if (bSelectRoad) {
|
if (bSelectRoad) {
|
||||||
captureLink(point)
|
captureLink(point)
|
||||||
@@ -280,6 +280,8 @@ class MainViewModel @Inject constructor(
|
|||||||
initNILocationData()
|
initNILocationData()
|
||||||
}
|
}
|
||||||
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
|
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
|
||||||
|
com.navinfo.collect.library.system.Constant.TASK_ID =
|
||||||
|
sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
|
||||||
socketServer = SocketServer(mapController, traceDataBase, sharedPreferences)
|
socketServer = SocketServer(mapController, traceDataBase, sharedPreferences)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -455,8 +457,8 @@ class MainViewModel @Inject constructor(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if(itemList.size == 1){
|
if (itemList.size > 0) {
|
||||||
SignUtil.getSignNameText(itemList[0])
|
liveDataSignMoreInfo.postValue(itemList[0])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import com.blankj.utilcode.util.UriUtils
|
|||||||
import com.github.k1rakishou.fsaf.FileChooser
|
import com.github.k1rakishou.fsaf.FileChooser
|
||||||
import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks
|
import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks
|
||||||
import com.github.k1rakishou.fsaf.callback.FileChooserCallback
|
import com.github.k1rakishou.fsaf.callback.FileChooserCallback
|
||||||
import com.navinfo.collect.library.data.entity.TaskBean
|
|
||||||
import com.navinfo.collect.library.map.NIMapController
|
import com.navinfo.collect.library.map.NIMapController
|
||||||
import com.navinfo.omqs.Constant
|
import com.navinfo.omqs.Constant
|
||||||
import com.navinfo.omqs.R
|
import com.navinfo.omqs.R
|
||||||
@@ -23,10 +22,8 @@ import com.navinfo.omqs.databinding.FragmentPersonalCenterBinding
|
|||||||
import com.navinfo.omqs.db.ImportOMDBHelper
|
import com.navinfo.omqs.db.ImportOMDBHelper
|
||||||
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
|
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
|
||||||
import com.navinfo.omqs.tools.CoroutineUtils
|
import com.navinfo.omqs.tools.CoroutineUtils
|
||||||
import com.navinfo.omqs.ui.activity.map.MainActivity
|
|
||||||
import com.navinfo.omqs.ui.fragment.BaseFragment
|
import com.navinfo.omqs.ui.fragment.BaseFragment
|
||||||
import com.navinfo.omqs.ui.activity.scan.QrCodeActivity
|
import com.navinfo.omqs.ui.activity.scan.QrCodeActivity
|
||||||
import com.navinfo.omqs.ui.fragment.console.ConsoleFragment
|
|
||||||
import com.permissionx.guolindev.PermissionX
|
import com.permissionx.guolindev.PermissionX
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import org.oscim.core.GeoPoint
|
import org.oscim.core.GeoPoint
|
||||||
|
|||||||
@@ -162,11 +162,11 @@ class PersonalCenterViewModel @Inject constructor(
|
|||||||
/**
|
/**
|
||||||
* 导入OMDB数据
|
* 导入OMDB数据
|
||||||
* */
|
* */
|
||||||
fun importOMDBData(importOMDBHelper: ImportOMDBHelper,taskId:Int?=0) {
|
fun importOMDBData(importOMDBHelper: ImportOMDBHelper, task: TaskBean? =null) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
Log.d("OMQSApplication", "开始导入数据")
|
Log.d("OMQSApplication", "开始导入数据")
|
||||||
if (taskId != null) {
|
if (task != null) {
|
||||||
importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, taskId).collect {
|
importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, task).collect {
|
||||||
Log.d("importOMDBData", it)
|
Log.d("importOMDBData", it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,103 @@
|
|||||||
|
package com.navinfo.omqs.ui.fragment.signMoreInfo
|
||||||
|
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
||||||
|
import com.navinfo.omqs.R
|
||||||
|
import com.navinfo.omqs.databinding.AdapterLaneBoundaryBinding
|
||||||
|
import com.navinfo.omqs.databinding.AdapterTwoItemBinding
|
||||||
|
import com.navinfo.omqs.ui.other.BaseViewHolder
|
||||||
|
import com.navinfo.omqs.ui.other.anim.ExpandableViewHoldersUtil
|
||||||
|
import com.navinfo.omqs.ui.other.anim.ExpandableViewHoldersUtil.Expandable
|
||||||
|
|
||||||
|
|
||||||
|
data class LaneBoundaryItem(
|
||||||
|
val title: String, val text: String?, val itemList: MutableList<TwoItemAdapterItem>?
|
||||||
|
)
|
||||||
|
|
||||||
|
class LaneBoundaryAdapter : RecyclerView.Adapter<ViewHolder>() {
|
||||||
|
private val keepOne: ExpandableViewHoldersUtil.KeepOneH<ExpandViewHolder> =
|
||||||
|
ExpandableViewHoldersUtil.KeepOneH()
|
||||||
|
|
||||||
|
private var dataList = mutableListOf<LaneBoundaryItem>()
|
||||||
|
|
||||||
|
class ExpandViewHolder(
|
||||||
|
val viewBinding: AdapterLaneBoundaryBinding,
|
||||||
|
private val keepOne: ExpandableViewHoldersUtil.KeepOneH<ExpandViewHolder>
|
||||||
|
) : ViewHolder(viewBinding.root),
|
||||||
|
View.OnClickListener, Expandable {
|
||||||
|
|
||||||
|
init {
|
||||||
|
viewBinding.root.setOnClickListener(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun bind(pos: Int, laneBoundaryItem: LaneBoundaryItem) {
|
||||||
|
viewBinding.contactName.text = laneBoundaryItem.title
|
||||||
|
if (laneBoundaryItem.itemList != null) {
|
||||||
|
for (item in laneBoundaryItem.itemList) {
|
||||||
|
var view = LayoutInflater.from(viewBinding.root.context)
|
||||||
|
.inflate(R.layout.adapter_two_item, null, false)
|
||||||
|
view.findViewById<TextView>(R.id.title).text = item.title
|
||||||
|
view.findViewById<TextView>(R.id.text).text = item.text
|
||||||
|
viewBinding.infos.addView(view)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keepOne.bind(this, pos)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onClick(v: View) {
|
||||||
|
keepOne.toggle(this,viewBinding.expandIcon)
|
||||||
|
}
|
||||||
|
|
||||||
|
override val expandView: View
|
||||||
|
get() = viewBinding.infos
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
override
|
||||||
|
|
||||||
|
fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
|
return if (viewType == 1) {
|
||||||
|
val viewBinding = AdapterLaneBoundaryBinding.inflate(
|
||||||
|
LayoutInflater.from(parent.context), parent, false
|
||||||
|
)
|
||||||
|
ExpandViewHolder(viewBinding, keepOne)
|
||||||
|
} else {
|
||||||
|
val viewBinding =
|
||||||
|
AdapterTwoItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||||
|
BaseViewHolder(viewBinding)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemCount(): Int {
|
||||||
|
return dataList.size
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
|
if (holder is ExpandViewHolder) {
|
||||||
|
holder.bind(position, dataList[position])
|
||||||
|
} else if (holder is BaseViewHolder) {
|
||||||
|
val binding: AdapterTwoItemBinding = holder.viewBinding as AdapterTwoItemBinding
|
||||||
|
val item = dataList[position]
|
||||||
|
binding.title.text = item.title
|
||||||
|
binding.text.text = item.text
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemViewType(position: Int): Int {
|
||||||
|
return if (dataList[position].itemList != null) 1
|
||||||
|
else 0
|
||||||
|
}
|
||||||
|
|
||||||
|
fun refreshData(list: List<LaneBoundaryItem>) {
|
||||||
|
dataList.clear()
|
||||||
|
dataList.addAll(list)
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -55,15 +55,27 @@ class SignMoreInfoFragment : BaseFragment() {
|
|||||||
binding.signInfoRecyclerview.adapter = adapter
|
binding.signInfoRecyclerview.adapter = adapter
|
||||||
adapter.refreshData(SignUtil.getRoadNameList(it))
|
adapter.refreshData(SignUtil.getRoadNameList(it))
|
||||||
}
|
}
|
||||||
|
//车道边界类型
|
||||||
|
2013 -> {
|
||||||
|
val adapter = LaneBoundaryAdapter()
|
||||||
|
binding.signInfoRecyclerview.adapter = adapter
|
||||||
|
adapter.refreshData(SignUtil.getLaneBoundaryTypeInfo(it))
|
||||||
|
}
|
||||||
|
//可变点限速
|
||||||
|
2021 -> {
|
||||||
|
val adapter = TwoItemAdapter()
|
||||||
|
binding.signInfoRecyclerview.adapter = adapter
|
||||||
|
adapter.refreshData(SignUtil.getChangeLimitSpeedInfo(it))
|
||||||
|
}
|
||||||
//常规点限速
|
//常规点限速
|
||||||
4002 -> {
|
4002 -> {
|
||||||
val adapter = ElectronicEyeInfoAdapter()
|
val adapter = TwoItemAdapter()
|
||||||
binding.signInfoRecyclerview.adapter = adapter
|
binding.signInfoRecyclerview.adapter = adapter
|
||||||
adapter.refreshData(SignUtil.getSpeedLimitMoreInfoText(it))
|
adapter.refreshData(SignUtil.getSpeedLimitMoreInfoText(it))
|
||||||
}
|
}
|
||||||
//条件点限速
|
//条件点限速
|
||||||
4003 -> {
|
4003 -> {
|
||||||
val adapter = ElectronicEyeInfoAdapter()
|
val adapter = TwoItemAdapter()
|
||||||
binding.signInfoRecyclerview.adapter = adapter
|
binding.signInfoRecyclerview.adapter = adapter
|
||||||
adapter.refreshData(SignUtil.getConditionLimitMoreInfoText(it))
|
adapter.refreshData(SignUtil.getConditionLimitMoreInfoText(it))
|
||||||
}
|
}
|
||||||
@@ -80,11 +92,14 @@ class SignMoreInfoFragment : BaseFragment() {
|
|||||||
binding.signInfoTitle.setCompoundDrawables(
|
binding.signInfoTitle.setCompoundDrawables(
|
||||||
drawable, null, null, null
|
drawable, null, null, null
|
||||||
)
|
)
|
||||||
val adapter = ElectronicEyeInfoAdapter()
|
val adapter = TwoItemAdapter()
|
||||||
binding.signInfoRecyclerview.adapter = adapter
|
binding.signInfoRecyclerview.adapter = adapter
|
||||||
adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it))
|
adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it))
|
||||||
}
|
}
|
||||||
|
else -> {
|
||||||
|
val adapter = TwoItemAdapter()
|
||||||
|
binding.signInfoRecyclerview.adapter = adapter
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,27 +2,26 @@ package com.navinfo.omqs.ui.fragment.signMoreInfo
|
|||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.navinfo.omqs.R
|
import com.navinfo.omqs.databinding.AdapterTwoItemBinding
|
||||||
import com.navinfo.omqs.databinding.AdapterElectronicEyeBinding
|
|
||||||
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
||||||
import com.navinfo.omqs.ui.other.BaseViewHolder
|
import com.navinfo.omqs.ui.other.BaseViewHolder
|
||||||
|
|
||||||
data class ElectronicEyeMoreInfoAdapterItem(
|
data class TwoItemAdapterItem(
|
||||||
val title: String,
|
val title: String,
|
||||||
val text: String
|
val text: String
|
||||||
)
|
)
|
||||||
|
|
||||||
class ElectronicEyeInfoAdapter : BaseRecyclerViewAdapter<ElectronicEyeMoreInfoAdapterItem>() {
|
class TwoItemAdapter : BaseRecyclerViewAdapter<TwoItemAdapterItem>() {
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
|
||||||
val viewBinding =
|
val viewBinding =
|
||||||
AdapterElectronicEyeBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
AdapterTwoItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||||
return BaseViewHolder(viewBinding)
|
return BaseViewHolder(viewBinding)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
|
||||||
val binding: AdapterElectronicEyeBinding =
|
val binding: AdapterTwoItemBinding =
|
||||||
holder.viewBinding as AdapterElectronicEyeBinding
|
holder.viewBinding as AdapterTwoItemBinding
|
||||||
val item = data[position]
|
val item = data[position]
|
||||||
binding.title.text = item.title
|
binding.title.text = item.title
|
||||||
binding.text.text = item.text
|
binding.text.text = item.text
|
||||||
@@ -1,11 +1,8 @@
|
|||||||
package com.navinfo.omqs.ui.fragment.tasklink
|
package com.navinfo.omqs.ui.fragment.tasklink
|
||||||
|
|
||||||
import android.os.Build
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.annotation.RequiresApi
|
|
||||||
import com.navinfo.omqs.R
|
import com.navinfo.omqs.R
|
||||||
import com.navinfo.omqs.databinding.AdapterElectronicEyeBinding
|
|
||||||
import com.navinfo.omqs.databinding.AdapterTaskLinkInfoBinding
|
import com.navinfo.omqs.databinding.AdapterTaskLinkInfoBinding
|
||||||
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
|
||||||
import com.navinfo.omqs.ui.other.BaseViewHolder
|
import com.navinfo.omqs.ui.other.BaseViewHolder
|
||||||
|
|||||||
@@ -180,10 +180,10 @@ class TaskListAdapter(
|
|||||||
binding.taskUploadBtn.visibility = View.INVISIBLE
|
binding.taskUploadBtn.visibility = View.INVISIBLE
|
||||||
}
|
}
|
||||||
if (taskBean.syncStatus == FileUploadStatus.DONE) {
|
if (taskBean.syncStatus == FileUploadStatus.DONE) {
|
||||||
binding.taskUploadBtn.setProgress(0)
|
// binding.taskUploadBtn.setProgress(0)
|
||||||
binding.taskUploadBtn.setBackgroundColor(binding.root.resources.getColor(R.color.ripple_end_color))
|
binding.taskUploadBtn.setBackgroundColor(binding.root.resources.getColor(R.color.ripple_end_color))
|
||||||
} else {
|
} else {
|
||||||
binding.taskUploadBtn.setProgress(100)
|
// binding.taskUploadBtn.setProgress(100)
|
||||||
binding.taskUploadBtn.setBackgroundColor(Color.parseColor("#888FB3"))
|
binding.taskUploadBtn.setBackgroundColor(Color.parseColor("#888FB3"))
|
||||||
}
|
}
|
||||||
binding.taskDownloadBtn.tag = position
|
binding.taskDownloadBtn.tag = position
|
||||||
@@ -301,7 +301,7 @@ class TaskListAdapter(
|
|||||||
binding.taskDownloadBtn.setTextColor(Color.WHITE)
|
binding.taskDownloadBtn.setTextColor(Color.WHITE)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taskBean.fileSize > 0L) {
|
if (taskBean.fileSize > 0L && taskBean.status != FileDownloadStatus.DONE) {
|
||||||
val progress = (taskBean.currentSize * 100 / taskBean.fileSize).toInt()
|
val progress = (taskBean.currentSize * 100 / taskBean.fileSize).toInt()
|
||||||
binding.taskProgressText.text =
|
binding.taskProgressText.text =
|
||||||
"$progress%"
|
"$progress%"
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import android.content.SharedPreferences
|
|||||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
@@ -19,7 +18,6 @@ import com.navinfo.collect.library.map.OnGeoPointClickListener
|
|||||||
import com.navinfo.collect.library.utils.GeometryTools
|
import com.navinfo.collect.library.utils.GeometryTools
|
||||||
import com.navinfo.omqs.Constant
|
import com.navinfo.omqs.Constant
|
||||||
import com.navinfo.omqs.db.RealmOperateHelper
|
import com.navinfo.omqs.db.RealmOperateHelper
|
||||||
import com.navinfo.omqs.http.NetResult
|
|
||||||
import com.navinfo.omqs.http.NetworkService
|
import com.navinfo.omqs.http.NetworkService
|
||||||
import com.navinfo.omqs.tools.FileManager
|
import com.navinfo.omqs.tools.FileManager
|
||||||
import com.navinfo.omqs.ui.dialog.FirstDialog
|
import com.navinfo.omqs.ui.dialog.FirstDialog
|
||||||
@@ -27,7 +25,6 @@ import com.navinfo.omqs.util.DateTimeUtil
|
|||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
|
||||||
import org.oscim.core.GeoPoint
|
import org.oscim.core.GeoPoint
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -144,6 +141,10 @@ class TaskViewModel @Inject constructor(
|
|||||||
|
|
||||||
liveDataTaskLinks.value = taskBean.hadLinkDvoList
|
liveDataTaskLinks.value = taskBean.hadLinkDvoList
|
||||||
showTaskLinks(taskBean)
|
showTaskLinks(taskBean)
|
||||||
|
com.navinfo.collect.library.system.Constant.TASK_ID = taskBean.id
|
||||||
|
mapController.layerManagerHandler.omdbLayersClear()
|
||||||
|
mapController.mMapView.updateMap(true)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showTaskLinks(taskBean: TaskBean) {
|
private fun showTaskLinks(taskBean: TaskBean) {
|
||||||
@@ -420,8 +421,21 @@ class TaskViewModel @Inject constructor(
|
|||||||
r.copyToRealmOrUpdate(hadLinkDvoBean)
|
r.copyToRealmOrUpdate(hadLinkDvoBean)
|
||||||
r.copyToRealmOrUpdate(currentSelectTaskBean!!)
|
r.copyToRealmOrUpdate(currentSelectTaskBean!!)
|
||||||
}
|
}
|
||||||
|
//根据Link数据查询对应数据上要素,对要素进行显示重置
|
||||||
|
l.properties["linkPid"]?.let {
|
||||||
|
realmOperateHelper.queryLinkToMutableRenderEntityList(it)
|
||||||
|
?.forEach { renderEntity ->
|
||||||
|
if(renderEntity.enable!=1){
|
||||||
|
renderEntity.enable = 1
|
||||||
|
realm.executeTransaction { r ->
|
||||||
|
r.copyToRealmOrUpdate(renderEntity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList)
|
liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList)
|
||||||
mapController.lineHandler.addTaskLink(hadLinkDvoBean)
|
mapController.lineHandler.addTaskLink(hadLinkDvoBean)
|
||||||
|
mapController.mMapView.vtmMap.updateMap(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -460,7 +474,23 @@ class TaskViewModel @Inject constructor(
|
|||||||
) { dialog, _ ->
|
) { dialog, _ ->
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = Realm.getDefaultInstance()
|
||||||
|
|
||||||
|
//重置数据为隐藏
|
||||||
|
if(hadLinkDvoBean.linkStatus==2){
|
||||||
|
realmOperateHelper.queryLinkToMutableRenderEntityList(hadLinkDvoBean.linkPid)
|
||||||
|
?.forEach { renderEntity ->
|
||||||
|
if(renderEntity.enable==1){
|
||||||
|
renderEntity.enable = 0
|
||||||
|
realm.executeTransaction { r ->
|
||||||
|
r.copyToRealmOrUpdate(renderEntity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mapController.mMapView.vtmMap.updateMap(true)
|
||||||
|
}
|
||||||
|
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
for (link in currentSelectTaskBean!!.hadLinkDvoList) {
|
for (link in currentSelectTaskBean!!.hadLinkDvoList) {
|
||||||
if (link.linkPid == hadLinkDvoBean.linkPid) {
|
if (link.linkPid == hadLinkDvoBean.linkPid) {
|
||||||
@@ -475,8 +505,8 @@ class TaskViewModel @Inject constructor(
|
|||||||
.equalTo("linkId", hadLinkDvoBean.linkPid)
|
.equalTo("linkId", hadLinkDvoBean.linkPid)
|
||||||
.and().equalTo("taskId", hadLinkDvoBean.taskId)
|
.and().equalTo("taskId", hadLinkDvoBean.taskId)
|
||||||
.findAll()
|
.findAll()
|
||||||
if(markers != null){
|
if (markers != null) {
|
||||||
for(marker in markers){
|
for (marker in markers) {
|
||||||
mapController.markerHandle.removeQsRecordMark(marker)
|
mapController.markerHandle.removeQsRecordMark(marker)
|
||||||
}
|
}
|
||||||
markers.deleteAllFromRealm()
|
markers.deleteAllFromRealm()
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.navinfo.omqs.ui.other
|
package com.navinfo.omqs.ui.other
|
||||||
|
|
||||||
import android.util.Log
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
|
|||||||
@@ -0,0 +1,119 @@
|
|||||||
|
package com.navinfo.omqs.ui.other.anim
|
||||||
|
|
||||||
|
import android.R.attr.animation
|
||||||
|
import android.animation.Animator
|
||||||
|
import android.animation.AnimatorListenerAdapter
|
||||||
|
import android.animation.ObjectAnimator
|
||||||
|
import android.animation.ValueAnimator
|
||||||
|
import android.os.Build
|
||||||
|
import android.view.View
|
||||||
|
import android.view.animation.DecelerateInterpolator
|
||||||
|
import android.widget.ImageView
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import com.navinfo.omqs.ui.other.anim.ViewHolderAnimator.ViewHolderAnimatorListener
|
||||||
|
|
||||||
|
|
||||||
|
object ExpandableViewHoldersUtil {
|
||||||
|
|
||||||
|
//自定义处理列表中右侧图标,这里是一个旋转动画
|
||||||
|
fun rotateExpandIcon(mImage: ImageView, from: Float, to: Float) {
|
||||||
|
val valueAnimator: ValueAnimator = ValueAnimator.ofFloat(from, to) //属性动画
|
||||||
|
valueAnimator.duration = 500
|
||||||
|
valueAnimator.interpolator = DecelerateInterpolator()
|
||||||
|
valueAnimator.addUpdateListener { valueAnimator ->
|
||||||
|
mImage.rotation = valueAnimator.animatedValue as Float
|
||||||
|
}
|
||||||
|
valueAnimator.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
//参数介绍:1、holder对象 2、展开部分的View,由holder.getExpandView()方法获取 3、animate参数为true,则有动画效果
|
||||||
|
fun openH(holder: RecyclerView.ViewHolder, expandView: View, animate: Boolean) {
|
||||||
|
if (animate) {
|
||||||
|
expandView.visibility = View.VISIBLE
|
||||||
|
//改变高度的动画
|
||||||
|
val animator = ViewHolderAnimator.ofItemViewHeight(holder)
|
||||||
|
//扩展的动画,结束后透明度动画开始
|
||||||
|
animator!!.addListener(object : AnimatorListenerAdapter() {
|
||||||
|
override fun onAnimationEnd(animation: Animator) {
|
||||||
|
val alphaAnimator = ObjectAnimator.ofFloat(expandView, View.ALPHA, 1f)
|
||||||
|
alphaAnimator.addListener(ViewHolderAnimatorListener(holder))
|
||||||
|
alphaAnimator.start()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
animator.start()
|
||||||
|
} else {//为false时直接显示
|
||||||
|
expandView.visibility = View.VISIBLE
|
||||||
|
expandView.alpha = 1f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//类似于打开的方法
|
||||||
|
fun closeH(holder: RecyclerView.ViewHolder, expandView: View, animate: Boolean) {
|
||||||
|
if (animate) {
|
||||||
|
expandView.visibility = View.GONE
|
||||||
|
val animator = ViewHolderAnimator.ofItemViewHeight(holder)
|
||||||
|
expandView.visibility = View.VISIBLE
|
||||||
|
animator!!.addListener(object : AnimatorListenerAdapter() {
|
||||||
|
override fun onAnimationEnd(animation: Animator) {
|
||||||
|
expandView.visibility = View.GONE
|
||||||
|
expandView.alpha = 0f
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAnimationCancel(animation: Animator) {
|
||||||
|
expandView.visibility = View.GONE
|
||||||
|
expandView.alpha = 0f
|
||||||
|
}
|
||||||
|
})
|
||||||
|
animator.start()
|
||||||
|
} else {
|
||||||
|
expandView.visibility = View.GONE
|
||||||
|
expandView.alpha = 0f
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取展开部分的View
|
||||||
|
interface Expandable {
|
||||||
|
val expandView: View
|
||||||
|
}
|
||||||
|
|
||||||
|
class KeepOneH<VH> where VH : RecyclerView.ViewHolder, VH : Expandable? {
|
||||||
|
//-1表示所有item是关闭状态,opend为pos值的表示pos位置的item为展开的状态
|
||||||
|
private var _opened = -1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 此方法是在Adapter的onBindViewHolder()方法中调用
|
||||||
|
*
|
||||||
|
* @param holder holder对象
|
||||||
|
* @param pos 下标
|
||||||
|
*/
|
||||||
|
fun bind(holder: VH, pos: Int) {
|
||||||
|
if (pos == _opened) openH(holder, holder!!.expandView, false) else closeH(
|
||||||
|
holder,
|
||||||
|
holder!!.expandView,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 响应ViewHolder的点击事件
|
||||||
|
*
|
||||||
|
* @param holder holder对象
|
||||||
|
* @param imageView 这里我传入了一个ImageView对象,为了处理图片旋转的动画,为了处理内部业务
|
||||||
|
*/
|
||||||
|
fun toggle(holder: VH, imageView: ImageView) {
|
||||||
|
if (_opened == holder!!.position) {
|
||||||
|
_opened = -1
|
||||||
|
rotateExpandIcon(imageView, 180F, 0F);
|
||||||
|
closeH(holder, holder.expandView, true)
|
||||||
|
} else {
|
||||||
|
val previous = _opened
|
||||||
|
_opened = holder.position
|
||||||
|
rotateExpandIcon(imageView, 0F, 180F);
|
||||||
|
openH(holder, holder.expandView, true)
|
||||||
|
val oldHolder =
|
||||||
|
(holder.itemView.parent as RecyclerView).findViewHolderForPosition(previous) as VH?
|
||||||
|
if (oldHolder != null) closeH(oldHolder, oldHolder.expandView, true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.navinfo.omqs.ui.other.anim
|
||||||
|
|
||||||
|
import android.animation.Animator
|
||||||
|
import android.animation.ValueAnimator
|
||||||
|
import android.view.View
|
||||||
|
|
||||||
|
object LayoutAnimator {
|
||||||
|
fun ofHeight(view: View, start: Int, end: Int): Animator {
|
||||||
|
val animator = ValueAnimator.ofInt(start, end)
|
||||||
|
animator.addUpdateListener(LayoutHeightUpdateListener(view))
|
||||||
|
return animator
|
||||||
|
}
|
||||||
|
|
||||||
|
class LayoutHeightUpdateListener(private val _view: View) :
|
||||||
|
ValueAnimator.AnimatorUpdateListener {
|
||||||
|
override fun onAnimationUpdate(animation: ValueAnimator) {
|
||||||
|
val lp = _view.layoutParams
|
||||||
|
lp.height = animation.animatedValue as Int
|
||||||
|
_view.layoutParams = lp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package com.navinfo.omqs.ui.other.anim
|
||||||
|
|
||||||
|
import android.animation.Animator
|
||||||
|
import android.animation.AnimatorListenerAdapter
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
|
||||||
|
object ViewHolderAnimator {
|
||||||
|
fun ofItemViewHeight(holder: RecyclerView.ViewHolder): Animator? {
|
||||||
|
val parent = holder.itemView.parent as View
|
||||||
|
?: throw IllegalStateException("Cannot animate the layout of a view that has no parent")
|
||||||
|
val start = holder.itemView.measuredHeight
|
||||||
|
holder.itemView.measure(
|
||||||
|
View.MeasureSpec.makeMeasureSpec(
|
||||||
|
parent.measuredWidth,
|
||||||
|
View.MeasureSpec.AT_MOST
|
||||||
|
), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
|
||||||
|
)
|
||||||
|
val end = holder.itemView.measuredHeight
|
||||||
|
val animator = LayoutAnimator.ofHeight(holder.itemView, start, end)
|
||||||
|
animator!!.addListener(ViewHolderAnimatorListener(holder))
|
||||||
|
animator.addListener(
|
||||||
|
LayoutParamsAnimatorListener(
|
||||||
|
holder.itemView,
|
||||||
|
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
|
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return animator
|
||||||
|
}
|
||||||
|
|
||||||
|
class ViewHolderAnimatorListener(private val _holder: RecyclerView.ViewHolder) :
|
||||||
|
AnimatorListenerAdapter() {
|
||||||
|
override fun onAnimationStart(animation: Animator) {
|
||||||
|
_holder.setIsRecyclable(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAnimationEnd(animation: Animator) {
|
||||||
|
_holder.setIsRecyclable(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAnimationCancel(animation: Animator) {
|
||||||
|
_holder.setIsRecyclable(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class LayoutParamsAnimatorListener(
|
||||||
|
private val _view: View,
|
||||||
|
private val _paramsWidth: Int,
|
||||||
|
private val _paramsHeight: Int
|
||||||
|
) : AnimatorListenerAdapter() {
|
||||||
|
override fun onAnimationEnd(animation: Animator) {
|
||||||
|
val params = _view.layoutParams
|
||||||
|
params.width = _paramsWidth
|
||||||
|
params.height = _paramsHeight
|
||||||
|
_view.layoutParams = params
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,8 +6,10 @@ import com.navinfo.omqs.R
|
|||||||
import com.navinfo.omqs.bean.RoadNameBean
|
import com.navinfo.omqs.bean.RoadNameBean
|
||||||
import com.navinfo.omqs.bean.SignBean
|
import com.navinfo.omqs.bean.SignBean
|
||||||
import com.navinfo.omqs.ui.activity.map.LaneInfoItem
|
import com.navinfo.omqs.ui.activity.map.LaneInfoItem
|
||||||
import com.navinfo.omqs.ui.fragment.signMoreInfo.ElectronicEyeMoreInfoAdapterItem
|
import com.navinfo.omqs.ui.fragment.signMoreInfo.LaneBoundaryItem
|
||||||
|
import com.navinfo.omqs.ui.fragment.signMoreInfo.TwoItemAdapterItem
|
||||||
import org.json.JSONArray
|
import org.json.JSONArray
|
||||||
|
import org.json.JSONObject
|
||||||
import java.lang.reflect.Field
|
import java.lang.reflect.Field
|
||||||
|
|
||||||
class SignUtil {
|
class SignUtil {
|
||||||
@@ -104,6 +106,96 @@ class SignUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取车道边界类型详细信息
|
||||||
|
*/
|
||||||
|
|
||||||
|
fun getLaneBoundaryTypeInfo(renderEntity: RenderEntity): List<LaneBoundaryItem> {
|
||||||
|
val list = mutableListOf<LaneBoundaryItem>()
|
||||||
|
list.add(LaneBoundaryItem("车道边界线ID", "${renderEntity.properties["featurePid"]}", null))
|
||||||
|
val type = renderEntity.properties["boundaryType"]
|
||||||
|
if (type != null) {
|
||||||
|
val typeStr = when (type.toInt()) {
|
||||||
|
0 -> "不应用"
|
||||||
|
1 -> "无标线无可区分边界"
|
||||||
|
2 -> "标线"
|
||||||
|
3 -> "路牙"
|
||||||
|
4 -> "护栏"
|
||||||
|
5 -> "墙"
|
||||||
|
6 -> "铺设路面边缘"
|
||||||
|
7 -> "虚拟三角岛"
|
||||||
|
8 -> "障碍物"
|
||||||
|
9 -> "杆状障碍物"
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
|
list.add(LaneBoundaryItem("边界类型", typeStr, null))
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
val shapeList = renderEntity.properties["shapeList"]
|
||||||
|
if (shapeList != null && shapeList != "" && shapeList != "null") {
|
||||||
|
val itemList = mutableListOf<TwoItemAdapterItem>()
|
||||||
|
val jsonArray = JSONArray(shapeList)
|
||||||
|
for (i in 0 until jsonArray.length()) {
|
||||||
|
val arrayObject: JSONObject = jsonArray[i] as JSONObject
|
||||||
|
var markType = when (arrayObject.getInt("markType")) {
|
||||||
|
0 -> "其他"
|
||||||
|
1 -> "实线"
|
||||||
|
2 -> "虚线"
|
||||||
|
4 -> "Gore(导流区边线)"
|
||||||
|
5 -> "铺设路面边缘(标线)"
|
||||||
|
6 -> "菱形减速标线"
|
||||||
|
7 -> "可变导向标线"
|
||||||
|
8 -> "短粗虚线"
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
|
itemList.add(TwoItemAdapterItem("车道标线类型", markType))
|
||||||
|
|
||||||
|
val markColor = when (arrayObject.getInt("markColor")) {
|
||||||
|
0 -> "不应用"
|
||||||
|
1 -> "白色"
|
||||||
|
2 -> "黄色"
|
||||||
|
6 -> "蓝色"
|
||||||
|
7 -> "绿色"
|
||||||
|
9 -> "其他"
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
|
itemList.add(TwoItemAdapterItem("车道标线颜色", markColor))
|
||||||
|
itemList.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
"车道标线宽度(mm)",
|
||||||
|
"${arrayObject.getInt("markWidth")}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val markMaterial = when (arrayObject.getInt("markMaterial")) {
|
||||||
|
0 -> "不应用"
|
||||||
|
1 -> "油漆"
|
||||||
|
2 -> "突起"
|
||||||
|
3 -> "油漆和突起"
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
|
itemList.add(TwoItemAdapterItem("车道标线材质", markMaterial))
|
||||||
|
itemList.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
"横向偏移(mm)",
|
||||||
|
"${arrayObject.getInt("lateralOffset")}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
list.add(
|
||||||
|
LaneBoundaryItem(
|
||||||
|
"车道标线序号${arrayObject.getInt("markSeqNum")}",
|
||||||
|
null,
|
||||||
|
itemList
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 右下角文字
|
* 右下角文字
|
||||||
*/
|
*/
|
||||||
@@ -121,26 +213,26 @@ class SignUtil {
|
|||||||
/**
|
/**
|
||||||
* 条件点限速更多信息
|
* 条件点限速更多信息
|
||||||
*/
|
*/
|
||||||
fun getConditionLimitMoreInfoText(renderEntity: RenderEntity): List<ElectronicEyeMoreInfoAdapterItem> {
|
fun getConditionLimitMoreInfoText(renderEntity: RenderEntity): List<TwoItemAdapterItem> {
|
||||||
|
|
||||||
val list = mutableListOf<ElectronicEyeMoreInfoAdapterItem>()
|
val list = mutableListOf<TwoItemAdapterItem>()
|
||||||
val maxSpeed = renderEntity.properties["maxSpeed"]
|
val maxSpeed = renderEntity.properties["maxSpeed"]
|
||||||
if (maxSpeed != null) {
|
if (maxSpeed != null) {
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "最高限速值(km/h)", text = maxSpeed
|
title = "最高限速值(km/h)", text = maxSpeed
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "限速条件", text = getConditionLimitText(renderEntity)
|
title = "限速条件", text = getConditionLimitText(renderEntity)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val carType = renderEntity.properties["vehicleType"]
|
val carType = renderEntity.properties["vehicleType"]
|
||||||
if (carType != "0") {
|
if (carType != "0") {
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "车辆类型", text = getElectronicEyeVehicleType(carType!!.toInt())
|
title = "车辆类型", text = getElectronicEyeVehicleType(carType!!.toInt())
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -148,7 +240,7 @@ class SignUtil {
|
|||||||
val time = renderEntity.properties["validPeriod"]
|
val time = renderEntity.properties["validPeriod"]
|
||||||
if (time?.isNotEmpty() == true) {
|
if (time?.isNotEmpty() == true) {
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "时间段", text = time
|
title = "时间段", text = time
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -241,16 +333,16 @@ class SignUtil {
|
|||||||
/**
|
/**
|
||||||
* 常规点限速更多信息
|
* 常规点限速更多信息
|
||||||
*/
|
*/
|
||||||
fun getSpeedLimitMoreInfoText(renderEntity: RenderEntity): List<ElectronicEyeMoreInfoAdapterItem> {
|
fun getSpeedLimitMoreInfoText(renderEntity: RenderEntity): List<TwoItemAdapterItem> {
|
||||||
|
|
||||||
val list = mutableListOf<ElectronicEyeMoreInfoAdapterItem>()
|
val list = mutableListOf<TwoItemAdapterItem>()
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "最高限速值(km/h)", text = getSpeedLimitMaxText(renderEntity)
|
title = "最高限速值(km/h)", text = getSpeedLimitMaxText(renderEntity)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "最低限速值(km/h)", text = getSpeedLimitMinText(renderEntity)
|
title = "最低限速值(km/h)", text = getSpeedLimitMinText(renderEntity)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -406,13 +498,6 @@ class SignUtil {
|
|||||||
return stringBuffer.toString()
|
return stringBuffer.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取车道边界线详细信息
|
|
||||||
*/
|
|
||||||
fun getLaneBoundaryInfo(data:RenderEntity){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取道路名列表
|
* 获取道路名列表
|
||||||
*/
|
*/
|
||||||
@@ -466,21 +551,49 @@ class SignUtil {
|
|||||||
return isMore
|
return isMore
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可变点限速详细信息
|
||||||
|
*/
|
||||||
|
fun getChangeLimitSpeedInfo(renderEntity: RenderEntity): List<TwoItemAdapterItem> {
|
||||||
|
val list = mutableListOf<TwoItemAdapterItem>()
|
||||||
|
val kindCode = renderEntity.properties["location"]
|
||||||
|
if (kindCode != null) {
|
||||||
|
when (kindCode.toInt()) {
|
||||||
|
1 -> list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "标牌位置", text = "左"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
2 -> list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "标牌位置", text = "右"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
3 -> list.add(
|
||||||
|
TwoItemAdapterItem(
|
||||||
|
title = "标牌位置", text = "上"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取电子眼详细信息
|
* 获取电子眼详细信息
|
||||||
*/
|
*/
|
||||||
fun getElectronicEyeMoreInfo(renderEntity: RenderEntity): List<ElectronicEyeMoreInfoAdapterItem> {
|
fun getElectronicEyeMoreInfo(renderEntity: RenderEntity): List<TwoItemAdapterItem> {
|
||||||
val list = mutableListOf<ElectronicEyeMoreInfoAdapterItem>()
|
val list = mutableListOf<TwoItemAdapterItem>()
|
||||||
val kindCode = renderEntity.properties["kind"]!!.toInt()
|
val kindCode = renderEntity.properties["kind"]!!.toInt()
|
||||||
val kind = ElectronicEyeMoreInfoAdapterItem(
|
val kind = TwoItemAdapterItem(
|
||||||
title = "电子眼类型", text = getElectronicEyeKindType(kindCode)
|
title = "电子眼类型", text = getElectronicEyeKindType(kindCode)
|
||||||
)
|
)
|
||||||
list.add(kind)
|
list.add(kind)
|
||||||
when (kindCode) {
|
when (kindCode) {
|
||||||
1, 2, 3, 4, 5, 6, 20, 21 -> {
|
1, 2, 3, 4, 5, 6, 20, 21 -> {
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "限速值(km/h)",
|
title = "限速值(km/h)",
|
||||||
text = renderEntity.properties["speedLimit"].toString()
|
text = renderEntity.properties["speedLimit"].toString()
|
||||||
)
|
)
|
||||||
@@ -490,23 +603,22 @@ class SignUtil {
|
|||||||
val carType = renderEntity.properties["vehicleType"]
|
val carType = renderEntity.properties["vehicleType"]
|
||||||
if (carType != null && carType != "0") {
|
if (carType != null && carType != "0") {
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "车辆类型",
|
title = "车辆类型", text = getElectronicEyeVehicleType(carType.toInt())
|
||||||
text = getElectronicEyeVehicleType(carType.toInt())
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
val time = renderEntity.properties["validPeriod"]
|
val time = renderEntity.properties["validPeriod"]
|
||||||
if (time?.isNotEmpty() == true) {
|
if (time?.isNotEmpty() == true) {
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "时间段", text = time
|
title = "时间段", text = time
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (kindCode == 20 || kindCode == 21) {
|
if (kindCode == 20 || kindCode == 21) {
|
||||||
list.add(
|
list.add(
|
||||||
ElectronicEyeMoreInfoAdapterItem(
|
TwoItemAdapterItem(
|
||||||
title = "区间测试配对", text = renderEntity.properties["pairEleceyeId"].toString()
|
title = "区间测试配对", text = renderEntity.properties["pairEleceyeId"].toString()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M7,10l5,5 5,-5z"/>
|
||||||
|
</vector>
|
||||||
5
app/src/main/res/drawable-v24/baseline_arrow_left_24.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<vector android:autoMirrored="true" android:height="24dp"
|
||||||
|
android:tint="#1717E0" android:viewportHeight="24"
|
||||||
|
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="@android:color/white" android:pathData="M14,7l-5,5 5,5V7z"/>
|
||||||
|
</vector>
|
||||||
BIN
app/src/main/res/drawable-xxhdpi/measuring_tool_angle.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
app/src/main/res/drawable-xxhdpi/measuring_tool_area.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
app/src/main/res/drawable-xxhdpi/measuring_tool_distance.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/drawable-xxhdpi/measuring_tool_select_point.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
|
||||||
|
<corners
|
||||||
|
android:bottomLeftRadius="6dp"
|
||||||
|
android:bottomRightRadius="6dp"
|
||||||
|
android:topLeftRadius="6dp"
|
||||||
|
android:topRightRadius="6dp" />
|
||||||
|
|
||||||
|
<solid android:color="#2632335e" />
|
||||||
|
|
||||||
|
</shape>
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/main_activity_sign_more_info_fragment"
|
android:id="@+id/main_activity_sign_more_info_fragment"
|
||||||
android:layout_width="240dp"
|
android:layout_width="240dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="300dp"
|
||||||
android:layout_marginTop="80dp"
|
android:layout_marginTop="80dp"
|
||||||
android:minHeight="140dp"
|
android:minHeight="140dp"
|
||||||
app:layout_constraintLeft_toLeftOf="@id/main_activity_top_sign_recyclerview"
|
app:layout_constraintLeft_toLeftOf="@id/main_activity_top_sign_recyclerview"
|
||||||
|
|||||||
36
app/src/main/res/layout/adapter_lane_boundary.xml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:clickable="true"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingTop="5dp"
|
||||||
|
android:paddingBottom="5dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/contactName"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@color/white" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/expand_icon"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignTop="@id/contactName"
|
||||||
|
android:layout_alignBottom="@id/contactName"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_marginRight="10dp"
|
||||||
|
android:src="@drawable/baseline_arrow_drop_down_24" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/infos"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@id/contactName"
|
||||||
|
android:alpha="0"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingLeft="5dp" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="5dp"
|
android:paddingTop="5dp"
|
||||||
android:paddingBottom="5dp"
|
android:paddingBottom="5dp"
|
||||||
tools:context="com.navinfo.omqs.ui.fragment.signMoreInfo.ElectronicEyeInfoAdapter">
|
tools:context="com.navinfo.omqs.ui.fragment.signMoreInfo.TwoItemAdapter">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/title"
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:background="@drawable/shape_rect_white_2dp_bg"
|
android:background="@drawable/shape_rect_white_2dp_bg"
|
||||||
android:hint="请备注无需作业原因"
|
android:hint="请备注无需作业原因"
|
||||||
android:lines="5"
|
android:lines="4"
|
||||||
android:textSize="13dp" />
|
android:textSize="13dp" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
119
app/src/main/res/layout/main_measuring_tool.xml
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/shape_rect_white_6dp_bg"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/shape_bg_blue_bg_4_radius"
|
||||||
|
android:textColor="@color/white" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@color/blue" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:background="@drawable/measuring_tool_select_point" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="选点"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:background="@drawable/measuring_tool_distance" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="测距"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:background="@drawable/measuring_tool_area" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="测面积"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:background="@drawable/measuring_tool_angle" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="测角度"
|
||||||
|
android:textColor="@color/black"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableLeft="@drawable/baseline_arrow_left_24"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="上一步"
|
||||||
|
android:textColor="@color/blue"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableLeft="@drawable/baseline_arrow_left_24"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="重复"
|
||||||
|
android:textColor="@color/blue"
|
||||||
|
android:textSize="12sp" />
|
||||||
|
</LinearLayout>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<item
|
<item
|
||||||
android:id="@+id/personal_center_menu_version"
|
android:id="@+id/personal_center_menu_version"
|
||||||
android:icon="@drawable/ic_baseline_layers_24"
|
android:icon="@drawable/ic_baseline_layers_24"
|
||||||
android:title="版本:ONE_QE_V1.5.0_20230728_A" />
|
android:title="版本:ONE_23QE4_V1.1.0_20230804_A" />
|
||||||
</group>
|
</group>
|
||||||
<group android:checkableBehavior="single">
|
<group android:checkableBehavior="single">
|
||||||
<item android:title="小标题">
|
<item android:title="小标题">
|
||||||
|
|||||||
@@ -1482,10 +1482,10 @@
|
|||||||
</m>
|
</m>
|
||||||
|
|
||||||
<m k="qi_table">
|
<m k="qi_table">
|
||||||
<!-- 道路线 -->
|
<!-- <!– 道路线 –>-->
|
||||||
<m v="OMDB_RD_LINK">
|
<!-- <m v="OMDB_RD_LINK">-->
|
||||||
<line stroke="#9c9c9c" width="1" />
|
<!-- <line stroke="#9c9c9c" width="1" />-->
|
||||||
</m>
|
<!-- </m>-->
|
||||||
|
|
||||||
<!--道路种别-->
|
<!--道路种别-->
|
||||||
<m v="OMDB_RD_LINK_KIND">
|
<m v="OMDB_RD_LINK_KIND">
|
||||||
@@ -1969,7 +1969,7 @@
|
|||||||
<!--车道中心线-->
|
<!--车道中心线-->
|
||||||
<m v="OMDB_LANE_LINK_LG">
|
<m v="OMDB_LANE_LINK_LG">
|
||||||
<m k="width" v="~">
|
<m k="width" v="~">
|
||||||
<line stroke="#7A88A0" width="3.8" />
|
<line stroke="#7A88A0" width="2.8" />
|
||||||
</m>
|
</m>
|
||||||
</m>
|
</m>
|
||||||
|
|
||||||
@@ -1988,6 +1988,38 @@
|
|||||||
</m>
|
</m>
|
||||||
</m>
|
</m>
|
||||||
|
|
||||||
|
<!--桥-->
|
||||||
|
<m v="OMDB_BRIDGE">
|
||||||
|
<m k="bridgeType" v="1|2|3">
|
||||||
|
<line stroke="#335431B2" width="1" />
|
||||||
|
<lineSymbol repeat-gap="24" repeat-start="0" symbol-height="24" src="assets:omdb/icon_2201_1.svg" />
|
||||||
|
</m>
|
||||||
|
<m k="type" v="s_2_p_1">
|
||||||
|
<symbol repeat="false" repeat-start="0" rotate="false"
|
||||||
|
src="assets:omdb/icon_2201_1_1.svg" symbol-height="56" symbol-width="56"></symbol>
|
||||||
|
</m>
|
||||||
|
<m k="type" v="e_2_p_1">
|
||||||
|
<symbol repeat="false" repeat-start="0" rotate="false"
|
||||||
|
src="assets:omdb/icon_2201_1_2.svg" symbol-height="56" symbol-width="56"></symbol>
|
||||||
|
</m>
|
||||||
|
<m k="type" v="s_2_p_2">
|
||||||
|
<symbol repeat="false" repeat-start="0" rotate="false"
|
||||||
|
src="assets:omdb/icon_2201_2_1.svg" symbol-height="56" symbol-width="56"></symbol>
|
||||||
|
</m>
|
||||||
|
<m k="type" v="e_2_p_2">
|
||||||
|
<symbol repeat="false" repeat-start="0" rotate="false"
|
||||||
|
src="assets:omdb/icon_2201_2_2.svg" symbol-height="56" symbol-width="56"></symbol>
|
||||||
|
</m>
|
||||||
|
<m k="type" v="s_2_p_3">
|
||||||
|
<symbol repeat="false" repeat-start="0" rotate="false"
|
||||||
|
src="assets:omdb/icon_2201_3_1.svg" symbol-height="56" symbol-width="56"></symbol>
|
||||||
|
</m>
|
||||||
|
<m k="type" v="e_2_p_3">
|
||||||
|
<symbol repeat="false" repeat-start="0" rotate="false"
|
||||||
|
src="assets:omdb/icon_2201_3_2.svg" symbol-height="56" symbol-width="56"></symbol>
|
||||||
|
</m>
|
||||||
|
</m>
|
||||||
|
|
||||||
<!-- 检查点 -->
|
<!-- 检查点 -->
|
||||||
<m v="OMDB_CHECKPOINT">
|
<m v="OMDB_CHECKPOINT">
|
||||||
<symbol src="assets:omdb/icon_1012_0.svg" symbol-height="56"
|
<symbol src="assets:omdb/icon_1012_0.svg" symbol-height="56"
|
||||||
|
|||||||
@@ -1,2 +1,17 @@
|
|||||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1657094405338" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="32402" width="128" height="128" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||||
</style></defs><path d="M517.12 944.64c-236.11392 0-427.52-191.40608-427.52-427.52 0-236.11392 191.40608-427.52 427.52-427.52 236.11392 0 427.52 191.40608 427.52 427.52C944.64 753.23392 753.23392 944.64 517.12 944.64zM517.12 143.04256c-206.59712 0-374.08256 167.48544-374.08256 374.08256S310.52288 891.20256 517.12 891.20256c206.60224 0 374.08256-167.48544 374.08256-374.08256S723.72224 143.04256 517.12 143.04256zM555.06432 517.26848l113.2032 113.2032c10.42432 10.42944 10.42432 27.3664 0 37.79584-10.43456 10.42944-27.35104 10.42944-37.79584 0l-113.2032-113.20832-113.99168 113.9712c-10.51648 10.5216-27.5712 10.5216-38.07744 0-10.51648-10.5216-10.51648-27.5712 0-38.07744l113.98144-113.98144L365.97248 403.75296c-10.43456-10.42944-10.43456-27.35104 0-37.78048 10.43456-10.43968 27.34592-10.43968 37.79072 0l113.21344 113.20832 114.82112-114.82112c10.51648-10.5216 27.5712-10.5216 38.08256 0 10.51648 10.51136 10.51648 27.5712 0 38.08256L555.06432 517.26848z" p-id="32403"></path></svg>
|
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg t="1657094405338" class="icon" viewBox="0 0 1024 1024" version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" p-id="32402" width="128" height="128"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<defs>
|
||||||
|
<style type="text/css">@font-face { font-family: feedback-iconfont; src:
|
||||||
|
url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"),
|
||||||
|
url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"),
|
||||||
|
url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype");
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<path
|
||||||
|
d="M517.12 944.64c-236.11392 0-427.52-191.40608-427.52-427.52 0-236.11392 191.40608-427.52 427.52-427.52 236.11392 0 427.52 191.40608 427.52 427.52C944.64 753.23392 753.23392 944.64 517.12 944.64zM517.12 143.04256c-206.59712 0-374.08256 167.48544-374.08256 374.08256S310.52288 891.20256 517.12 891.20256c206.60224 0 374.08256-167.48544 374.08256-374.08256S723.72224 143.04256 517.12 143.04256zM555.06432 517.26848l113.2032 113.2032c10.42432 10.42944 10.42432 27.3664 0 37.79584-10.43456 10.42944-27.35104 10.42944-37.79584 0l-113.2032-113.20832-113.99168 113.9712c-10.51648 10.5216-27.5712 10.5216-38.07744 0-10.51648-10.5216-10.51648-27.5712 0-38.07744l113.98144-113.98144L365.97248 403.75296c-10.43456-10.42944-10.43456-27.35104 0-37.78048 10.43456-10.43968 27.34592-10.43968 37.79072 0l113.21344 113.20832 114.82112-114.82112c10.51648-10.5216 27.5712-10.5216 38.08256 0 10.51648 10.51136 10.51648 27.5712 0 38.08256L555.06432 517.26848z"
|
||||||
|
p-id="32403"></path>
|
||||||
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
26
collect-library/src/main/assets/omdb/icon_2201_0.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 168 76" style="enable-background:new 0 0 168 76;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{opacity:0.2;fill:none;enable-background:new ;}
|
||||||
|
.st1{fill:#5B57C1;}
|
||||||
|
.st2{fill:#C18557;}
|
||||||
|
</style>
|
||||||
|
<g transform="translate(-153 -1049)">
|
||||||
|
<g transform="translate(0 51)">
|
||||||
|
<rect x="153" y="998" class="st0" width="168" height="76"/>
|
||||||
|
<rect x="153" y="1008" class="st1" width="168" height="12"/>
|
||||||
|
<rect x="153" y="1052" class="st1" width="168" height="12"/>
|
||||||
|
<rect x="175.5" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="156" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="195" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="253.5" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="234" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="214.5" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="273" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="312" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
<rect x="292.5" y="1008" class="st2" width="6" height="56"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
1
collect-library/src/main/assets/omdb/icon_2201_1.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="19" height="77" viewBox="0 0 19 77"><defs><style>.a{fill:#c18557;}.b{fill:#5b57c1;}</style></defs><g transform="translate(3)"><rect class="a" width="6" height="66" transform="translate(3 5)"/><rect class="b" width="19" height="10" transform="translate(-3)"/><rect class="b" width="19" height="10" transform="translate(-3 67)"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 384 B |
58
collect-library/src/main/assets/omdb/icon_2201_1_1.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="124.7" height="124.9"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 124.7 124.9">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.j{fill:url(#f);}.k{fill:#fff;}.l,.m{fill:#535a60;}.n{fill:#262d34;isolation:isolate;opacity:.2;}.o{fill:#006a17;stroke:#003a0b;}.o,.p{stroke-miterlimit:10;}.m{opacity:0;}.p{fill:url(#g);stroke:#8b9fae;stroke-width:1.4px;}
|
||||||
|
</style>
|
||||||
|
<linearGradient id="f" x1="60.1" y1="51.1" x2="64.9" y2="51.1"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#989898" />
|
||||||
|
<stop offset="0" stop-color="#a3a3a3" />
|
||||||
|
<stop offset=".1" stop-color="#c4c5c5" />
|
||||||
|
<stop offset=".2" stop-color="#d8d9d9" />
|
||||||
|
<stop offset=".3" stop-color="#e0e1e1" />
|
||||||
|
<stop offset=".4" stop-color="#dbdcdc" />
|
||||||
|
<stop offset=".5" stop-color="#cccece" />
|
||||||
|
<stop offset=".6" stop-color="#b5b6b7" />
|
||||||
|
<stop offset=".7" stop-color="#949697" />
|
||||||
|
<stop offset=".8" stop-color="#6a6c6f" />
|
||||||
|
<stop offset=".8" stop-color="#3f4246" />
|
||||||
|
<stop offset="1" stop-color="#404247" />
|
||||||
|
<stop offset="1" stop-color="#43434a" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g" x1="20.8" y1="24" x2="103.9" y2="24" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#afbacb" />
|
||||||
|
<stop offset=".1" stop-color="#c1ccda" />
|
||||||
|
<stop offset=".4" stop-color="#d9e6f0" />
|
||||||
|
<stop offset=".5" stop-color="#e3f0f8" />
|
||||||
|
<stop offset=".6" stop-color="#dde9f2" />
|
||||||
|
<stop offset=".8" stop-color="#ccd8e4" />
|
||||||
|
<stop offset="1" stop-color="#b1bbcc" />
|
||||||
|
<stop offset="1" stop-color="#aeb8c9" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="c">
|
||||||
|
<g>
|
||||||
|
<rect class="m" y=".1" width="124.7" height="124.7" />
|
||||||
|
<ellipse id="d" class="n" cx="62.4" cy="62.5" rx="14.4" ry="3.7" />
|
||||||
|
<ellipse id="e" class="l" cx="62.4" cy="62.5" rx="7.5" ry="3" />
|
||||||
|
<path class="j"
|
||||||
|
d="M62.4,39h0c1.4,0,2.6,1.2,2.6,2.6v19.2c0,1.4-1.1,2.5-2.5,2.5h-.3c-1.4,0-2.5-1.1-2.5-2.5v-19.3c0-1.4,1.2-2.6,2.6-2.6Z" />
|
||||||
|
<rect class="p" x="20.8" y=".7" width="83.1" height="46.6" rx="14.4" ry="14.4" />
|
||||||
|
<rect class="o" x="21.7" y="2.8" width="81.3" height="44" rx="14.1" ry="14.1" />
|
||||||
|
<path id="h" class="k"
|
||||||
|
d="M27.8,10.8c-.3,0-.6-.2-.7-.4s0-.6,.1-.8c1.3-1.6,3-2.9,4.8-3.9,.2,0,.4-.1,.6,0,.2,0,.4,.2,.5,.4,.2,.4,0,.9-.3,1.1-1.7,.9-3.1,2.1-4.3,3.5-.2,.2-.4,.3-.6,.3h0Zm-1.8,2.6c-.1,0-.3,0-.4-.1-.2-.1-.3-.3-.4-.5,0-.2,0-.4,.1-.6l.3-.4c.1-.2,.3-.3,.5-.4,.2,0,.4,0,.6,0,.2,.1,.3,.3,.4,.5s0,.4-.1,.6l-.3,.4c-.1,.2-.4,.4-.7,.4h0Z" />
|
||||||
|
<g>
|
||||||
|
<path class="k"
|
||||||
|
d="M51.8,26.8v15.4h-14.3v-15.4h14.3Zm-2.2,2h-10v11.3h10v-11.3Zm-6,3.7h-3.4v-2h3.4v-1.2h2.1v1.2h3.4v2h-3.4v1.2h2.6v5.3h-7.2v-5.3h2.6v-1.2Zm2.7,3h-3.3v1.8h3.3v-1.8Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M63.8,40c2.2,0,4.4,0,6.6,0l-.6,2.1c-2,.1-4.3,.1-6.4,0-2.3,0-4.1-.8-5.3-2.3-.6,1.1-1.3,2-2.2,3l-1.8-1.5c2-2.1,2.8-3.5,3.1-6.6l2.2,.2c0,1-.3,1.9-.5,2.7,.7,1.1,1.5,1.7,2.6,2.1v-5.9h-5.8v-2.1h13.3v2.1h-5.3v1.9h4.8v2.1h-4.8v2.3Zm-6.4-8.8h-2.2v-3.4h6.2l-.3-1.5h2.3c0,0,.3,1.5,.3,1.5h5.9v3.4h-2.1v-1.4h-10.1v1.4Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M77.2,35.4c-.3-.3-.6-.7-.8-1v8.1h-2v-7c-.5,1.1-1,2.1-1.6,2.9l-1.2-1.9c.9-1.3,2-3.4,2.7-5.3h-1.7v-2.1h1.8v-2.8h2v2.8h1.6v2.1h-1.6v1.2l.4-.4c.6,.5,1.3,1.3,1.9,1.9l-1.4,1.4Zm10.4,2.4c-.7-.4-1.4-.8-2-1.2v5.6h-2.1v-6.7h.9c-.7-.7-1.3-1.5-1.8-2.4-.4,.9-1,1.7-1.8,2.5h.8v1.4c0,2.7-.6,4.1-2.9,5.9l-1.5-1.5c2-1.7,2.3-2.2,2.3-4.4v-.2c-.5,.4-1,.7-1.6,1.1l-1.3-1.7c1.8-1.1,2.9-2,3.6-3.2h-2v-2.1h2.9c.1-.5,.3-1,.3-1.7-1,0-2,.1-2.8,.2l-.2-2.1c2.6-.1,6.2-.5,8.4-.9l.2,2.1c-.9,.1-2.1,.3-3.3,.4,0,.6-.2,1.3-.3,1.9h4.4v2.1h-2.9c.9,1.2,2.1,1.9,3.8,2.8l-1,2.1Z" />
|
||||||
|
</g>
|
||||||
|
<path id="i" class="k"
|
||||||
|
d="M73.2,11.9h-21.7l-4.9-6.2,1.7-1.3,4.3,5.4h19.7l4.3-5.4,1.7,1.3-4.9,6.2Zm3.2,10.5l-4.3-5.9h-19.6l-4.3,5.7-1.7-1.3,4.9-6.5h21.8l4.9,6.7-1.7,1.3Z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.2 KiB |
58
collect-library/src/main/assets/omdb/icon_2201_1_2.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="124.7" height="124.9"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 124.7 124.9">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.j{fill:url(#f);}.k{fill:#fff;}.l,.m{fill:#535a60;}.n{fill:#262d34;isolation:isolate;opacity:.2;}.o{fill:#d82e00;stroke:#8a1c21;}.o,.p{stroke-miterlimit:10;}.m{opacity:0;}.p{fill:url(#g);stroke:#8b9fae;stroke-width:1.4px;}
|
||||||
|
</style>
|
||||||
|
<linearGradient id="f" x1="60.1" y1="51.1" x2="64.9" y2="51.1"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#989898" />
|
||||||
|
<stop offset="0" stop-color="#a3a3a3" />
|
||||||
|
<stop offset=".1" stop-color="#c4c5c5" />
|
||||||
|
<stop offset=".2" stop-color="#d8d9d9" />
|
||||||
|
<stop offset=".3" stop-color="#e0e1e1" />
|
||||||
|
<stop offset=".4" stop-color="#dbdcdc" />
|
||||||
|
<stop offset=".5" stop-color="#cccece" />
|
||||||
|
<stop offset=".6" stop-color="#b5b6b7" />
|
||||||
|
<stop offset=".7" stop-color="#949697" />
|
||||||
|
<stop offset=".8" stop-color="#6a6c6f" />
|
||||||
|
<stop offset=".8" stop-color="#3f4246" />
|
||||||
|
<stop offset="1" stop-color="#404247" />
|
||||||
|
<stop offset="1" stop-color="#43434a" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g" x1="20.8" y1="24" x2="103.9" y2="24" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#afbacb" />
|
||||||
|
<stop offset=".1" stop-color="#c1ccda" />
|
||||||
|
<stop offset=".4" stop-color="#d9e6f0" />
|
||||||
|
<stop offset=".5" stop-color="#e3f0f8" />
|
||||||
|
<stop offset=".6" stop-color="#dde9f2" />
|
||||||
|
<stop offset=".8" stop-color="#ccd8e4" />
|
||||||
|
<stop offset="1" stop-color="#b1bbcc" />
|
||||||
|
<stop offset="1" stop-color="#aeb8c9" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="c">
|
||||||
|
<g>
|
||||||
|
<rect class="m" y=".1" width="124.7" height="124.7" />
|
||||||
|
<ellipse id="d" class="n" cx="62.4" cy="62.5" rx="14.4" ry="3.7" />
|
||||||
|
<ellipse id="e" class="l" cx="62.4" cy="62.5" rx="7.5" ry="3" />
|
||||||
|
<path class="j"
|
||||||
|
d="M62.4,39h0c1.4,0,2.6,1.2,2.6,2.6v19.2c0,1.4-1.1,2.5-2.5,2.5h-.3c-1.4,0-2.5-1.1-2.5-2.5v-19.3c0-1.4,1.2-2.6,2.6-2.6Z" />
|
||||||
|
<rect class="p" x="20.8" y=".7" width="83.1" height="46.6" rx="14.4" ry="14.4" />
|
||||||
|
<rect class="o" x="21.7" y="2.8" width="81.3" height="44" rx="14.1" ry="14.1" />
|
||||||
|
<path id="h" class="k"
|
||||||
|
d="M27.8,10.8c-.3,0-.6-.2-.7-.4s0-.6,.1-.8c1.3-1.6,3-2.9,4.8-3.9,.2,0,.4-.1,.6,0,.2,0,.4,.2,.5,.4,.2,.4,0,.9-.3,1.1-1.7,.9-3.1,2.1-4.3,3.5-.2,.2-.4,.3-.6,.3h0Zm-1.8,2.6c-.1,0-.3,0-.4-.1-.2-.1-.3-.3-.4-.5,0-.2,0-.4,.1-.6l.3-.4c.1-.2,.3-.3,.5-.4,.2,0,.4,0,.6,0,.2,.1,.3,.3,.4,.5s0,.4-.1,.6l-.3,.4c-.1,.2-.4,.4-.7,.4h0Z" />
|
||||||
|
<g>
|
||||||
|
<path class="k"
|
||||||
|
d="M51.8,26.8v15.4h-14.3v-15.4h14.3Zm-2.2,2h-10v11.3h10v-11.3Zm-6,3.7h-3.4v-2h3.4v-1.2h2.1v1.2h3.4v2h-3.4v1.2h2.6v5.3h-7.2v-5.3h2.6v-1.2Zm2.7,3h-3.3v1.8h3.3v-1.8Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M63.8,40c2.2,0,4.4,0,6.6,0l-.6,2.1c-2,.1-4.3,.1-6.4,0-2.3,0-4.1-.8-5.3-2.3-.6,1.1-1.3,2-2.2,3l-1.8-1.5c2-2.1,2.8-3.5,3.1-6.6l2.2,.2c0,1-.3,1.9-.5,2.7,.7,1.1,1.5,1.7,2.6,2.1v-5.9h-5.8v-2.1h13.3v2.1h-5.3v1.9h4.8v2.1h-4.8v2.3Zm-6.4-8.8h-2.2v-3.4h6.2l-.3-1.5h2.3c0,0,.3,1.5,.3,1.5h5.9v3.4h-2.1v-1.4h-10.1v1.4Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M77.2,35.4c-.3-.3-.6-.7-.8-1v8.1h-2v-7c-.5,1.1-1,2.1-1.6,2.9l-1.2-1.9c.9-1.3,2-3.4,2.7-5.3h-1.7v-2.1h1.8v-2.8h2v2.8h1.6v2.1h-1.6v1.2l.4-.4c.6,.5,1.3,1.3,1.9,1.9l-1.4,1.4Zm10.4,2.4c-.7-.4-1.4-.8-2-1.2v5.6h-2.1v-6.7h.9c-.7-.7-1.3-1.5-1.8-2.4-.4,.9-1,1.7-1.8,2.5h.8v1.4c0,2.7-.6,4.1-2.9,5.9l-1.5-1.5c2-1.7,2.3-2.2,2.3-4.4v-.2c-.5,.4-1,.7-1.6,1.1l-1.3-1.7c1.8-1.1,2.9-2,3.6-3.2h-2v-2.1h2.9c.1-.5,.3-1,.3-1.7-1,0-2,.1-2.8,.2l-.2-2.1c2.6-.1,6.2-.5,8.4-.9l.2,2.1c-.9,.1-2.1,.3-3.3,.4,0,.6-.2,1.3-.3,1.9h4.4v2.1h-2.9c.9,1.2,2.1,1.9,3.8,2.8l-1,2.1Z" />
|
||||||
|
</g>
|
||||||
|
<path id="i" class="k"
|
||||||
|
d="M73.2,11.9h-21.7l-4.9-6.2,1.7-1.3,4.3,5.4h19.7l4.3-5.4,1.7,1.3-4.9,6.2Zm3.2,10.5l-4.3-5.9h-19.6l-4.3,5.7-1.7-1.3,4.9-6.5h21.8l4.9,6.7-1.7,1.3Z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.2 KiB |
58
collect-library/src/main/assets/omdb/icon_2201_2_1.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="124.7" height="125.7"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 124.7 125.7">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.j{fill:url(#f);}.k{fill:#fff;}.l,.m{fill:#535a60;}.n{fill:#262d34;isolation:isolate;opacity:.2;}.o{fill:#006a17;stroke:#003a0b;}.o,.p{stroke-miterlimit:10;}.m{opacity:0;}.p{fill:url(#g);stroke:#8b9fae;stroke-width:1.4px;}
|
||||||
|
</style>
|
||||||
|
<linearGradient id="f" x1="60.1" y1="51.1" x2="64.9" y2="51.1"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#989898" />
|
||||||
|
<stop offset="0" stop-color="#a3a3a3" />
|
||||||
|
<stop offset=".1" stop-color="#c4c5c5" />
|
||||||
|
<stop offset=".2" stop-color="#d8d9d9" />
|
||||||
|
<stop offset=".3" stop-color="#e0e1e1" />
|
||||||
|
<stop offset=".4" stop-color="#dbdcdc" />
|
||||||
|
<stop offset=".5" stop-color="#cccece" />
|
||||||
|
<stop offset=".6" stop-color="#b5b6b7" />
|
||||||
|
<stop offset=".7" stop-color="#949697" />
|
||||||
|
<stop offset=".8" stop-color="#6a6c6f" />
|
||||||
|
<stop offset=".8" stop-color="#3f4246" />
|
||||||
|
<stop offset="1" stop-color="#404247" />
|
||||||
|
<stop offset="1" stop-color="#43434a" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g" x1="20.8" y1="24" x2="103.9" y2="24" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#afbacb" />
|
||||||
|
<stop offset=".1" stop-color="#c1ccda" />
|
||||||
|
<stop offset=".4" stop-color="#d9e6f0" />
|
||||||
|
<stop offset=".5" stop-color="#e3f0f8" />
|
||||||
|
<stop offset=".6" stop-color="#dde9f2" />
|
||||||
|
<stop offset=".8" stop-color="#ccd8e4" />
|
||||||
|
<stop offset="1" stop-color="#b1bbcc" />
|
||||||
|
<stop offset="1" stop-color="#aeb8c9" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="c">
|
||||||
|
<g>
|
||||||
|
<rect class="m" y=".9" width="124.7" height="124.7" />
|
||||||
|
<ellipse id="d" class="n" cx="62.4" cy="62.5" rx="14.4" ry="3.7" />
|
||||||
|
<ellipse id="e" class="l" cx="62.4" cy="62.5" rx="7.5" ry="3" />
|
||||||
|
<path class="j"
|
||||||
|
d="M62.4,39h0c1.4,0,2.6,1.2,2.6,2.6v19.2c0,1.4-1.1,2.5-2.5,2.5h-.3c-1.4,0-2.5-1.1-2.5-2.5v-19.3c0-1.4,1.2-2.6,2.6-2.6Z" />
|
||||||
|
<rect class="p" x="20.8" y=".7" width="83.1" height="46.6" rx="14.4" ry="14.4" />
|
||||||
|
<rect class="o" x="21.7" y="2.8" width="81.3" height="44" rx="14.1" ry="14.1" />
|
||||||
|
<path id="h" class="k"
|
||||||
|
d="M30.4,10.7c-.3,0-.6-.2-.7-.4s0-.6,.1-.8c1.3-1.6,3-2.9,4.8-3.9,.2,0,.4-.1,.6,0,.2,0,.4,.2,.5,.4,.2,.4,0,.9-.3,1.1-1.7,.9-3.1,2.1-4.3,3.5-.2,.2-.4,.3-.6,.3h0Zm-1.8,2.6c-.1,0-.3,0-.4-.1-.2-.1-.3-.3-.4-.5,0-.2,0-.4,.1-.6l.3-.4c.1-.2,.3-.3,.5-.4,.2,0,.4,0,.6,0,.2,.1,.3,.3,.4,.5s0,.4-.1,.6l-.3,.4c-.1,.2-.4,.4-.7,.4h0Z" />
|
||||||
|
<g>
|
||||||
|
<path class="k"
|
||||||
|
d="M41.8,37.4c-.2-.4-.5-.9-.8-1.5v6.4h-1.9v-5.7c-.5,1-1,2-1.6,2.8l-1.4-1.6c.9-1.2,1.9-3,2.7-4.8h-1.9v-2h2.1v-1.6c-.7,.1-1.3,.2-1.8,.3l-.2-2c1.6-.2,3.9-.6,5.5-1.1l.4,2c-.6,.2-1.2,.3-1.9,.5v2h1.7v2h-1.7v1l.7-.5c.4,.5,1.2,1.7,1.6,2.5l-1.5,1.3Zm10.7-3.2v1.9c-1.8,2.5-4.3,4.7-9.9,6.6l-1-1.7c4.9-1.4,6.8-2.8,8.4-4.8h-3.4l-.5,.5c.5,.4,.9,.8,1.3,1.2l-1.4,1.4-1.3-1.3c-.6,.5-1.1,.9-1.7,1.3l-1.2-1.5c1.8-1.1,3.1-2.3,4.2-3.6-.8,.3-1.6,.7-2.6,1l-.9-1.8c3.2-1,5.5-2.2,7.1-3.8h-3.6c0,.1-.2,.2-.3,.3,.4,.3,.7,.6,1.2,.9l-1.4,1.3c-.4-.3-.7-.7-1-1-.3,.3-.6,.5-.9,.8l-1.2-1.6c1.8-1.2,3-2.8,3.9-4.1l2,.4c-.2,.3-.4,.7-.6,1h4.6v1.9c-1.2,1.5-2.5,2.6-4.4,3.7l.9,.3-.4,.6h4.3Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M69.6,29.3l-.3,10.8c0,1.5-.7,1.9-2.2,2.1l-1.5,.2-.7-2.2h1.4c.5-.2,.7-.3,.8-1.3,.1-2.3,.2-5.6,.3-7.5h-1.5c0,.2,0,.3,0,.5-.1,3.8,.4,7.1-3.1,10.9l-1.9-1.2c.5-.5,.9-1,1.3-1.4l-1.1,.6-.3-.7c-1.8,.3-3.5,.6-4.8,.8-.2,0-.4,0-.6,.1l-.6-2.2c.5-.2,.6-.5,.7-.8,.3-.4,1.1-2.1,1.6-4.1h-2.3v-2.2h7.4v2.2h-2.8c-.5,1.6-1.3,3.6-1.7,4.5,.8-.1,1.5-.2,2.4-.4-.3-.8-.6-1.6-.9-2.2l1.9-.8c.6,1.2,1.1,2.5,1.7,4.2,1-1.9,.9-3.9,1-7,0-.2,0-.4,0-.6h-1.6v-2.2h1.6v-2.8s2.2,.1,2.2,.1v.8c0,.5,0,1.2,0,1.9h3.7Zm-8,.2h-6v-2.2h6v2.2Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M77.2,35.4c-.3-.3-.6-.7-.8-1v8.1h-2v-7c-.5,1.1-1,2.1-1.6,2.9l-1.2-1.9c.9-1.3,2-3.4,2.7-5.3h-1.7v-2.1h1.8v-2.8h2v2.8h1.6v2.1h-1.6v1.2l.4-.4c.6,.5,1.3,1.3,1.9,1.9l-1.4,1.4Zm10.4,2.4c-.7-.4-1.4-.8-2-1.2v5.6h-2.1v-6.7h.9c-.7-.7-1.3-1.5-1.8-2.4-.4,.9-1,1.7-1.8,2.5h.8v1.4c0,2.7-.6,4.1-2.9,5.9l-1.5-1.5c2-1.7,2.3-2.2,2.3-4.4v-.2c-.5,.4-1,.7-1.6,1.1l-1.3-1.7c1.8-1.1,2.9-2,3.6-3.2h-2v-2.1h2.9c.1-.5,.3-1,.3-1.7-1,0-2,.1-2.8,.2l-.2-2.1c2.6-.1,6.2-.5,8.4-.9l.2,2.1c-.9,.1-2.1,.3-3.3,.4,0,.6-.2,1.3-.3,1.9h4.4v2.1h-2.9c.9,1.2,2.1,1.9,3.8,2.8l-1,2.1Z" />
|
||||||
|
</g>
|
||||||
|
<path id="i" class="k"
|
||||||
|
d="M75.9,11.7h-21.7l-4.9-6.2,1.7-1.3,4.3,5.4h19.7l4.3-5.4,1.7,1.3-4.9,6.2Zm3.2,10.5l-4.3-5.9h-19.6l-4.3,5.7-1.7-1.3,4.9-6.5h21.8l4.9,6.7-1.7,1.3Z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.9 KiB |
58
collect-library/src/main/assets/omdb/icon_2201_2_2.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="124.7" height="125.7"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 124.7 125.7">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.j{fill:url(#f);}.k{fill:#fff;}.l,.m{fill:#535a60;}.n{fill:#262d34;isolation:isolate;opacity:.2;}.o{fill:#d82e00;stroke:#8a1c21;}.o,.p{stroke-miterlimit:10;}.m{opacity:0;}.p{fill:url(#g);stroke:#8b9fae;stroke-width:1.4px;}
|
||||||
|
</style>
|
||||||
|
<linearGradient id="f" x1="60.1" y1="51.1" x2="64.9" y2="51.1"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#989898" />
|
||||||
|
<stop offset="0" stop-color="#a3a3a3" />
|
||||||
|
<stop offset=".1" stop-color="#c4c5c5" />
|
||||||
|
<stop offset=".2" stop-color="#d8d9d9" />
|
||||||
|
<stop offset=".3" stop-color="#e0e1e1" />
|
||||||
|
<stop offset=".4" stop-color="#dbdcdc" />
|
||||||
|
<stop offset=".5" stop-color="#cccece" />
|
||||||
|
<stop offset=".6" stop-color="#b5b6b7" />
|
||||||
|
<stop offset=".7" stop-color="#949697" />
|
||||||
|
<stop offset=".8" stop-color="#6a6c6f" />
|
||||||
|
<stop offset=".8" stop-color="#3f4246" />
|
||||||
|
<stop offset="1" stop-color="#404247" />
|
||||||
|
<stop offset="1" stop-color="#43434a" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g" x1="20.8" y1="24" x2="103.9" y2="24" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#afbacb" />
|
||||||
|
<stop offset=".1" stop-color="#c1ccda" />
|
||||||
|
<stop offset=".4" stop-color="#d9e6f0" />
|
||||||
|
<stop offset=".5" stop-color="#e3f0f8" />
|
||||||
|
<stop offset=".6" stop-color="#dde9f2" />
|
||||||
|
<stop offset=".8" stop-color="#ccd8e4" />
|
||||||
|
<stop offset="1" stop-color="#b1bbcc" />
|
||||||
|
<stop offset="1" stop-color="#aeb8c9" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="c">
|
||||||
|
<g>
|
||||||
|
<rect class="m" y=".9" width="124.7" height="124.7" />
|
||||||
|
<ellipse id="d" class="n" cx="62.4" cy="62.5" rx="14.4" ry="3.7" />
|
||||||
|
<ellipse id="e" class="l" cx="62.4" cy="62.5" rx="7.5" ry="3" />
|
||||||
|
<path class="j"
|
||||||
|
d="M62.4,39h0c1.4,0,2.6,1.2,2.6,2.6v19.2c0,1.4-1.1,2.5-2.5,2.5h-.3c-1.4,0-2.5-1.1-2.5-2.5v-19.3c0-1.4,1.2-2.6,2.6-2.6Z" />
|
||||||
|
<rect class="p" x="20.8" y=".7" width="83.1" height="46.6" rx="14.4" ry="14.4" />
|
||||||
|
<rect class="o" x="21.7" y="2.8" width="81.3" height="44" rx="14.1" ry="14.1" />
|
||||||
|
<path id="h" class="k"
|
||||||
|
d="M30.4,10.7c-.3,0-.6-.2-.7-.4s0-.6,.1-.8c1.3-1.6,3-2.9,4.8-3.9,.2,0,.4-.1,.6,0,.2,0,.4,.2,.5,.4,.2,.4,0,.9-.3,1.1-1.7,.9-3.1,2.1-4.3,3.5-.2,.2-.4,.3-.6,.3h0Zm-1.8,2.6c-.1,0-.3,0-.4-.1-.2-.1-.3-.3-.4-.5,0-.2,0-.4,.1-.6l.3-.4c.1-.2,.3-.3,.5-.4,.2,0,.4,0,.6,0,.2,.1,.3,.3,.4,.5s0,.4-.1,.6l-.3,.4c-.1,.2-.4,.4-.7,.4h0Z" />
|
||||||
|
<g>
|
||||||
|
<path class="k"
|
||||||
|
d="M41.8,37.4c-.2-.4-.5-.9-.8-1.5v6.4h-1.9v-5.7c-.5,1-1,2-1.6,2.8l-1.4-1.6c.9-1.2,1.9-3,2.7-4.8h-1.9v-2h2.1v-1.6c-.7,.1-1.3,.2-1.8,.3l-.2-2c1.6-.2,3.9-.6,5.5-1.1l.4,2c-.6,.2-1.2,.3-1.9,.5v2h1.7v2h-1.7v1l.7-.5c.4,.5,1.2,1.7,1.6,2.5l-1.5,1.3Zm10.7-3.2v1.9c-1.8,2.5-4.3,4.7-9.9,6.6l-1-1.7c4.9-1.4,6.8-2.8,8.4-4.8h-3.4l-.5,.5c.5,.4,.9,.8,1.3,1.2l-1.4,1.4-1.3-1.3c-.6,.5-1.1,.9-1.7,1.3l-1.2-1.5c1.8-1.1,3.1-2.3,4.2-3.6-.8,.3-1.6,.7-2.6,1l-.9-1.8c3.2-1,5.5-2.2,7.1-3.8h-3.6c0,.1-.2,.2-.3,.3,.4,.3,.7,.6,1.2,.9l-1.4,1.3c-.4-.3-.7-.7-1-1-.3,.3-.6,.5-.9,.8l-1.2-1.6c1.8-1.2,3-2.8,3.9-4.1l2,.4c-.2,.3-.4,.7-.6,1h4.6v1.9c-1.2,1.5-2.5,2.6-4.4,3.7l.9,.3-.4,.6h4.3Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M69.6,29.3l-.3,10.8c0,1.5-.7,1.9-2.2,2.1l-1.5,.2-.7-2.2h1.4c.5-.2,.7-.3,.8-1.3,.1-2.3,.2-5.6,.3-7.5h-1.5c0,.2,0,.3,0,.5-.1,3.8,.4,7.1-3.1,10.9l-1.9-1.2c.5-.5,.9-1,1.3-1.4l-1.1,.6-.3-.7c-1.8,.3-3.5,.6-4.8,.8-.2,0-.4,0-.6,.1l-.6-2.2c.5-.2,.6-.5,.7-.8,.3-.4,1.1-2.1,1.6-4.1h-2.3v-2.2h7.4v2.2h-2.8c-.5,1.6-1.3,3.6-1.7,4.5,.8-.1,1.5-.2,2.4-.4-.3-.8-.6-1.6-.9-2.2l1.9-.8c.6,1.2,1.1,2.5,1.7,4.2,1-1.9,.9-3.9,1-7,0-.2,0-.4,0-.6h-1.6v-2.2h1.6v-2.8s2.2,.1,2.2,.1v.8c0,.5,0,1.2,0,1.9h3.7Zm-8,.2h-6v-2.2h6v2.2Z" />
|
||||||
|
<path class="k"
|
||||||
|
d="M77.2,35.4c-.3-.3-.6-.7-.8-1v8.1h-2v-7c-.5,1.1-1,2.1-1.6,2.9l-1.2-1.9c.9-1.3,2-3.4,2.7-5.3h-1.7v-2.1h1.8v-2.8h2v2.8h1.6v2.1h-1.6v1.2l.4-.4c.6,.5,1.3,1.3,1.9,1.9l-1.4,1.4Zm10.4,2.4c-.7-.4-1.4-.8-2-1.2v5.6h-2.1v-6.7h.9c-.7-.7-1.3-1.5-1.8-2.4-.4,.9-1,1.7-1.8,2.5h.8v1.4c0,2.7-.6,4.1-2.9,5.9l-1.5-1.5c2-1.7,2.3-2.2,2.3-4.4v-.2c-.5,.4-1,.7-1.6,1.1l-1.3-1.7c1.8-1.1,2.9-2,3.6-3.2h-2v-2.1h2.9c.1-.5,.3-1,.3-1.7-1,0-2,.1-2.8,.2l-.2-2.1c2.6-.1,6.2-.5,8.4-.9l.2,2.1c-.9,.1-2.1,.3-3.3,.4,0,.6-.2,1.3-.3,1.9h4.4v2.1h-2.9c.9,1.2,2.1,1.9,3.8,2.8l-1,2.1Z" />
|
||||||
|
</g>
|
||||||
|
<path id="i" class="k"
|
||||||
|
d="M75.9,11.7h-21.7l-4.9-6.2,1.7-1.3,4.3,5.4h19.7l4.3-5.4,1.7,1.3-4.9,6.2Zm3.2,10.5l-4.3-5.9h-19.6l-4.3,5.7-1.7-1.3,4.9-6.5h21.8l4.9,6.7-1.7,1.3Z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.9 KiB |
58
collect-library/src/main/assets/omdb/icon_2201_3_1.svg
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="124.7" height="125.4"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 124.7 125.4">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.i{fill:url(#f);}.j{fill:#fff;}.k,.l{fill:#535a60;}.m{fill:#262d34;isolation:isolate;opacity:.2;}.n{fill:#006a17;stroke:#003a0b;}.n,.o{stroke-miterlimit:10;}.l{opacity:0;}.o{fill:url(#g);stroke:#8b9fae;stroke-width:1.4px;}
|
||||||
|
</style>
|
||||||
|
<linearGradient id="f" x1="60.1" y1="51.1" x2="64.9" y2="51.1"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#989898" />
|
||||||
|
<stop offset="0" stop-color="#a3a3a3" />
|
||||||
|
<stop offset=".1" stop-color="#c4c5c5" />
|
||||||
|
<stop offset=".2" stop-color="#d8d9d9" />
|
||||||
|
<stop offset=".3" stop-color="#e0e1e1" />
|
||||||
|
<stop offset=".4" stop-color="#dbdcdc" />
|
||||||
|
<stop offset=".5" stop-color="#cccece" />
|
||||||
|
<stop offset=".6" stop-color="#b5b6b7" />
|
||||||
|
<stop offset=".7" stop-color="#949697" />
|
||||||
|
<stop offset=".8" stop-color="#6a6c6f" />
|
||||||
|
<stop offset=".8" stop-color="#3f4246" />
|
||||||
|
<stop offset="1" stop-color="#404247" />
|
||||||
|
<stop offset="1" stop-color="#43434a" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g" x1="20.8" y1="24" x2="103.9" y2="24" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#afbacb" />
|
||||||
|
<stop offset=".1" stop-color="#c1ccda" />
|
||||||
|
<stop offset=".4" stop-color="#d9e6f0" />
|
||||||
|
<stop offset=".5" stop-color="#e3f0f8" />
|
||||||
|
<stop offset=".6" stop-color="#dde9f2" />
|
||||||
|
<stop offset=".8" stop-color="#ccd8e4" />
|
||||||
|
<stop offset="1" stop-color="#b1bbcc" />
|
||||||
|
<stop offset="1" stop-color="#aeb8c9" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="c">
|
||||||
|
<g>
|
||||||
|
<rect class="l" y=".7" width="124.7" height="124.7" />
|
||||||
|
<ellipse id="d" class="m" cx="62.4" cy="62.5" rx="14.4" ry="3.7" />
|
||||||
|
<ellipse id="e" class="k" cx="62.4" cy="62.5" rx="7.5" ry="3" />
|
||||||
|
<path class="i"
|
||||||
|
d="M62.4,39h0c1.4,0,2.6,1.2,2.6,2.6v19.2c0,1.4-1.1,2.5-2.5,2.5h-.3c-1.4,0-2.5-1.1-2.5-2.5v-19.3c0-1.4,1.2-2.6,2.6-2.6Z" />
|
||||||
|
<rect class="o" x="20.8" y=".7" width="83.1" height="46.6" rx="14.4" ry="14.4" />
|
||||||
|
<rect class="n" x="21.7" y="2.8" width="81.3" height="44" rx="14.1" ry="14.1" />
|
||||||
|
<g>
|
||||||
|
<path class="j"
|
||||||
|
d="M43.2,34.5h-.1c0,0,0,1.7,0,1.7h-5.7v.7c-.1,0,5.1,0,5.1,0,0,.7-.3,2.5-.4,3.4-.2,1.7-.8,2.1-2.7,2.2h-1.1c0,0-.6-1.8-.6-1.8h1.4c.6-.2,.8-.2,.9-.7,0-.2,.2-.8,.2-1.1h-5.3l.5-2.6h-.9v-2h8.2c-.6-.5-1.2-1-1.8-1.5v.9h-4.6v-.6c-.4,.4-.9,.8-1.4,1.3l-.9-1.5v.5h-1.2v1.7h1.2v2.1h-1.2v2l1.5-.3v1c0,0,.1,1.1,.1,1.1-1.1,.1-5.4,.8-6.5,1l-.2-2.1c.2,0,.4,0,.7-.1v-5.7h1.9v5.5h.7v-6.2h-2.4v-6.1h5.4v5.2c1-.7,1.7-1.4,2.3-2.3h-1.8v-2.1h2.7c.1-.5,.3-1,.4-1.5l1.9,.3c0,.5-.2,.9-.3,1.3h4v2.1h-2.1c.7,1.2,1.8,2.1,3,2.8l-1,1.7Zm-12.6-3.5h1.6v-1.9h-1.6v1.9Zm9.5,.5c-.4-.5-.7-1-.9-1.6h-.7c-.3,.6-.6,1.1-.9,1.6h2.5Z" />
|
||||||
|
<path class="j"
|
||||||
|
d="M45.8,39.5c1-.1,4.2-.9,5.8-1.5l.2,2c-.9,.4-4.6,1.4-5.5,1.5l-.5-2Zm15.9-1c-.1,.6-.2,1-.5,1.7-.5,1.7-1.2,2.3-2.5,2.3s-1.7-.5-2.7-2.1l-.2-.4c-.9,.5-1.8,1-2.8,1.4l-1-2c1.2-.4,2.2-.9,3-1.4-.3-.8-.5-1.8-.7-3l-2.1,.3-.2-2.1,1.9-.3v-1.2c-.1,0-1.3,.1-1.3,.1v-1.7c-1.2,2-2.5,4.2-3.2,5,.7,0,1.7-.4,2.4-.5v2c-1,.2-2.7,.6-3.9,.9-.4,0-.7,.2-.9,.3l-.6-2.2c.6-.2,.8-.3,1.1-.7,.3-.4,.8-1.1,1.3-2-.6,0-1.2,0-1.6,.1h-.7c0,.1-.5-1.9-.5-1.9,.4-.2,.5-.3,.7-.4,.4-.3,1.7-2.5,2.4-4.5l1.9,.9c-.7,1.3-1.9,3.4-2.4,3.9,.4,0,.8,0,1.3,0l1-2.1,1.7,.9v.3c-.1,0,.9-.1,.9-.1,0-1.1-.1-3-.2-3.6h2.1c0,.5,0,1.7,.2,3.3l1.9-.2c-.4-.7-1-1.5-1.5-2.1l1.4-1.1c.6,.6,1.2,1.4,1.7,2.2l-1.1,.9,2.3-.3,.2,2-4.7,.6c0,.4,0,.8,.1,1.2l4.8-.6,.2,2.1-1.9,.3,1.3,1.4c-.8,1-1.7,2-2.8,2.9,.1,.2,.2,.4,.3,.5,.3,.6,.7,.8,.9,.8,.4,0,.5-.2,.8-1.1,.2-.6,.3-.9,.3-1.4l1.8,.9Zm-5.4-3.6c.2,.8,.3,1.4,.5,2,.8-.7,1.5-1.5,2.2-2.4l-2.7,.4Z" />
|
||||||
|
<path class="j"
|
||||||
|
d="M72.6,34.5c1.1,2.8,3.4,4.7,6.8,6.1l-1.2,2.4c-3.4-1.8-5.6-3.6-6.9-6.1-1.1,2.1-3.2,4.1-6.7,6l-1.6-2.1c3.6-1.7,6-3.7,6.7-6.3h-5.9v-2.2h6.2v-2.9h-5.2v-2.2h12.8v2.2h-5.3v2.9h6.2v2.2h-6Z" />
|
||||||
|
<path class="j"
|
||||||
|
d="M86.1,35.4c-.3-.3-.6-.7-.8-1v8.1h-2v-7c-.5,1.1-1,2.1-1.6,2.9l-1.2-1.9c.9-1.3,2-3.4,2.7-5.3h-1.7v-2.1h1.8v-2.8h2v2.8h1.6v2.1h-1.6v1.2l.4-.4c.6,.5,1.3,1.3,1.9,1.9l-1.4,1.4Zm10.4,2.4c-.7-.4-1.4-.8-2-1.2v5.6h-2.1v-6.7h.9c-.7-.7-1.3-1.5-1.8-2.4-.4,.9-1,1.7-1.8,2.5h.8v1.4c0,2.7-.6,4.1-2.9,5.9l-1.5-1.5c2-1.7,2.3-2.2,2.3-4.4v-.2c-.5,.4-1,.7-1.6,1.1l-1.3-1.7c1.8-1.1,2.9-2,3.6-3.2h-2v-2.1h2.9c.1-.5,.3-1,.3-1.7-1,0-2,.1-2.8,.2l-.2-2.1c2.6-.1,6.2-.5,8.4-.9l.2,2.1c-.9,.1-2.1,.3-3.3,.4,0,.6-.2,1.3-.3,1.9h4.4v2.1h-2.9c.9,1.2,2.1,1.9,3.8,2.8l-1,2.1Z" />
|
||||||
|
</g>
|
||||||
|
<path id="h" class="j"
|
||||||
|
d="M73.2,11.9h-21.7l-4.9-6.2,1.7-1.3,4.3,5.4h19.7l4.3-5.4,1.7,1.3-4.9,6.2Zm3.2,10.5l-4.3-5.9h-19.6l-4.3,5.7-1.7-1.3,4.9-6.5h21.8l4.9,6.7-1.7,1.3Z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.0 KiB |
56
collect-library/src/main/assets/omdb/icon_2201_3_2.svg
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="124.7" height="125.4"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 124.7 125.4">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.h{fill:url(#f);}.i{fill:#fff;}.j,.k{fill:#535a60;}.l{fill:#262d34;isolation:isolate;opacity:.2;}.m{fill:#d82e00;stroke:#8a1c21;}.m,.n{stroke-miterlimit:10;}.k{opacity:0;}.n{fill:url(#g);stroke:#8b9fae;stroke-width:1.4px;}
|
||||||
|
</style>
|
||||||
|
<linearGradient id="f" x1="60.1" y1="51.1" x2="64.9" y2="51.1"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#989898" />
|
||||||
|
<stop offset="0" stop-color="#a3a3a3" />
|
||||||
|
<stop offset=".1" stop-color="#c4c5c5" />
|
||||||
|
<stop offset=".2" stop-color="#d8d9d9" />
|
||||||
|
<stop offset=".3" stop-color="#e0e1e1" />
|
||||||
|
<stop offset=".4" stop-color="#dbdcdc" />
|
||||||
|
<stop offset=".5" stop-color="#cccece" />
|
||||||
|
<stop offset=".6" stop-color="#b5b6b7" />
|
||||||
|
<stop offset=".7" stop-color="#949697" />
|
||||||
|
<stop offset=".8" stop-color="#6a6c6f" />
|
||||||
|
<stop offset=".8" stop-color="#3f4246" />
|
||||||
|
<stop offset="1" stop-color="#404247" />
|
||||||
|
<stop offset="1" stop-color="#43434a" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="g" x1="20.8" y1="24" x2="103.9" y2="24" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#afbacb" />
|
||||||
|
<stop offset=".1" stop-color="#c1ccda" />
|
||||||
|
<stop offset=".4" stop-color="#d9e6f0" />
|
||||||
|
<stop offset=".5" stop-color="#e3f0f8" />
|
||||||
|
<stop offset=".6" stop-color="#dde9f2" />
|
||||||
|
<stop offset=".8" stop-color="#ccd8e4" />
|
||||||
|
<stop offset="1" stop-color="#b1bbcc" />
|
||||||
|
<stop offset="1" stop-color="#aeb8c9" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<g id="c">
|
||||||
|
<g>
|
||||||
|
<rect class="k" y=".7" width="124.7" height="124.7" />
|
||||||
|
<ellipse id="d" class="l" cx="62.4" cy="62.5" rx="14.4" ry="3.7" />
|
||||||
|
<ellipse id="e" class="j" cx="62.4" cy="62.5" rx="7.5" ry="3" />
|
||||||
|
<path class="h"
|
||||||
|
d="M62.4,39h0c1.4,0,2.6,1.2,2.6,2.6v19.2c0,1.4-1.1,2.5-2.5,2.5h-.3c-1.4,0-2.5-1.1-2.5-2.5v-19.3c0-1.4,1.2-2.6,2.6-2.6Z" />
|
||||||
|
<rect class="n" x="20.8" y=".7" width="83.1" height="46.6" rx="14.4" ry="14.4" />
|
||||||
|
<rect class="m" x="21.7" y="2.8" width="81.3" height="44" rx="14.1" ry="14.1" />
|
||||||
|
<g>
|
||||||
|
<path class="i"
|
||||||
|
d="M43.2,34.5h-.1c0,0,0,1.7,0,1.7h-5.7v.7c-.1,0,5.1,0,5.1,0,0,.7-.3,2.5-.4,3.4-.2,1.7-.8,2.1-2.7,2.2h-1.1c0,0-.6-1.8-.6-1.8h1.4c.6-.2,.8-.2,.9-.7,0-.2,.2-.8,.2-1.1h-5.3l.5-2.6h-.9v-2h8.2c-.6-.5-1.2-1-1.8-1.5v.9h-4.6v-.6c-.4,.4-.9,.8-1.4,1.3l-.9-1.5v.5h-1.2v1.7h1.2v2.1h-1.2v2l1.5-.3v1c0,0,.1,1.1,.1,1.1-1.1,.1-5.4,.8-6.5,1l-.2-2.1c.2,0,.4,0,.7-.1v-5.7h1.9v5.5h.7v-6.2h-2.4v-6.1h5.4v5.2c1-.7,1.7-1.4,2.3-2.3h-1.8v-2.1h2.7c.1-.5,.3-1,.4-1.5l1.9,.3c0,.5-.2,.9-.3,1.3h4v2.1h-2.1c.7,1.2,1.8,2.1,3,2.8l-1,1.7Zm-12.6-3.5h1.6v-1.9h-1.6v1.9Zm9.5,.5c-.4-.5-.7-1-.9-1.6h-.7c-.3,.6-.6,1.1-.9,1.6h2.5Z" />
|
||||||
|
<path class="i"
|
||||||
|
d="M45.8,39.5c1-.1,4.2-.9,5.8-1.5l.2,2c-.9,.4-4.6,1.4-5.5,1.5l-.5-2Zm15.9-1c-.1,.6-.2,1-.5,1.7-.5,1.7-1.2,2.3-2.5,2.3s-1.7-.5-2.7-2.1l-.2-.4c-.9,.5-1.8,1-2.8,1.4l-1-2c1.2-.4,2.2-.9,3-1.4-.3-.8-.5-1.8-.7-3l-2.1,.3-.2-2.1,1.9-.3v-1.2c-.1,0-1.3,.1-1.3,.1v-1.7c-1.2,2-2.5,4.2-3.2,5,.7,0,1.7-.4,2.4-.5v2c-1,.2-2.7,.6-3.9,.9-.4,0-.7,.2-.9,.3l-.6-2.2c.6-.2,.8-.3,1.1-.7,.3-.4,.8-1.1,1.3-2-.6,0-1.2,0-1.6,.1h-.7c0,.1-.5-1.9-.5-1.9,.4-.2,.5-.3,.7-.4,.4-.3,1.7-2.5,2.4-4.5l1.9,.9c-.7,1.3-1.9,3.4-2.4,3.9,.4,0,.8,0,1.3,0l1-2.1,1.7,.9v.3c-.1,0,.9-.1,.9-.1,0-1.1-.1-3-.2-3.6h2.1c0,.5,0,1.7,.2,3.3l1.9-.2c-.4-.7-1-1.5-1.5-2.1l1.4-1.1c.6,.6,1.2,1.4,1.7,2.2l-1.1,.9,2.3-.3,.2,2-4.7,.6c0,.4,0,.8,.1,1.2l4.8-.6,.2,2.1-1.9,.3,1.3,1.4c-.8,1-1.7,2-2.8,2.9,.1,.2,.2,.4,.3,.5,.3,.6,.7,.8,.9,.8,.4,0,.5-.2,.8-1.1,.2-.6,.3-.9,.3-1.4l1.8,.9Zm-5.4-3.6c.2,.8,.3,1.4,.5,2,.8-.7,1.5-1.5,2.2-2.4l-2.7,.4Z" />
|
||||||
|
<path class="i"
|
||||||
|
d="M72.6,34.5c1.1,2.8,3.4,4.7,6.8,6.1l-1.2,2.4c-3.4-1.8-5.6-3.6-6.9-6.1-1.1,2.1-3.2,4.1-6.7,6l-1.6-2.1c3.6-1.7,6-3.7,6.7-6.3h-5.9v-2.2h6.2v-2.9h-5.2v-2.2h12.8v2.2h-5.3v2.9h6.2v2.2h-6Z" />
|
||||||
|
<path class="i"
|
||||||
|
d="M86.1,35.4c-.3-.3-.6-.7-.8-1v8.1h-2v-7c-.5,1.1-1,2.1-1.6,2.9l-1.2-1.9c.9-1.3,2-3.4,2.7-5.3h-1.7v-2.1h1.8v-2.8h2v2.8h1.6v2.1h-1.6v1.2l.4-.4c.6,.5,1.3,1.3,1.9,1.9l-1.4,1.4Zm10.4,2.4c-.7-.4-1.4-.8-2-1.2v5.6h-2.1v-6.7h.9c-.7-.7-1.3-1.5-1.8-2.4-.4,.9-1,1.7-1.8,2.5h.8v1.4c0,2.7-.6,4.1-2.9,5.9l-1.5-1.5c2-1.7,2.3-2.2,2.3-4.4v-.2c-.5,.4-1,.7-1.6,1.1l-1.3-1.7c1.8-1.1,2.9-2,3.6-3.2h-2v-2.1h2.9c.1-.5,.3-1,.3-1.7-1,0-2,.1-2.8,.2l-.2-2.1c2.6-.1,6.2-.5,8.4-.9l.2,2.1c-.9,.1-2.1,.3-3.3,.4,0,.6-.2,1.3-.3,1.9h4.4v2.1h-2.9c.9,1.2,2.1,1.9,3.8,2.8l-1,2.1Z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 4.8 KiB |
21
collect-library/src/main/assets/omdb/ttt.svg
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="168" height="38" viewBox="0 0 168 38">
|
||||||
|
<defs>
|
||||||
|
<style>.a{fill:#5431b2;opacity:0.2;}.b{fill:#5b57c1;}.c{fill:#c18557;}</style>
|
||||||
|
</defs>
|
||||||
|
<g transform="translate(-153 -1049)">
|
||||||
|
<g transform="translate(0 51)">
|
||||||
|
<rect class="a" width="38" height="168" transform="translate(321 998) rotate(90)" />
|
||||||
|
<rect class="b" width="6" height="168" transform="translate(321 1003) rotate(90)" />
|
||||||
|
<rect class="b" width="6" height="168" transform="translate(321 1025) rotate(90)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(156 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(176 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(215 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(195 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(254 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(234 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(312 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(293 1003)" />
|
||||||
|
<rect class="c" width="6" height="28" transform="translate(273 1003)" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1,6 +1,5 @@
|
|||||||
package com.navinfo.collect.library.data.entity
|
package com.navinfo.collect.library.data.entity
|
||||||
|
|
||||||
import com.navinfo.collect.library.system.Constant
|
|
||||||
import com.navinfo.collect.library.utils.GeometryTools
|
import com.navinfo.collect.library.utils.GeometryTools
|
||||||
import com.navinfo.collect.library.utils.GeometryToolsKt
|
import com.navinfo.collect.library.utils.GeometryToolsKt
|
||||||
import io.realm.RealmDictionary
|
import io.realm.RealmDictionary
|
||||||
@@ -8,9 +7,7 @@ import io.realm.RealmObject
|
|||||||
import io.realm.RealmSet
|
import io.realm.RealmSet
|
||||||
import io.realm.annotations.Ignore
|
import io.realm.annotations.Ignore
|
||||||
import io.realm.annotations.PrimaryKey
|
import io.realm.annotations.PrimaryKey
|
||||||
import org.locationtech.jts.geom.Coordinate
|
|
||||||
import org.locationtech.jts.geom.Geometry
|
import org.locationtech.jts.geom.Geometry
|
||||||
import org.oscim.core.MercatorProjection
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -26,6 +23,8 @@ open class ReferenceEntity() : RealmObject() {
|
|||||||
var zoomMin: Int = 18 //显示最小级别
|
var zoomMin: Int = 18 //显示最小级别
|
||||||
var zoomMax: Int = 23 //显示最大级别
|
var zoomMax: Int = 23 //显示最大级别
|
||||||
var taskId: Int = 0 //任务ID
|
var taskId: Int = 0 //任务ID
|
||||||
|
var enable:Int = 0 // 默认0不是显示 1为渲染显示
|
||||||
|
|
||||||
var geometry: String = "" // 要素渲染参考的geometry,该数据可能会在导入预处理环节被修改,原始geometry会保存在properties的geometry字段下
|
var geometry: String = "" // 要素渲染参考的geometry,该数据可能会在导入预处理环节被修改,原始geometry会保存在properties的geometry字段下
|
||||||
get() {
|
get() {
|
||||||
wkt = GeometryTools.createGeometry(field)
|
wkt = GeometryTools.createGeometry(field)
|
||||||
@@ -63,5 +62,4 @@ open class ReferenceEntity() : RealmObject() {
|
|||||||
constructor(name: String): this() {
|
constructor(name: String): this() {
|
||||||
this.name = name
|
this.name = name
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -62,6 +62,7 @@ open class RenderEntity() : RealmObject(), Parcelable {
|
|||||||
var taskId: Int = 0 //任务ID
|
var taskId: Int = 0 //任务ID
|
||||||
var zoomMin: Int = 18 //显示最小级别
|
var zoomMin: Int = 18 //显示最小级别
|
||||||
var zoomMax: Int = 23 //显示最大级别
|
var zoomMax: Int = 23 //显示最大级别
|
||||||
|
var enable:Int = 0 // 默认0不是显示 1为渲染显示 2为常显
|
||||||
|
|
||||||
constructor(name: String) : this() {
|
constructor(name: String) : this() {
|
||||||
this.name = name
|
this.name = name
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import java.io.File
|
|||||||
*/
|
*/
|
||||||
class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, tracePath: String) :
|
class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, tracePath: String) :
|
||||||
BaseHandler(context, mapView) {
|
BaseHandler(context, mapView) {
|
||||||
private var baseGroupLayer // 用于盛放所有基础底图的图层组,便于统一管理
|
private var baseGroupLayer // 用于盛放所有基础底图的图层组,便于统一管理LabelTileLoaderHook
|
||||||
: GroupLayer? = null
|
: GroupLayer? = null
|
||||||
private val mTracePath: String = tracePath
|
private val mTracePath: String = tracePath
|
||||||
|
|
||||||
@@ -216,11 +216,11 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView, traceP
|
|||||||
labelNiLocationLayer.isEnabled = false
|
labelNiLocationLayer.isEnabled = false
|
||||||
}
|
}
|
||||||
|
|
||||||
fun omdbLayersUpdate(){
|
fun omdbLayersClear(){
|
||||||
// omdbVectorTileLayer
|
// omdbVectorTileLayer.
|
||||||
// omdbReferenceTileLayer.
|
// omdbReferenceTileLayer.
|
||||||
omdbLabelLayer.update()
|
omdbLabelLayer.clearLabels()
|
||||||
omdbReferenceLabelLayer.update()
|
omdbReferenceLabelLayer.clearLabels()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,12 +71,13 @@ public class OMDBDataDecoder extends TileDecoder {
|
|||||||
listResult.stream().iterator().forEachRemaining(new Consumer<RenderEntity>() {
|
listResult.stream().iterator().forEachRemaining(new Consumer<RenderEntity>() {
|
||||||
@Override
|
@Override
|
||||||
public void accept(RenderEntity renderEntity) {
|
public void accept(RenderEntity renderEntity) {
|
||||||
|
|
||||||
if(!(mapLevel<renderEntity.getZoomMin()||mapLevel>renderEntity.getZoomMax())){
|
if(!(mapLevel<renderEntity.getZoomMin()||mapLevel>renderEntity.getZoomMax())){
|
||||||
Map<String, Object> properties= new HashMap<>(renderEntity.getProperties().size());
|
Map<String, Object> properties= new HashMap<>(renderEntity.getProperties().size());
|
||||||
properties.putAll(renderEntity.getProperties());
|
properties.putAll(renderEntity.getProperties());
|
||||||
parseGeometry(renderEntity.getTable(), renderEntity.getWkt(), properties);
|
parseGeometry(renderEntity.getTable(), renderEntity.getWkt(), properties);
|
||||||
}else{
|
}else{
|
||||||
Log.e("qj","render"+renderEntity.name+"=="+renderEntity.getZoomMin()+"==="+renderEntity.getZoomMax());
|
Log.e("qj","render"+renderEntity.name+"=="+renderEntity.getZoomMin()+"==="+renderEntity.getZoomMax()+"==="+renderEntity.getEnable());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.navinfo.collect.library.map.source;
|
package com.navinfo.collect.library.map.source;
|
||||||
|
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
@@ -29,27 +30,28 @@ public class OMDBReferenceDataSource implements ITileDataSource {
|
|||||||
@Override
|
@Override
|
||||||
public void query(MapTile tile, ITileDataSink mapDataSink) {
|
public void query(MapTile tile, ITileDataSink mapDataSink) {
|
||||||
// 获取tile对应的坐标范围
|
// 获取tile对应的坐标范围
|
||||||
if (tile.zoomLevel>=Constant.OMDB_MIN_ZOOM&&tile.zoomLevel<=Constant.OVER_ZOOM) {
|
if (tile.zoomLevel >= Constant.OMDB_MIN_ZOOM && tile.zoomLevel <= Constant.OVER_ZOOM) {
|
||||||
int m = Constant.OVER_ZOOM-tile.zoomLevel;
|
int m = Constant.OVER_ZOOM - tile.zoomLevel;
|
||||||
int xStart = (int)tile.tileX<<m;
|
int xStart = (int) tile.tileX << m;
|
||||||
int xEnd = (int)((tile.tileX+1)<<m);
|
int xEnd = (int) ((tile.tileX + 1) << m);
|
||||||
int yStart = (int)tile.tileY<<m;
|
int yStart = (int) tile.tileY << m;
|
||||||
int yEnd = (int)((tile.tileY+1)<<m);
|
int yEnd = (int) ((tile.tileY + 1) << m);
|
||||||
|
Log.e("jingo", Constant.TASK_ID + " " + xStart + " " + xEnd + " " + yStart + " " + yEnd);
|
||||||
RealmQuery<ReferenceEntity> realmQuery = Realm.getDefaultInstance().where(ReferenceEntity.class)
|
RealmQuery<ReferenceEntity> realmQuery = Realm.getDefaultInstance().where(ReferenceEntity.class)
|
||||||
.rawPredicate("tileX>="+xStart+" and tileX<="+xEnd+" and tileY>="+yStart+" and tileY<="+yEnd);
|
.rawPredicate("taskId=" + Constant.TASK_ID + " and tileX>=" + xStart + " and tileX<=" + xEnd + " and tileY>=" + yStart + " and tileY<=" + yEnd + " and enable>=1");
|
||||||
// 筛选不显示的数据
|
// 筛选不显示的数据
|
||||||
if (Constant.HAD_LAYER_INVISIABLE_ARRAY!=null&&Constant.HAD_LAYER_INVISIABLE_ARRAY.length>0) {
|
if (Constant.HAD_LAYER_INVISIABLE_ARRAY != null && Constant.HAD_LAYER_INVISIABLE_ARRAY.length > 0) {
|
||||||
realmQuery.beginGroup();
|
realmQuery.beginGroup();
|
||||||
for (String type: Constant.HAD_LAYER_INVISIABLE_ARRAY) {
|
for (String type : Constant.HAD_LAYER_INVISIABLE_ARRAY) {
|
||||||
realmQuery.notEqualTo("table", type);
|
realmQuery.notEqualTo("table", type);
|
||||||
}
|
}
|
||||||
realmQuery.endGroup();
|
realmQuery.endGroup();
|
||||||
}
|
}
|
||||||
List<ReferenceEntity> listResult = realmQuery/*.distinct("id")*/.findAll();
|
List<ReferenceEntity> listResult = realmQuery/*.distinct("id")*/.findAll();
|
||||||
if (!listResult.isEmpty()) {
|
if (!listResult.isEmpty()) {
|
||||||
mThreadLocalDecoders.get().decode(tile.zoomLevel,tile, mapDataSink, listResult);
|
mThreadLocalDecoders.get().decode(tile.zoomLevel, tile, mapDataSink, listResult);
|
||||||
}
|
}
|
||||||
|
Log.e("jingo",listResult.size() + "条数据");
|
||||||
mapDataSink.completed(QueryResult.SUCCESS);
|
mapDataSink.completed(QueryResult.SUCCESS);
|
||||||
// Log.d("RealmDBTileDataSource", "tile:"+tile.getBoundingBox().toString());
|
// Log.d("RealmDBTileDataSource", "tile:"+tile.getBoundingBox().toString());
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ public class OMDBTileDataSource implements ITileDataSource {
|
|||||||
int xEnd = (int) ((tile.tileX + 1) << m);
|
int xEnd = (int) ((tile.tileX + 1) << m);
|
||||||
int yStart = (int) tile.tileY << m;
|
int yStart = (int) tile.tileY << m;
|
||||||
int yEnd = (int) ((tile.tileY + 1) << m);
|
int yEnd = (int) ((tile.tileY + 1) << m);
|
||||||
|
Log.e("jingo", Constant.TASK_ID + " " + xStart + " " + xEnd + " " + yStart + " " + yEnd);
|
||||||
RealmQuery<RenderEntity> realmQuery = Realm.getDefaultInstance().where(RenderEntity.class).rawPredicate("tileX>=" + xStart + " and tileX<=" + xEnd + " and tileY>=" + yStart + " and tileY<=" + yEnd);
|
RealmQuery<RenderEntity> realmQuery = Realm.getDefaultInstance().where(RenderEntity.class).rawPredicate("tileX>=" + xStart + " and tileX<=" + xEnd + " and tileY>=" + yStart + " and tileY<=" + yEnd + " and enable>=1");
|
||||||
// 筛选不显示的数据
|
// 筛选不显示的数据
|
||||||
if (Constant.HAD_LAYER_INVISIABLE_ARRAY != null && Constant.HAD_LAYER_INVISIABLE_ARRAY.length > 0) {
|
if (Constant.HAD_LAYER_INVISIABLE_ARRAY != null && Constant.HAD_LAYER_INVISIABLE_ARRAY.length > 0) {
|
||||||
realmQuery.beginGroup();
|
realmQuery.beginGroup();
|
||||||
@@ -50,9 +50,10 @@ public class OMDBTileDataSource implements ITileDataSource {
|
|||||||
}
|
}
|
||||||
List<RenderEntity> listResult = realmQuery/*.distinct("id")*/.findAll();
|
List<RenderEntity> listResult = realmQuery/*.distinct("id")*/.findAll();
|
||||||
if (!listResult.isEmpty()) {
|
if (!listResult.isEmpty()) {
|
||||||
Log.e("qj","查询数据=="+listResult.size()+"==地图级别"+tile.zoomLevel);
|
Log.e("qj", "查询数据==" + listResult.size() + "==地图级别" + tile.zoomLevel);
|
||||||
mThreadLocalDecoders.get().decode(tile.zoomLevel,tile, mapDataSink, listResult);
|
mThreadLocalDecoders.get().decode(tile.zoomLevel, tile, mapDataSink, listResult);
|
||||||
}
|
}
|
||||||
|
Log.e("jingo",listResult.size() + "条数据 主");
|
||||||
mapDataSink.completed(QueryResult.SUCCESS);
|
mapDataSink.completed(QueryResult.SUCCESS);
|
||||||
// Log.d("RealmDBTileDataSource", "tile:"+tile.getBoundingBox().toString());
|
// Log.d("RealmDBTileDataSource", "tile:"+tile.getBoundingBox().toString());
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class RealmDBTileDataSource implements ITileDataSource {
|
|||||||
int yStart = (int)tile.tileY<<m;
|
int yStart = (int)tile.tileY<<m;
|
||||||
int yEnd = (int)((tile.tileY+1)<<m);
|
int yEnd = (int)((tile.tileY+1)<<m);
|
||||||
|
|
||||||
RealmQuery<GeometryFeatureEntity> realmQuery = Realm.getInstance(RealmUtils.getInstance().getRealmConfiguration()).where(GeometryFeatureEntity.class)
|
RealmQuery<GeometryFeatureEntity> realmQuery = Realm.getDefaultInstance().where(GeometryFeatureEntity.class)
|
||||||
.rawPredicate("tileX>="+xStart+" and tileX<="+xEnd+" and tileY>="+yStart+" and tileY<="+yEnd);
|
.rawPredicate("tileX>="+xStart+" and tileX<="+xEnd+" and tileY>="+yStart+" and tileY<="+yEnd);
|
||||||
// 筛选不显示的数据
|
// 筛选不显示的数据
|
||||||
if (Constant.HAD_LAYER_INVISIABLE_ARRAY!=null&&Constant.HAD_LAYER_INVISIABLE_ARRAY.length>0) {
|
if (Constant.HAD_LAYER_INVISIABLE_ARRAY!=null&&Constant.HAD_LAYER_INVISIABLE_ARRAY.length>0) {
|
||||||
|
|||||||
@@ -17,10 +17,10 @@ public class Constant {
|
|||||||
public static String MAP_PATH = Environment.getExternalStorageDirectory() + "/map/";
|
public static String MAP_PATH = Environment.getExternalStorageDirectory() + "/map/";
|
||||||
|
|
||||||
public static void setVisibleTypeMap(Map<String, Boolean> visibleTypeMap) {
|
public static void setVisibleTypeMap(Map<String, Boolean> visibleTypeMap) {
|
||||||
Map<String, Boolean> HD_LAYER_VISIABLE_MAP= new HashMap<>();
|
Map<String, Boolean> HD_LAYER_VISIABLE_MAP = new HashMap<>();
|
||||||
// 只记录不显示的类型
|
// 只记录不显示的类型
|
||||||
if (visibleTypeMap!=null&&!visibleTypeMap.isEmpty()) {
|
if (visibleTypeMap != null && !visibleTypeMap.isEmpty()) {
|
||||||
for (Map.Entry<String, Boolean> e:visibleTypeMap.entrySet()) {
|
for (Map.Entry<String, Boolean> e : visibleTypeMap.entrySet()) {
|
||||||
if (!e.getValue()) {
|
if (!e.getValue()) {
|
||||||
HD_LAYER_VISIABLE_MAP.put(e.getKey(), e.getValue());
|
HD_LAYER_VISIABLE_MAP.put(e.getKey(), e.getValue());
|
||||||
}
|
}
|
||||||
@@ -28,11 +28,13 @@ public class Constant {
|
|||||||
}
|
}
|
||||||
HAD_LAYER_INVISIABLE_ARRAY = HD_LAYER_VISIABLE_MAP.keySet().toArray(new String[HD_LAYER_VISIABLE_MAP.keySet().size()]);
|
HAD_LAYER_INVISIABLE_ARRAY = HD_LAYER_VISIABLE_MAP.keySet().toArray(new String[HD_LAYER_VISIABLE_MAP.keySet().size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String[] HAD_LAYER_INVISIABLE_ARRAY;
|
public static String[] HAD_LAYER_INVISIABLE_ARRAY;
|
||||||
public static final int OVER_ZOOM = 22;
|
public static final int OVER_ZOOM = 22;
|
||||||
public static final int MAX_ZOOM = 22;
|
public static final int MAX_ZOOM = 22;
|
||||||
public static final int OMDB_MIN_ZOOM = 16;
|
public static final int OMDB_MIN_ZOOM = 16;
|
||||||
|
|
||||||
|
public static int TASK_ID = -1;
|
||||||
/**
|
/**
|
||||||
* 服务器地址
|
* 服务器地址
|
||||||
*/
|
*/
|
||||||
|
|||||||