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

 Conflicts:
	app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt
This commit is contained in:
squallzhjch 2023-05-08 14:33:52 +08:00
commit a13e1f660d
152 changed files with 341 additions and 154 deletions

3
app/.gitignore vendored
View File

@ -1 +1,2 @@
/build
/build
/release

View File

@ -3,7 +3,6 @@ plugins {
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'com.google.dagger.hilt.android'
id 'realm-android'
id 'kotlin-parcelize' //
id 'androidx.navigation.safeargs.kotlin'//Safe Args传递数据
}
@ -74,7 +73,7 @@ android {
dependencies {
implementation project(':collect-library')
api project(':collect-library')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
@ -89,11 +88,6 @@ dependencies {
implementation 'com.google.dagger:hilt-android:2.45'
kapt 'com.google.dagger:hilt-compiler:2.45'
// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
implementation('com.squareup.okhttp3:okhttp:5.0.0-alpha.11')
implementation('com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11')
kapt 'android.arch.persistence.room:compiler:1.1.1'// compiler room
kapt "androidx.room:room-compiler:2.5.1"

View File

@ -11,7 +11,7 @@
"name": "道路种别"
},
{
"table": "OMDB_RD_LINK_DIRECT",
"table": "OMDB_LINK_DIRECT",
"code": 2010,
"name": "道路方向"
},

View File

@ -47,11 +47,6 @@ class Constant {
*/
lateinit var DOWNLOAD_PATH: String
/**
* 服务器地址
*/
const val SERVER_ADDRESS = "http://fastmap.navinfo.com/"
const val DEBUG = true
var IS_VIDEO_SPEED by kotlin.properties.Delegates.notNull<Boolean>()

View File

@ -1,7 +1,6 @@
package com.navinfo.omqs.db
import com.navinfo.collect.library.data.entity.HadLinkDvoBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import io.realm.annotations.RealmModule
@RealmModule(classes = [TaskBean::class])

View File

@ -7,6 +7,7 @@ import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.reflect.TypeToken
import com.navinfo.collect.library.data.dao.impl.TraceDataBase
import com.navinfo.collect.library.system.Constant.SERVER_ADDRESS
import com.navinfo.omqs.Constant
import com.navinfo.omqs.OMQSApplication
import com.navinfo.omqs.db.RoomAppDatabase
@ -82,7 +83,7 @@ class GlobalModule {
converterFactory: GsonConverterFactory,
): Retrofit {
val retrofitBuilder = Retrofit.Builder()
.baseUrl(Constant.SERVER_ADDRESS)
.baseUrl(SERVER_ADDRESS)
.client(client.get())
.addConverterFactory(converterFactory)

View File

@ -1,7 +1,7 @@
package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
/**

View File

@ -1,7 +1,7 @@
package com.navinfo.omqs.http
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import javax.inject.Inject

View File

@ -2,9 +2,8 @@ package com.navinfo.omqs.http
import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Response
import retrofit2.http.*

View File

@ -4,13 +4,10 @@ import android.content.Context
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
import dagger.hilt.android.qualifiers.ActivityContext
import java.util.concurrent.ConcurrentHashMap
import javax.inject.Inject
/**

View File

@ -5,7 +5,7 @@ import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.db.ImportOMDBHelper
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus

View File

@ -3,7 +3,7 @@ package com.navinfo.omqs.http.taskupload
import android.content.Context
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.http.RetrofitNetworkServiceAPI
import java.util.concurrent.ConcurrentHashMap

View File

@ -8,16 +8,10 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.bean.EvaluationInfo
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.tools.FileManager
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
import io.realm.Realm
import kotlinx.coroutines.*
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.util.*
class TaskUploadScope(
@ -67,7 +61,6 @@ class TaskUploadScope(
}
}
/**
* 更新状态
* @param status [OfflineMapCityBean.Status]
@ -76,10 +69,13 @@ class TaskUploadScope(
if (taskBean.syncStatus != status) {
taskBean.syncStatus = status
uploadData.postValue(taskBean)
launch {
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
it.copyToRealmOrUpdate(taskBean)
//同步中不进行状态记录,只做界面变更显示
if(status!=FileUploadStatus.UPLOADING){
launch {
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
it.copyToRealmOrUpdate(taskBean)
}
}
}
}
@ -112,11 +108,17 @@ class TaskUploadScope(
}
val realm = Realm.getDefaultInstance()
val bodyList: MutableList<EvaluationInfo> = ArrayList()
if (taskBean.syncStatus == FileUploadStatus.WAITING){
change(FileUploadStatus.UPLOADING)
}
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
val objects = realm.where(QsRecordBean::class.java)
.equalTo("linkId", /*"84207223282277331"*/hadLinkDvoBean.linkPid).findAll()
if (objects != null) {
if (objects != null&&objects.size>0) {
val copyList = realm.copyFromRealm(objects)
copyList.forEach {
val evaluationInfo = EvaluationInfo(
@ -139,26 +141,26 @@ class TaskUploadScope(
bodyList.add(evaluationInfo)
}
}
}
if (bodyList.size == 0) {
if (taskBean.syncStatus == FileUploadStatus.WAITING)
change(FileUploadStatus.NONE)
return
}
val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object :
if(bodyList.size>0){
val result = uploadManager.netApi.postRequest(bodyList)// .enqueue(object :
// Callback<ResponseBody> {
if (result.isSuccessful) {
if (result.code() == 200) {
// handle the response
change(FileUploadStatus.DONE)
if (result.isSuccessful) {
if (result.code() == 200) {
// taskBean.syncStatus = FileUploadStatus.DONE
// handle the response
change(FileUploadStatus.DONE)
} else {
// handle the failure
change(FileUploadStatus.ERROR)
}
} else {
// handle the failure
change(FileUploadStatus.ERROR)
}
} else {
change(FileUploadStatus.ERROR)
}else{
change(FileUploadStatus.NONE)
}
} catch (e: Throwable) {
change(FileUploadStatus.ERROR)

View File

@ -3,7 +3,7 @@ package com.navinfo.omqs.tools
import android.content.Context
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.OfflineMapCityBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import java.io.File
class FileManager {
@ -27,6 +27,7 @@ class FileManager {
const val DONE = 1 //完成
const val ERROR = 2 //错误
const val WAITING = 3 //等待中
const val UPLOADING = 4 //同步中
}
//初始化数据文件夹

View File

@ -176,7 +176,7 @@ class LoginViewModel @Inject constructor(
.directory(userFolder)
.name("OMQS.realm")
.encryptionKey(password)
.modules(Realm.getDefaultModule(), MyRealmModule())
// .modules(Realm.getDefaultModule(), MyRealmModule())
.schemaVersion(1)
.build()
Realm.setDefaultConfiguration(config)

View File

@ -31,7 +31,7 @@ import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.ui.dialog.CommonDialog
import com.navinfo.omqs.ui.manager.TakePhotoManager

View File

@ -1,18 +1,11 @@
package com.navinfo.omqs.ui.fragment.tasklist
import android.content.Context
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.Observer
import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.omqs.databinding.AdapterQsRecordListBinding
import com.navinfo.omqs.databinding.AdapterTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder

View File

@ -1,25 +1,19 @@
package com.navinfo.omqs.ui.fragment.tasklist
import android.content.Context
import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.Observer
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.databinding.AdapterTaskListBinding
import com.navinfo.omqs.http.taskdownload.TaskDownloadManager
import com.navinfo.omqs.http.taskupload.TaskUploadManager
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.tools.FileManager.Companion.FileDownloadStatus
import com.navinfo.omqs.tools.FileManager.Companion.FileUploadStatus
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
import java.io.File
import java.util.*
import javax.inject.Inject
/**
* 离线地图城市列表 RecyclerView 适配器
@ -130,6 +124,9 @@ class TaskListAdapter(
FileUploadStatus.WAITING -> {
binding.taskUploadBtn.text = "等待同步"
}
FileUploadStatus.UPLOADING -> {
binding.taskUploadBtn.text = "同步中"
}
}
}

View File

@ -10,7 +10,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.Constant
import com.navinfo.omqs.bean.TaskBean
import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.http.NetworkService
import com.navinfo.omqs.tools.FileManager

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/black" />
<solid android:color="@color/white" />
<stroke
android:width="1dp"
android:color="@color/deepskyblue" />
android:color="@color/highFontColor" />
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"

View File

@ -4,7 +4,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cv_gray_153" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/cv_gray_153" />
</shape>
</item>
@ -12,7 +12,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
@ -20,7 +20,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
@ -28,7 +28,7 @@
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cvm_red" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/cvm_red" />
</shape>
</item>
@ -36,7 +36,7 @@
<shape>
<padding android:bottom="@dimen/default_widget_padding" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="@dimen/default_widget_padding"></padding>
<solid android:color="@color/transp" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<corners android:radius="@dimen/default_widget_padding"></corners>
<stroke android:width="1.1dp" android:color="@color/colorPrimary" />
</shape>
</item>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cv_gray_153" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/cv_gray_153" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
<item android:state_checked="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/white" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorSecondary" />
</shape>
</item>
<item android:state_selected="true">
<shape>
<padding android:bottom="2dp" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="2dp"></padding>
<solid android:color="@color/cvm_red" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/cvm_red" />
</shape>
</item>
<item>
<shape>
<padding android:bottom="@dimen/default_widget_padding" android:left="@dimen/default_widget_padding" android:right="@dimen/default_widget_padding" android:top="@dimen/default_widget_padding"></padding>
<solid android:color="@color/transp" />
<corners android:radius="@dimen/default_btn_corner"></corners>
<stroke android:width="1.1dp" android:color="@color/colorPrimary" />
</shape>
</item>
</selector>

View File

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ivory"
android:background="@color/white"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
@ -32,7 +32,7 @@
<TextView
android:id="@+id/offline_map_download_btn"
style="@style/map_download_style_btn"
style="@style/btn_default_stroke_horizontal_round"
android:layout_width="60dp"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"

View File

@ -13,7 +13,7 @@
android:id="@+id/qs_record_index"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/marker"
android:drawableLeft="@mipmap/marker2"
android:maxLength="3"
android:text=""
android:layout_marginRight="@dimen/default_widget_padding"

View File

@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ivory"
android:background="@color/white"
android:paddingLeft="10dp"
android:paddingTop="5dp"
android:paddingRight="10dp"
@ -58,7 +58,7 @@
<TextView
android:id="@+id/task_download_btn"
style="@style/map_download_style_btn"
style="@style/btn_default_stroke_horizontal_round"
android:layout_width="60dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
@ -69,7 +69,7 @@
<TextView
android:id="@+id/task_upload_btn"
style="@style/map_download_style_btn"
style="@style/btn_default_stroke_horizontal_round"
android:layout_width="wrap_content"
android:minWidth="60dp"
android:layout_centerVertical="true"

View File

@ -16,7 +16,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/drawable_bg_blue_frame_black_bg_4_radius"
android:background="@drawable/drawable_bg_blue_frame_white_bg_4_radius"
android:orientation="horizontal"
>
<ImageView

View File

@ -107,6 +107,19 @@
<item name="android:textSize">15sp</item>
</style>
<style name="btn_default_stroke_horizontal_round" comment="左右为圆角的按钮" parent="ThemeOverlay.Material3.AutoCompleteTextView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">center_vertical</item>
<item name="android:paddingHorizontal">@dimen/default_widget_padding</item>
<item name="android:paddingVertical">5dp</item>
<item name="android:background">@drawable/selector_horizontal_round_corner_bg</item>
<item name="android:foreground">@drawable/ripple_btn_press</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:textColor">@color/selector_default_primary_press_secondary</item>
<item name="android:textSize">15sp</item>
</style>
<!-- 默认按钮样式 -->
<style name="btn_default_style" parent="content_font_default">
<item name="android:textColor">@color/btn_select_color</item>

View File

@ -132,4 +132,10 @@ dependencies {
// implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
// // Java8支持库
// implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.6.4'
// Retrofit
api("com.squareup.retrofit2:retrofit:2.9.0")
api("com.squareup.retrofit2:converter-gson:2.9.0")
api('com.squareup.okhttp3:okhttp:5.0.0-alpha.11')
api('com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11')
}

View File

@ -55,7 +55,6 @@
<style-text fill="#000000" id="max-speed-limit" k="name" size="15" stroke="#ffffff"
stroke-width="0.1" />
<!--###### AREA styles ######-->
<!--residential-->
@ -1554,21 +1553,51 @@
</m>
<m k="qi_table">
<!--车道数-->
<m v="OMDB_LANE_NUM">
<m k="laneNum">
<m v="1">
<line stroke="#545D6C" width="3"/>
</m>
<m v="2">
<line stroke="#545D6C" width="6"/>
</m>
<m v="3">
<line stroke="#545D6C" width="9"/>
</m>
<m v="4">
<line stroke="#545D6C" width="12"/>
</m>
<m v="5">
<line stroke="#545D6C" width="15"/>
</m>
<m v="6">
<line stroke="#545D6C" width="18"/>
</m>
<m v="7">
<line stroke="#545D6C" width="21"/>
</m>
<m v="8">
<line stroke="#545D6C" width="24"/>
</m>
<m v="9">
<line stroke="#545D6C" width="27"/>
</m>
<m v="10">
<line stroke="#545D6C" width="30"/>
</m>
<m v="11">
<line stroke="#545D6C" width="33"/>
</m>
<m v="12">
<line stroke="#545D6C" width="36"/>
</m>
</m>
</m>
<!-- 道路线 -->
<m v="OMDB_RD_LINK">
<line stroke="#9c9c9c" width="1"/>
</m>
<!--道路方向-->
<m v="OMDB_RD_LINK_DIRECT">
<m k="direct">
<m v="2">
<lineSymbol src="assets:omdb/oneway_left.svg"></lineSymbol>
</m>
<m v="3">
<lineSymbol src="assets:omdb/oneway_right.svg"></lineSymbol>
</m>
</m>
</m>
<!--道路种别-->
<m v="OMDB_RD_LINK_KIND">
<m k="kind">
@ -1618,20 +1647,164 @@
<m v="OMDB_SPEEDLIMIT">
<m k="speedFlag">
<m v="0">
<circle fill="#ffffff" radius="28" scale-radius="true" stroke="#ff0000" stroke-width="4"/>
<m select="any">
<text k="maxSpeed" use="max-speed-limit"></text>
<caption k="minSpeed" dy="-28" fill="#000000" priority="5" size="14" stroke="#ffffff"
stroke-width="1.0"></caption>
<!-- <circle fill="#ffffff" radius="30" scale-radius="true" stroke="#ff0000" stroke-width="4"/>-->
<!-- <text k="maxSpeed" use="max-speed-limit" priority="0"></text>-->
<m k="maxSpeed">
<m v="5">
<symbol src="assets:omdb/1101/1101_5_0.png"></symbol>
</m>
<m v="10">
<symbol src="assets:omdb/1101/1101_10_0.png"></symbol>
</m>
<m v="15">
<symbol src="assets:omdb/1101/1101_15_0.png"></symbol>
</m>
<m v="20">
<symbol src="assets:omdb/1101/1101_20_0.png"></symbol>
</m>
<m v="25">
<symbol src="assets:omdb/1101/1101_25_0.png"></symbol>
</m>
<m v="30">
<symbol src="assets:omdb/1101/1101_30_0.png"></symbol>
</m>
<m v="35">
<symbol src="assets:omdb/1101/1101_35_0.png"></symbol>
</m>
<m v="40">
<symbol src="assets:omdb/1101/1101_40_0.png"></symbol>
</m>
<m v="45">
<symbol src="assets:omdb/1101/1101_45_0.png"></symbol>
</m>
<m v="50">
<symbol src="assets:omdb/1101/1101_50_0.png"></symbol>
</m>
<m v="55">
<symbol src="assets:omdb/1101/1101_55_0.png"></symbol>
</m>
<m v="60">
<symbol src="assets:omdb/1101/1101_60_0.png"></symbol>
</m>
<m v="65">
<symbol src="assets:omdb/1101/1101_65_0.png"></symbol>
</m>
<m v="70">
<symbol src="assets:omdb/1101/1101_70_0.png"></symbol>
</m>
<m v="75">
<symbol src="assets:omdb/1101/1101_75_0.png"></symbol>
</m>
<m v="80">
<symbol src="assets:omdb/1101/1101_80_0.png"></symbol>
</m>
<m v="85">
<symbol src="assets:omdb/1101/1101_85_0.png"></symbol>
</m>
<m v="90">
<symbol src="assets:omdb/1101/1101_90_0.png"></symbol>
</m>
<m v="95">
<symbol src="assets:omdb/1101/1101_95_0.png"></symbol>
</m>
<m v="100">
<symbol src="assets:omdb/1101/1101_100_0.png"></symbol>
</m>
<m v="105">
<symbol src="assets:omdb/1101/1101_105_0.png"></symbol>
</m>
<m v="110">
<symbol src="assets:omdb/1101/1101_110_0.png"></symbol>
</m>
<m v="115">
<symbol src="assets:omdb/1101/1101_115_0.png"></symbol>
</m>
<m v="120">
<symbol src="assets:omdb/1101/1101_120_0.png"></symbol>
</m>
</m>
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
stroke-width="1.0"></caption>
</m>
<m v="1">
<circle fill="#ffffff" radius="28" scale-radius="true" stroke="#00ff00" stroke-width="4"/>
<m select="any">
<text k="maxSpeed" use="max-speed-limit"></text>
<caption k="minSpeed" dy="-28" fill="#000000" priority="5" size="14" stroke="#ffffff"
stroke-width="1.0"></caption>
<!-- <circle fill="#ffffff" radius="30" scale-radius="true" stroke="#00ff00" stroke-width="4"/>-->
<!-- <text k="maxSpeed" use="max-speed-limit"></text>-->
<m k="maxSpeed">
<m v="5">
<symbol src="assets:omdb/1101/1101_5_1.png"></symbol>
</m>
<m v="10">
<symbol src="assets:omdb/1101/1101_10_1.png"></symbol>
</m>
<m v="15">
<symbol src="assets:omdb/1101/1101_15_1.png"></symbol>
</m>
<m v="20">
<symbol src="assets:omdb/1101/1101_20_1.png"></symbol>
</m>
<m v="25">
<symbol src="assets:omdb/1101/1101_25_1.png"></symbol>
</m>
<m v="30">
<symbol src="assets:omdb/1101/1101_30_1.png"></symbol>
</m>
<m v="35">
<symbol src="assets:omdb/1101/1101_35_1.png"></symbol>
</m>
<m v="40">
<symbol src="assets:omdb/1101/1101_40_1.png"></symbol>
</m>
<m v="45">
<symbol src="assets:omdb/1101/1101_45_1.png"></symbol>
</m>
<m v="50">
<symbol src="assets:omdb/1101/1101_50_1.png"></symbol>
</m>
<m v="55">
<symbol src="assets:omdb/1101/1101_55_1.png"></symbol>
</m>
<m v="60">
<symbol src="assets:omdb/1101/1101_60_1.png"></symbol>
</m>
<m v="65">
<symbol src="assets:omdb/1101/1101_65_1.png"></symbol>
</m>
<m v="70">
<symbol src="assets:omdb/1101/1101_70_1.png"></symbol>
</m>
<m v="75">
<symbol src="assets:omdb/1101/1101_75_1.png"></symbol>
</m>
<m v="80">
<symbol src="assets:omdb/1101/1101_80_1.png"></symbol>
</m>
<m v="85">
<symbol src="assets:omdb/1101/1101_85_1.png"></symbol>
</m>
<m v="90">
<symbol src="assets:omdb/1101/1101_90_1.png"></symbol>
</m>
<m v="95">
<symbol src="assets:omdb/1101/1101_95_1.png"></symbol>
</m>
<m v="100">
<symbol src="assets:omdb/1101/1101_100_1.png"></symbol>
</m>
<m v="105">
<symbol src="assets:omdb/1101/1101_105_1.png"></symbol>
</m>
<m v="110">
<symbol src="assets:omdb/1101/1101_110_1.png"></symbol>
</m>
<m v="115">
<symbol src="assets:omdb/1101/1101_115_1.png"></symbol>
</m>
<m v="120">
<symbol src="assets:omdb/1101/1101_120_1.png"></symbol>
</m>
</m>
<caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"
stroke-width="1.0"></caption>
</m>
</m>
</m>
@ -1641,50 +1814,20 @@
<!--可变点限速-->
<m v="OMDB_SPEEDLIMIT_VAR">
</m>
<!--车道数-->
<m v="OMDB_LANE_NUM">
<m k="laneNum">
<m v="1">
<line stroke="#545D6C" width="3"/>
</m>
<!--车道中心线-->
<m v="OMDB_LANE_LINK_LG">
<line stroke="#ecf0f1" width="0.1" dasharray="35,35"/>
</m>
<!--道路方向-->
<m v="OMDB_LINK_DIRECT">
<m k="direct">
<m v="2">
<line stroke="#545D6C" width="6"/>
<lineSymbol src="assets:omdb/oneway_right.svg"></lineSymbol>
</m>
<m v="3">
<line stroke="#545D6C" width="9"/>
</m>
<m v="4">
<line stroke="#545D6C" width="12"/>
</m>
<m v="5">
<line stroke="#545D6C" width="15"/>
</m>
<m v="6">
<line stroke="#545D6C" width="18"/>
</m>
<m v="7">
<line stroke="#545D6C" width="21"/>
</m>
<m v="8">
<line stroke="#545D6C" width="24"/>
</m>
<m v="9">
<line stroke="#545D6C" width="27"/>
</m>
<m v="10">
<line stroke="#545D6C" width="30"/>
</m>
<m v="11">
<line stroke="#545D6C" width="33"/>
</m>
<m v="12">
<line stroke="#545D6C" width="36"/>
<lineSymbol src="assets:omdb/oneway_left.svg"></lineSymbol>
</m>
</m>
</m>
<!--车道中心线-->
<m v="OMDB_LANE_LG_LINK">
<line stroke="#ecf0f1" width="0.1" dasharray="35,35"/>
</m>
</m>
</rendertheme>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Some files were not shown because too many files have changed in this diff Show More