Merge branch 'master' of gitlab.navinfo.com:CollectVehicle/OneMapQS
@ -19,4 +19,6 @@ data class SignBean(
|
|||||||
val geometry: String,
|
val geometry: String,
|
||||||
//底部文字
|
//底部文字
|
||||||
val bottomText: String,
|
val bottomText: String,
|
||||||
|
//要素code类型
|
||||||
|
val elementCode: Int
|
||||||
) : Parcelable
|
) : Parcelable
|
@ -13,8 +13,6 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.locationtech.jts.geom.*
|
import org.locationtech.jts.geom.*
|
||||||
import org.locationtech.jts.operation.buffer.BufferOp
|
import org.locationtech.jts.operation.buffer.BufferOp
|
||||||
import org.locationtech.spatial4j.context.SpatialContext
|
|
||||||
import org.locationtech.spatial4j.distance.DistanceUtils
|
|
||||||
import org.oscim.core.GeoPoint
|
import org.oscim.core.GeoPoint
|
||||||
import org.oscim.core.MercatorProjection
|
import org.oscim.core.MercatorProjection
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -33,14 +31,18 @@ class RealmOperateHelper() {
|
|||||||
* */
|
* */
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
@RequiresApi(Build.VERSION_CODES.N)
|
||||||
suspend fun queryLink(
|
suspend fun queryLink(
|
||||||
point: Point,
|
point: GeoPoint,
|
||||||
buffer: Double = DEFAULT_BUFFER,
|
buffer: Double = DEFAULT_BUFFER,
|
||||||
bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE,
|
bufferType: BUFFER_TYPE = DEFAULT_BUFFER_TYPE,
|
||||||
sort: Boolean = true
|
sort: Boolean = true
|
||||||
): MutableList<RenderEntity> {
|
): MutableList<RenderEntity> {
|
||||||
val result = mutableListOf<RenderEntity>()
|
val result = mutableListOf<RenderEntity>()
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
val polygon = getPolygonFromPoint(point, buffer, bufferType)
|
val polygon = getPolygonFromPoint(
|
||||||
|
GeometryTools.createPoint(point.longitude, point.latitude),
|
||||||
|
buffer,
|
||||||
|
bufferType
|
||||||
|
)
|
||||||
// 根据polygon查询相交的tile号
|
// 根据polygon查询相交的tile号
|
||||||
val tileXSet = mutableSetOf<Int>()
|
val tileXSet = mutableSetOf<Int>()
|
||||||
tileXSet.toString()
|
tileXSet.toString()
|
||||||
@ -68,7 +70,14 @@ class RealmOperateHelper() {
|
|||||||
|
|
||||||
queryResult?.let {
|
queryResult?.let {
|
||||||
if (sort) {
|
if (sort) {
|
||||||
result.addAll(sortRenderEntity(point, it))
|
result.addAll(
|
||||||
|
sortRenderEntity(
|
||||||
|
GeometryTools.createPoint(
|
||||||
|
point.longitude,
|
||||||
|
point.latitude
|
||||||
|
) , it
|
||||||
|
)
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
result.addAll(it)
|
result.addAll(it)
|
||||||
}
|
}
|
||||||
@ -172,6 +181,7 @@ class RealmOperateHelper() {
|
|||||||
* @param unSortList 未排序的数据
|
* @param unSortList 未排序的数据
|
||||||
* @return 排序后的数据
|
* @return 排序后的数据
|
||||||
* */
|
* */
|
||||||
|
@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)
|
val near = point.distance(renderEntity.wkt) - point.distance(renderEntity2.wkt)
|
||||||
|
@ -33,6 +33,9 @@ interface ScProblemTypeDao {
|
|||||||
@Query("select DISTINCT CLASS_TYPE from ScProblemType order by CLASS_TYPE")
|
@Query("select DISTINCT CLASS_TYPE from ScProblemType order by CLASS_TYPE")
|
||||||
suspend fun findClassTypeList(): List<String>?
|
suspend fun findClassTypeList(): List<String>?
|
||||||
|
|
||||||
|
@Query("select DISTINCT CLASS_TYPE from ScProblemType where ELEMENT_CODE=:code")
|
||||||
|
suspend fun findClassTypeByCode(code: Int): String?
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取问题类型,并去重
|
* 获取问题类型,并去重
|
||||||
*/
|
*/
|
||||||
|
@ -46,8 +46,9 @@ class ActivityModule {
|
|||||||
fun providesTaskListDownloadManager(
|
fun providesTaskListDownloadManager(
|
||||||
networkServiceAPI: RetrofitNetworkServiceAPI,
|
networkServiceAPI: RetrofitNetworkServiceAPI,
|
||||||
importFactory: ImportOMDBHiltFactory,
|
importFactory: ImportOMDBHiltFactory,
|
||||||
|
mapController: NIMapController
|
||||||
): TaskDownloadManager =
|
): TaskDownloadManager =
|
||||||
TaskDownloadManager(importFactory, networkServiceAPI)
|
TaskDownloadManager(importFactory, networkServiceAPI, mapController)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注入任务下载
|
* 注入任务下载
|
||||||
|
@ -67,7 +67,7 @@ class GlobalModule {
|
|||||||
}.apply {
|
}.apply {
|
||||||
level = if (Constant.DEBUG) {
|
level = if (Constant.DEBUG) {
|
||||||
//坑 !!!! 下载文件时打印log 内存不足
|
//坑 !!!! 下载文件时打印log 内存不足
|
||||||
HttpLoggingInterceptor.Level.BODY
|
HttpLoggingInterceptor.Level.BASIC
|
||||||
} else {
|
} else {
|
||||||
HttpLoggingInterceptor.Level.NONE
|
HttpLoggingInterceptor.Level.NONE
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.navinfo.omqs.http.taskdownload
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
|
import com.navinfo.collect.library.map.NIMapController
|
||||||
import com.navinfo.omqs.bean.TaskBean
|
import com.navinfo.omqs.bean.TaskBean
|
||||||
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
|
import com.navinfo.omqs.hilt.ImportOMDBHiltFactory
|
||||||
import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory
|
import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory
|
||||||
@ -19,6 +20,7 @@ import javax.inject.Inject
|
|||||||
class TaskDownloadManager constructor(
|
class TaskDownloadManager constructor(
|
||||||
val importFactory: ImportOMDBHiltFactory,
|
val importFactory: ImportOMDBHiltFactory,
|
||||||
val netApi: RetrofitNetworkServiceAPI,
|
val netApi: RetrofitNetworkServiceAPI,
|
||||||
|
val mapController:NIMapController
|
||||||
) {
|
) {
|
||||||
|
|
||||||
lateinit var context: Context
|
lateinit var context: Context
|
||||||
|
@ -131,6 +131,9 @@ class TaskDownloadScope(
|
|||||||
Log.e("jingo", "数据安装 $it")
|
Log.e("jingo", "数据安装 $it")
|
||||||
if (it == "finish") {
|
if (it == "finish") {
|
||||||
change(FileDownloadStatus.DONE)
|
change(FileDownloadStatus.DONE)
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
downloadManager.mapController.mMapView.updateMap(true)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
change(FileDownloadStatus.IMPORTING, it)
|
change(FileDownloadStatus.IMPORTING, it)
|
||||||
}
|
}
|
||||||
@ -138,6 +141,8 @@ class TaskDownloadScope(
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("jingo", "数据安装失败 ${e.toString()}")
|
Log.e("jingo", "数据安装失败 ${e.toString()}")
|
||||||
change(FileDownloadStatus.ERROR)
|
change(FileDownloadStatus.ERROR)
|
||||||
|
}finally {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.e("jingo", "importData EEE")
|
Log.e("jingo", "importData EEE")
|
||||||
|
@ -115,15 +115,16 @@ class TaskUploadScope(
|
|||||||
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
|
taskBean.hadLinkDvoList.forEach { hadLinkDvoBean ->
|
||||||
val objects = realm.where(QsRecordBean::class.java)
|
val objects = realm.where(QsRecordBean::class.java)
|
||||||
.equalTo("linkId", /*"84207223282277331"*/hadLinkDvoBean.linkPid).findAll()
|
.equalTo("linkId", /*"84207223282277331"*/hadLinkDvoBean.linkPid).findAll()
|
||||||
if(objects.size == 0){
|
if (objects.size == 0) {
|
||||||
// change(FileUploadStatus.NONE)
|
if (taskBean.syncStatus == FileUploadStatus.WAITING)
|
||||||
|
change(FileUploadStatus.NONE)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val bodyList: MutableList<EvaluationInfo> = ArrayList()
|
val bodyList: MutableList<EvaluationInfo> = ArrayList()
|
||||||
|
|
||||||
if (objects != null) {
|
if (objects != null) {
|
||||||
val copyList =realm.copyFromRealm(objects)
|
val copyList = realm.copyFromRealm(objects)
|
||||||
copyList.forEach {
|
copyList.forEach {
|
||||||
val evaluationInfo = EvaluationInfo(
|
val evaluationInfo = EvaluationInfo(
|
||||||
taskBean.id.toString(),
|
taskBean.id.toString(),
|
||||||
|
@ -116,7 +116,7 @@ class LoginViewModel @Inject constructor(
|
|||||||
//文件夹初始化
|
//文件夹初始化
|
||||||
try {
|
try {
|
||||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_INIT)
|
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_INIT)
|
||||||
createUserFolder(context, "1")
|
createUserFolder(context, "02911")
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE)
|
loginStatus.postValue(LoginStatus.LOGIN_STATUS_FOLDER_FAILURE)
|
||||||
}
|
}
|
||||||
|
@ -114,9 +114,9 @@ class MainActivity : BaseActivity() {
|
|||||||
|
|
||||||
viewModel.liveDataMenuState.observe(this) {
|
viewModel.liveDataMenuState.observe(this) {
|
||||||
binding.mainActivityMenu.isSelected = it
|
binding.mainActivityMenu.isSelected = it
|
||||||
if(it==true){
|
if (it == true) {
|
||||||
binding.mainActivityMenuLayout.visibility = View.VISIBLE
|
binding.mainActivityMenuLayout.visibility = View.VISIBLE
|
||||||
}else{
|
} else {
|
||||||
binding.mainActivityMenuLayout.visibility = View.GONE
|
binding.mainActivityMenuLayout.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +138,10 @@ class MainActivity : BaseActivity() {
|
|||||||
|
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
// 初始化地图图层控制接收器
|
// 初始化地图图层控制接收器
|
||||||
FlowEventBus.subscribe<List<ImportConfig>>(lifecycle, Constant.EVENT_LAYER_MANAGER_CHANGE) {
|
FlowEventBus.subscribe<List<ImportConfig>>(
|
||||||
|
lifecycle,
|
||||||
|
Constant.EVENT_LAYER_MANAGER_CHANGE
|
||||||
|
) {
|
||||||
viewModel.refreshOMDBLayer(it)
|
viewModel.refreshOMDBLayer(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -227,8 +230,16 @@ class MainActivity : BaseActivity() {
|
|||||||
* 点击录音按钮
|
* 点击录音按钮
|
||||||
*/
|
*/
|
||||||
fun voiceOnclick() {
|
fun voiceOnclick() {
|
||||||
/* val naviController = findNavController(R.id.main_activity_right_fragment)
|
val naviController = findNavController(R.id.main_activity_right_fragment)
|
||||||
naviController.navigate(R.id.EvaluationResultFragment)*/
|
naviController.navigate(R.id.EvaluationResultFragment)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点击线选择
|
||||||
|
*/
|
||||||
|
fun selectLineOnclick() {
|
||||||
|
viewModel.setSelectRoad(!viewModel.isSelectRoad())
|
||||||
|
binding.mainActivitySelectLine.isSelected = viewModel.isSelectRoad()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun voiceOnTouchStart() {
|
fun voiceOnTouchStart() {
|
||||||
|
@ -37,14 +37,12 @@ import com.navinfo.omqs.ui.dialog.CommonDialog
|
|||||||
import com.navinfo.omqs.ui.manager.TakePhotoManager
|
import com.navinfo.omqs.ui.manager.TakePhotoManager
|
||||||
import com.navinfo.omqs.ui.widget.SignUtil
|
import com.navinfo.omqs.ui.widget.SignUtil
|
||||||
import com.navinfo.omqs.util.DateTimeUtil
|
import com.navinfo.omqs.util.DateTimeUtil
|
||||||
import com.navinfo.omqs.util.FlowEventBus
|
|
||||||
import com.navinfo.omqs.util.SoundMeter
|
import com.navinfo.omqs.util.SoundMeter
|
||||||
import com.navinfo.omqs.util.SpeakMode
|
import com.navinfo.omqs.util.SpeakMode
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
import io.realm.RealmSet
|
import io.realm.RealmSet
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.collect
|
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.oscim.core.GeoPoint
|
import org.oscim.core.GeoPoint
|
||||||
@ -72,7 +70,7 @@ class MainViewModel @Inject constructor(
|
|||||||
//看板数据
|
//看板数据
|
||||||
val liveDataSignList = MutableLiveData<List<SignBean>>()
|
val liveDataSignList = MutableLiveData<List<SignBean>>()
|
||||||
|
|
||||||
var testPoint = GeoPoint(0, 0)
|
// var testPoint = GeoPoint(0, 0)
|
||||||
|
|
||||||
//语音窗体
|
//语音窗体
|
||||||
private var pop: PopupWindow? = null
|
private var pop: PopupWindow? = null
|
||||||
@ -83,10 +81,15 @@ class MainViewModel @Inject constructor(
|
|||||||
var volume: ImageView? = null
|
var volume: ImageView? = null
|
||||||
var mSoundMeter: SoundMeter? = null
|
var mSoundMeter: SoundMeter? = null
|
||||||
|
|
||||||
var menuState :Boolean = false
|
var menuState: Boolean = false
|
||||||
|
|
||||||
val liveDataMenuState = MutableLiveData<Boolean>()
|
val liveDataMenuState = MutableLiveData<Boolean>()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是不是线选择模式
|
||||||
|
*/
|
||||||
|
private var bSelectRoad = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
mapController.markerHandle.setOnQsRecordItemClickListener(object :
|
mapController.markerHandle.setOnQsRecordItemClickListener(object :
|
||||||
OnQsRecordItemClickListener {
|
OnQsRecordItemClickListener {
|
||||||
@ -97,7 +100,10 @@ class MainViewModel @Inject constructor(
|
|||||||
initLocation()
|
initLocation()
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
mapController.onMapClickFlow.collectLatest {
|
mapController.onMapClickFlow.collectLatest {
|
||||||
testPoint = it
|
// testPoint = it
|
||||||
|
if (bSelectRoad) {
|
||||||
|
captureLink(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,8 +146,8 @@ class MainViewModel @Inject constructor(
|
|||||||
//用于定位点存储到数据库
|
//用于定位点存储到数据库
|
||||||
viewModelScope.launch(Dispatchers.Default) {
|
viewModelScope.launch(Dispatchers.Default) {
|
||||||
mapController.locationLayerHandler.niLocationFlow.collect { location ->
|
mapController.locationLayerHandler.niLocationFlow.collect { location ->
|
||||||
location.longitude = testPoint.longitude
|
// location.longitude = testPoint.longitude
|
||||||
location.latitude = testPoint.latitude
|
// location.latitude = testPoint.latitude
|
||||||
val geometry = GeometryTools.createGeometry(
|
val geometry = GeometryTools.createGeometry(
|
||||||
GeoPoint(
|
GeoPoint(
|
||||||
location.latitude,
|
location.latitude,
|
||||||
@ -168,15 +174,25 @@ class MainViewModel @Inject constructor(
|
|||||||
//用于定位点捕捉道路
|
//用于定位点捕捉道路
|
||||||
viewModelScope.launch(Dispatchers.Default) {
|
viewModelScope.launch(Dispatchers.Default) {
|
||||||
mapController.locationLayerHandler.niLocationFlow.collectLatest { location ->
|
mapController.locationLayerHandler.niLocationFlow.collectLatest { location ->
|
||||||
Log.e("jingo", "定位点绑定道路 ${Thread.currentThread().name}")
|
// location.longitude = testPoint.longitude
|
||||||
location.longitude = testPoint.longitude
|
// location.latitude = testPoint.latitude
|
||||||
location.latitude = testPoint.latitude
|
if (!isSelectRoad())
|
||||||
|
captureLink(GeoPoint(location.latitude, location.longitude))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//显示轨迹图层
|
||||||
|
mapController.layerManagerHandler.showNiLocationLayer()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 捕获道路和面板
|
||||||
|
*/
|
||||||
|
private suspend fun captureLink(point: GeoPoint) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
val linkList = realmOperateHelper.queryLink(
|
val linkList = realmOperateHelper.queryLink(
|
||||||
point = GeometryTools.createPoint(
|
point = point,
|
||||||
location.longitude,
|
|
||||||
location.latitude
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
//看板数据
|
//看板数据
|
||||||
val signList = mutableListOf<SignBean>()
|
val signList = mutableListOf<SignBean>()
|
||||||
@ -188,9 +204,7 @@ class MainViewModel @Inject constructor(
|
|||||||
var elementList = realmOperateHelper.queryLinkByLinkPid(it)
|
var elementList = realmOperateHelper.queryLinkByLinkPid(it)
|
||||||
for (element in elementList) {
|
for (element in elementList) {
|
||||||
val distance = GeometryTools.distanceToDouble(
|
val distance = GeometryTools.distanceToDouble(
|
||||||
GeoPoint(
|
point,
|
||||||
location.latitude, location.longitude,
|
|
||||||
),
|
|
||||||
GeometryTools.createGeoPoint(element.geometry)
|
GeometryTools.createGeoPoint(element.geometry)
|
||||||
)
|
)
|
||||||
signList.add(
|
signList.add(
|
||||||
@ -201,22 +215,18 @@ class MainViewModel @Inject constructor(
|
|||||||
elementId = element.id,
|
elementId = element.id,
|
||||||
linkId = linkId,
|
linkId = linkId,
|
||||||
geometry = element.geometry,
|
geometry = element.geometry,
|
||||||
bottomText = SignUtil.getSignBottomText(element)
|
bottomText = SignUtil.getSignBottomText(element),
|
||||||
|
elementCode = element.code
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
liveDataSignList.postValue(signList)
|
liveDataSignList.postValue(signList)
|
||||||
Log.e("jingo", "自动捕捉数据 共${elementList.size}条")
|
Log.e("jingo", "自动捕捉数据 共${signList.size}条")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//显示轨迹图层
|
|
||||||
mapController.layerManagerHandler.showNiLocationLayer()
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 点击我的位置,回到我的位置
|
* 点击我的位置,回到我的位置
|
||||||
@ -360,15 +370,16 @@ class MainViewModel @Inject constructor(
|
|||||||
* */
|
* */
|
||||||
fun refreshOMDBLayer(layerConfigList: List<ImportConfig>) {
|
fun refreshOMDBLayer(layerConfigList: List<ImportConfig>) {
|
||||||
// 根据获取到的配置信息,筛选未勾选的图层名称
|
// 根据获取到的配置信息,筛选未勾选的图层名称
|
||||||
if (layerConfigList!=null && !layerConfigList.isEmpty()) {
|
if (layerConfigList != null && !layerConfigList.isEmpty()) {
|
||||||
val omdbVisibleList = layerConfigList.filter { importConfig->
|
val omdbVisibleList = layerConfigList.filter { importConfig ->
|
||||||
importConfig.tableGroupName == "OMDB数据"
|
importConfig.tableGroupName == "OMDB数据"
|
||||||
}.first().tables.filter { tableInfo ->
|
}.first().tables.filter { tableInfo ->
|
||||||
!tableInfo.checked
|
!tableInfo.checked
|
||||||
}.map {
|
}.map { tableInfo ->
|
||||||
tableInfo -> tableInfo.table
|
tableInfo.table
|
||||||
}.toList()
|
}.toList()
|
||||||
com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY = omdbVisibleList.toTypedArray()
|
com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY =
|
||||||
|
omdbVisibleList.toTypedArray()
|
||||||
// 刷新地图
|
// 刷新地图
|
||||||
mapController.mMapView.vtmMap.clearMap()
|
mapController.mMapView.vtmMap.clearMap()
|
||||||
}
|
}
|
||||||
@ -409,4 +420,20 @@ class MainViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开启线选择
|
||||||
|
*/
|
||||||
|
fun setSelectRoad(select: Boolean) {
|
||||||
|
bSelectRoad = select
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
|
mapController.lineHandler.removeLine()
|
||||||
|
liveDataSignList.value = mutableListOf()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isSelectRoad(): Boolean {
|
||||||
|
return bSelectRoad
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -25,6 +25,7 @@ class SignAdapter(private var itemListener: ((Int, SignBean) -> Unit?)? = null)
|
|||||||
val item = data[position]
|
val item = data[position]
|
||||||
bd.signMainIcon.background = holder.viewBinding.root.context.getDrawable(item.iconId)
|
bd.signMainIcon.background = holder.viewBinding.root.context.getDrawable(item.iconId)
|
||||||
bd.signMainIcon.text = item.iconText
|
bd.signMainIcon.text = item.iconText
|
||||||
|
bd.signBottomText.text = item.bottomText
|
||||||
bd.root.setOnClickListener {
|
bd.root.setOnClickListener {
|
||||||
itemListener?.invoke(position, item)
|
itemListener?.invoke(position, item)
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,7 @@ import android.app.Activity
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.AnimationDrawable
|
import android.graphics.drawable.AnimationDrawable
|
||||||
import android.graphics.drawable.BitmapDrawable
|
import android.graphics.drawable.BitmapDrawable
|
||||||
import android.net.Uri
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
@ -15,11 +13,9 @@ import android.view.ViewGroup
|
|||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.PopupWindow
|
import android.widget.PopupWindow
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.core.util.rangeTo
|
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import androidx.navigation.findNavController
|
|
||||||
import com.blankj.utilcode.util.ToastUtils
|
import com.blankj.utilcode.util.ToastUtils
|
||||||
import com.navinfo.collect.library.data.entity.AttachmentBean
|
import com.navinfo.collect.library.data.entity.AttachmentBean
|
||||||
import com.navinfo.collect.library.data.entity.QsRecordBean
|
import com.navinfo.collect.library.data.entity.QsRecordBean
|
||||||
@ -121,16 +117,16 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
* 查询数据库,获取问题分类
|
* 查询数据库,获取问题分类
|
||||||
*/
|
*/
|
||||||
fun initNewData(bean: SignBean?, filePath: String) {
|
fun initNewData(bean: SignBean?, filePath: String) {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
//获取当前定位点
|
||||||
getClassTypeList()
|
|
||||||
getProblemLinkList()
|
|
||||||
}
|
|
||||||
val geoPoint = mapController.locationLayerHandler.getCurrentGeoPoint()
|
val geoPoint = mapController.locationLayerHandler.getCurrentGeoPoint()
|
||||||
|
//如果不是从面板进来的
|
||||||
if (bean == null) {
|
if (bean == null) {
|
||||||
geoPoint?.let {
|
geoPoint?.let {
|
||||||
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(it).toText()
|
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(it).toText()
|
||||||
mapController.markerHandle.addMarker(geoPoint, markerTitle)
|
mapController.markerHandle.addMarker(geoPoint, markerTitle)
|
||||||
mapController.animationHandler.animationByLonLat(geoPoint.latitude,geoPoint.longitude)
|
mapController.animationHandler.animationByLonLat(
|
||||||
|
geoPoint.latitude, geoPoint.longitude
|
||||||
|
)
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
captureLink(geoPoint.longitude, geoPoint.latitude)
|
captureLink(geoPoint.longitude, geoPoint.latitude)
|
||||||
}
|
}
|
||||||
@ -149,13 +145,17 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
val point = GeometryTools.createGeoPoint(bean.geometry)
|
val point = GeometryTools.createGeoPoint(bean.geometry)
|
||||||
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(point).toText()
|
this.geometry = GeometryTools.createGeometry(point).toText()
|
||||||
mapController.animationHandler.animationByLonLat(point.latitude,point.longitude)
|
mapController.animationHandler.animationByLonLat(point.latitude, point.longitude)
|
||||||
mapController.markerHandle.addMarker(point, markerTitle)
|
mapController.markerHandle.addMarker(point, markerTitle)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
//查询元数据
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
getClassTypeList(bean)
|
||||||
|
getProblemLinkList()
|
||||||
|
}
|
||||||
addChatMsgEntity(filePath)
|
addChatMsgEntity(filePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,16 +165,12 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
private suspend fun captureLink(longitude: Double, latitude: Double) {
|
private suspend fun captureLink(longitude: Double, latitude: Double) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
val linkList = realmOperateHelper.queryLink(
|
val linkList = realmOperateHelper.queryLink(
|
||||||
point = GeometryTools.createPoint(
|
point = GeoPoint(latitude, longitude),
|
||||||
longitude,
|
|
||||||
latitude
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
liveDataQsRecordBean.value?.let {
|
liveDataQsRecordBean.value?.let {
|
||||||
if (linkList.isNotEmpty()) {
|
if (linkList.isNotEmpty()) {
|
||||||
it.linkId =
|
it.linkId = linkList[0].properties[LinkTable.linkPid] ?: ""
|
||||||
linkList[0].properties[LinkTable.linkPid] ?: ""
|
|
||||||
mapController.lineHandler.showLine(linkList[0].geometry)
|
mapController.lineHandler.showLine(linkList[0].geometry)
|
||||||
Log.e("jingo", "捕捉到的linkId = ${it.linkId}")
|
Log.e("jingo", "捕捉到的linkId = ${it.linkId}")
|
||||||
} else {
|
} else {
|
||||||
@ -188,18 +184,23 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
/**
|
/**
|
||||||
* //获取问题分类列表
|
* //获取问题分类列表
|
||||||
*/
|
*/
|
||||||
fun getClassTypeList() {
|
fun getClassTypeList(bean: SignBean? = null) {
|
||||||
Log.e("jingo", "getClassTypeList S")
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val list = roomAppDatabase.getScProblemTypeDao().findClassTypeList()
|
val list = roomAppDatabase.getScProblemTypeDao().findClassTypeList()
|
||||||
list?.let {
|
list?.let {
|
||||||
if (list.isNotEmpty()) {
|
if (list.isNotEmpty()) {
|
||||||
//通知页面更新
|
//通知页面更新
|
||||||
liveDataLeftTypeList.postValue(it)
|
liveDataLeftTypeList.postValue(it)
|
||||||
val classType = it[0]
|
var classType = it[0]
|
||||||
|
if (bean != null) {
|
||||||
|
val classType2 = roomAppDatabase.getScProblemTypeDao()
|
||||||
|
.findClassTypeByCode(bean.elementCode)
|
||||||
|
if (classType2 != null)
|
||||||
|
classType = classType2
|
||||||
|
}
|
||||||
//如果右侧栏没数据,给个默认值
|
//如果右侧栏没数据,给个默认值
|
||||||
if (liveDataQsRecordBean.value!!.classType.isEmpty()) {
|
if (liveDataQsRecordBean.value!!.classType.isEmpty()) {
|
||||||
Log.e("jingo", "getClassTypeList $classType")
|
|
||||||
liveDataQsRecordBean.value!!.classType = classType
|
liveDataQsRecordBean.value!!.classType = classType
|
||||||
classTypeTemp = classType
|
classTypeTemp = classType
|
||||||
}
|
}
|
||||||
@ -207,7 +208,6 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log.e("jingo", "getClassTypeList E")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -313,6 +313,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
fun saveData() {
|
fun saveData() {
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = Realm.getDefaultInstance()
|
||||||
|
liveDataQsRecordBean.value!!.checkTime = DateTimeUtil.getDataTime()
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
it.copyToRealmOrUpdate(liveDataQsRecordBean.value)
|
it.copyToRealmOrUpdate(liveDataQsRecordBean.value)
|
||||||
}
|
}
|
||||||
@ -328,8 +329,9 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
val realm = Realm.getDefaultInstance()
|
val realm = Realm.getDefaultInstance()
|
||||||
Log.e("jingo", "realm hashCOde ${realm.hashCode()}")
|
Log.e("jingo", "realm hashCOde ${realm.hashCode()}")
|
||||||
realm.executeTransaction {
|
realm.executeTransaction {
|
||||||
val objects = it.where(QsRecordBean::class.java)
|
val objects =
|
||||||
.equalTo("id", liveDataQsRecordBean.value?.id).findFirst()
|
it.where(QsRecordBean::class.java).equalTo("id", liveDataQsRecordBean.value?.id)
|
||||||
|
.findFirst()
|
||||||
objects?.deleteFromRealm()
|
objects?.deleteFromRealm()
|
||||||
}
|
}
|
||||||
// realm.close()
|
// realm.close()
|
||||||
@ -355,8 +357,7 @@ class EvaluationResultViewModel @Inject constructor(
|
|||||||
liveDataQsRecordBean.postValue(it.copy())
|
liveDataQsRecordBean.postValue(it.copy())
|
||||||
val p = GeometryTools.createGeoPoint(it.geometry)
|
val p = GeometryTools.createGeoPoint(it.geometry)
|
||||||
mapController.markerHandle.addMarker(
|
mapController.markerHandle.addMarker(
|
||||||
GeoPoint(p.latitude, p.longitude),
|
GeoPoint(p.latitude, p.longitude), markerTitle
|
||||||
markerTitle
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (it.linkId.isNotEmpty()) {
|
if (it.linkId.isNotEmpty()) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.navinfo.omqs.ui.fragment.evaluationresult
|
package com.navinfo.omqs.ui.fragment.evaluationresult
|
||||||
|
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@ -62,11 +63,13 @@ class PhenomenonFragment :
|
|||||||
}
|
}
|
||||||
binding.phenomenonRightRecyclerview.adapter = rightAdapter
|
binding.phenomenonRightRecyclerview.adapter = rightAdapter
|
||||||
//右侧菜单增加组标题
|
//右侧菜单增加组标题
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
binding.phenomenonRightRecyclerview.addItemDecoration(
|
binding.phenomenonRightRecyclerview.addItemDecoration(
|
||||||
RightGroupHeaderDecoration(
|
RightGroupHeaderDecoration(
|
||||||
requireContext()
|
requireContext()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
}
|
||||||
//右侧菜单查询数据监听
|
//右侧菜单查询数据监听
|
||||||
viewModel.liveDataRightTypeList.observe(viewLifecycleOwner) {
|
viewModel.liveDataRightTypeList.observe(viewLifecycleOwner) {
|
||||||
rightAdapter.refreshData(it)
|
rightAdapter.refreshData(it)
|
||||||
|
@ -51,14 +51,18 @@ class QsRecordListAdapter(
|
|||||||
holder.itemView.setOnClickListener {
|
holder.itemView.setOnClickListener {
|
||||||
itemClickListener!!.onItemClickListener(position)
|
itemClickListener!!.onItemClickListener(position)
|
||||||
}
|
}
|
||||||
changeViews(binding, qsRecordBean)
|
changeViews(position, binding, qsRecordBean)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun changeViews(binding: AdapterQsRecordListBinding, qsRecordBean: QsRecordBean) {
|
private fun changeViews(position: Int,binding: AdapterQsRecordListBinding, qsRecordBean: QsRecordBean) {
|
||||||
|
if(position<99)
|
||||||
|
binding.qsRecordIndex.text = (position+1).toString()
|
||||||
|
else
|
||||||
|
binding.qsRecordIndex.text = "99."
|
||||||
binding.qsRecordClassType.text = qsRecordBean.classType
|
binding.qsRecordClassType.text = qsRecordBean.classType
|
||||||
binding.qsRecordProblemType.text = qsRecordBean.problemType
|
binding.qsRecordProblemType.text = qsRecordBean.problemType
|
||||||
binding.qsRecordPhenomenon.text = qsRecordBean.phenomenon
|
binding.qsRecordPhenomenon.text = qsRecordBean.phenomenon
|
||||||
binding.qsRecordProblemLink.text = qsRecordBean.problemLink
|
binding.qsRecordTime.text = qsRecordBean.checkTime
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemViewRes(position: Int): Int {
|
override fun getItemViewRes(position: Int): Int {
|
||||||
|
@ -44,6 +44,7 @@ class QsRecordListFragment : BaseFragment(){
|
|||||||
binding.qsRecyclerview.adapter = adapter
|
binding.qsRecyclerview.adapter = adapter
|
||||||
viewModel.liveDataQSList.observe(viewLifecycleOwner) {
|
viewModel.liveDataQSList.observe(viewLifecycleOwner) {
|
||||||
adapter.refreshData(it)
|
adapter.refreshData(it)
|
||||||
|
binding.tvTitleCount.text = "共"+adapter.data.size+"条"
|
||||||
}
|
}
|
||||||
val itemDecoration = DividerItemDecoration(context, DividerItemDecoration.VERTICAL)
|
val itemDecoration = DividerItemDecoration(context, DividerItemDecoration.VERTICAL)
|
||||||
itemDecoration.setDrawable(resources.getDrawable(R.drawable.separator))
|
itemDecoration.setDrawable(resources.getDrawable(R.drawable.separator))
|
||||||
@ -57,7 +58,7 @@ class QsRecordListFragment : BaseFragment(){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
binding.recordBack.setOnClickListener{
|
binding.imgBack.setOnClickListener{
|
||||||
findNavController().navigateUp()
|
findNavController().navigateUp()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,12 +2,14 @@ package com.navinfo.omqs.ui.fragment.tasklist
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
|
import android.os.Build
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.widget.Toast
|
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
|
||||||
import com.navinfo.collect.library.map.NIMapController
|
import com.navinfo.collect.library.map.NIMapController
|
||||||
|
import com.navinfo.omqs.Constant
|
||||||
import com.navinfo.omqs.bean.TaskBean
|
import com.navinfo.omqs.bean.TaskBean
|
||||||
import com.navinfo.omqs.http.NetResult
|
import com.navinfo.omqs.http.NetResult
|
||||||
import com.navinfo.omqs.http.NetworkService
|
import com.navinfo.omqs.http.NetworkService
|
||||||
@ -23,7 +25,7 @@ import javax.inject.Inject
|
|||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class TaskListViewModel @Inject constructor(
|
class TaskListViewModel @Inject constructor(
|
||||||
private val networkService: NetworkService,
|
private val networkService: NetworkService,
|
||||||
private val niMapController: NIMapController
|
private val mapController: NIMapController
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
val liveDataTaskList = MutableLiveData<List<TaskBean>>()
|
val liveDataTaskList = MutableLiveData<List<TaskBean>>()
|
||||||
@ -35,7 +37,7 @@ class TaskListViewModel @Inject constructor(
|
|||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
|
||||||
var taskList: List<TaskBean> = mutableListOf()
|
var taskList: List<TaskBean> = mutableListOf()
|
||||||
when (val result = networkService.getTaskList("02911")) {
|
when (val result = networkService.getTaskList(Constant.USER_ID)) {
|
||||||
is NetResult.Success -> {
|
is NetResult.Success -> {
|
||||||
if (result.data != null) {
|
if (result.data != null) {
|
||||||
val realm = Realm.getDefaultInstance()
|
val realm = Realm.getDefaultInstance()
|
||||||
@ -66,6 +68,7 @@ class TaskListViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
val objects = realm.where(TaskBean::class.java).findAll()
|
val objects = realm.where(TaskBean::class.java).findAll()
|
||||||
taskList = realm.copyFromRealm(objects)
|
taskList = realm.copyFromRealm(objects)
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,6 +98,14 @@ class TaskListViewModel @Inject constructor(
|
|||||||
// }
|
// }
|
||||||
// niMapController.lineHandler.omdbTaskLinkLayer.update()
|
// niMapController.lineHandler.omdbTaskLinkLayer.update()
|
||||||
liveDataTaskList.postValue(taskList)
|
liveDataTaskList.postValue(taskList)
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
mapController.lineHandler.omdbTaskLinkLayer.removeAll()
|
||||||
|
for (item in taskList) {
|
||||||
|
mapController.lineHandler.omdbTaskLinkLayer.setLineColor(Color.valueOf(item.color))
|
||||||
|
mapController.lineHandler.omdbTaskLinkLayer.addLineList(item.hadLinkDvoList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<vector android:height="24dp" android:tint="#18FD00"
|
<vector android:height="24dp" android:tint="@color/icon_blue"
|
||||||
android:viewportHeight="24" android:viewportWidth="24"
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<path android:fillColor="@android:color/white" android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
|
<path android:fillColor="@android:color/white" android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
|
||||||
|
5
app/src/main/res/drawable-v24/baseline_timeline_24.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="#3756DF"
|
||||||
|
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="M23,8c0,1.1 -0.9,2 -2,2c-0.18,0 -0.35,-0.02 -0.51,-0.07l-3.56,3.55C16.98,13.64 17,13.82 17,14c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2c0,-0.18 0.02,-0.36 0.07,-0.52l-2.55,-2.55C10.36,10.98 10.18,11 10,11s-0.36,-0.02 -0.52,-0.07l-4.55,4.56C4.98,15.65 5,15.82 5,16c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2s0.9,-2 2,-2c0.18,0 0.35,0.02 0.51,0.07l4.56,-4.55C8.02,9.36 8,9.18 8,9c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,0.18 -0.02,0.36 -0.07,0.52l2.55,2.55C14.64,12.02 14.82,12 15,12s0.36,0.02 0.52,0.07l3.55,-3.56C19.02,8.35 19,8.18 19,8c0,-1.1 0.9,-2 2,-2S23,6.9 23,8z"/>
|
||||||
|
</vector>
|
@ -0,0 +1,5 @@
|
|||||||
|
<vector android:height="24dp" android:tint="@color/white"
|
||||||
|
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="M23,8c0,1.1 -0.9,2 -2,2c-0.18,0 -0.35,-0.02 -0.51,-0.07l-3.56,3.55C16.98,13.64 17,13.82 17,14c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2c0,-0.18 0.02,-0.36 0.07,-0.52l-2.55,-2.55C10.36,10.98 10.18,11 10,11s-0.36,-0.02 -0.52,-0.07l-4.55,4.56C4.98,15.65 5,15.82 5,16c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2s0.9,-2 2,-2c0.18,0 0.35,0.02 0.51,0.07l4.56,-4.55C8.02,9.36 8,9.18 8,9c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,0.18 -0.02,0.36 -0.07,0.52l2.55,2.55C14.64,12.02 14.82,12 15,12s0.36,0.02 0.52,0.07l3.55,-3.56C19.02,8.35 19,8.18 19,8c0,-1.1 0.9,-2 2,-2S23,6.9 23,8z"/>
|
||||||
|
</vector>
|
BIN
app/src/main/res/drawable-xhdpi/icon_filter.png
Normal file
After Width: | Height: | Size: 643 B |
BIN
app/src/main/res/drawable-xhdpi/icon_order.png
Normal file
After Width: | Height: | Size: 235 B |
BIN
app/src/main/res/drawable-xhdpi/icon_refrush.png
Normal file
After Width: | Height: | Size: 697 B |
BIN
app/src/main/res/drawable-xxhdpi/icon_filter.png
Normal file
After Width: | Height: | Size: 913 B |
BIN
app/src/main/res/drawable-xxhdpi/icon_order.png
Normal file
After Width: | Height: | Size: 423 B |
BIN
app/src/main/res/drawable-xxhdpi/icon_refrush.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
5
app/src/main/res/drawable/selector_road_line_btn_bg.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="@drawable/shape_card_bg_select" android:state_selected="true"></item>
|
||||||
|
<item android:drawable="@drawable/shape_card_bg_default" />
|
||||||
|
</selector>
|
5
app/src/main/res/drawable/selector_road_line_src.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:drawable="@drawable/baseline_timeline_select_24" android:state_selected="true"></item>
|
||||||
|
<item android:drawable="@drawable/baseline_timeline_24" />
|
||||||
|
</selector>
|
@ -2,8 +2,8 @@
|
|||||||
android:shape="line">
|
android:shape="line">
|
||||||
<size android:height="2dp"/>
|
<size android:height="2dp"/>
|
||||||
<stroke
|
<stroke
|
||||||
android:color="@color/skyblue"
|
android:color="@color/bg_gray2"
|
||||||
android:dashWidth="2px"
|
android:dashWidth="1px"
|
||||||
android:dashGap="2px"
|
android:dashGap="1px"
|
||||||
android:width="1dp"/>
|
android:width="1dp"/>
|
||||||
</shape>
|
</shape>
|
@ -1,11 +1,26 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
android:shape="rectangle">
|
<!-- 灰色阴影 -->
|
||||||
<corners android:radius="@dimen/default_widget_padding"></corners>
|
<item
|
||||||
<padding
|
android:bottom="1dp"
|
||||||
android:bottom="@dimen/nimap_defalut_padding"
|
android:left="1dp"
|
||||||
android:left="@dimen/nimap_defalut_padding"
|
android:right="1dp"
|
||||||
android:right="@dimen/nimap_defalut_padding"
|
android:top="1dp">
|
||||||
android:top="@dimen/nimap_defalut_padding"></padding>
|
<shape>
|
||||||
<solid android:color="@color/colorSurface"></solid>
|
<solid android:color="#A1DBDCDF" />
|
||||||
</shape>
|
<corners android:radius="2dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<!-- 白色前景 -->
|
||||||
|
<item
|
||||||
|
android:bottom="2dp"
|
||||||
|
android:left="2dp"
|
||||||
|
android:right="2dp"
|
||||||
|
android:top="2dp">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="#FFFFFF" />
|
||||||
|
<corners android:radius="2dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
|
||||||
|
26
app/src/main/res/drawable/shape_card_bg_select.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<!-- 灰色阴影 -->
|
||||||
|
<item
|
||||||
|
android:bottom="1dp"
|
||||||
|
android:left="1dp"
|
||||||
|
android:right="1dp"
|
||||||
|
android:top="1dp">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="#A1DBDCDF" />
|
||||||
|
<corners android:radius="2dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<!-- 白色前景 -->
|
||||||
|
<item
|
||||||
|
android:bottom="2dp"
|
||||||
|
android:left="2dp"
|
||||||
|
android:right="2dp"
|
||||||
|
android:top="2dp">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="#03A9F4" />
|
||||||
|
<corners android:radius="2dp" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
|
@ -42,9 +42,9 @@
|
|||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_marginLeft="20dp"
|
android:layout_marginLeft="20dp"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="20dp"
|
||||||
|
android:background="@null"
|
||||||
android:onClick="@{()->mainActivity.openMenu()}"
|
android:onClick="@{()->mainActivity.openMenu()}"
|
||||||
android:src="@drawable/baseline_person_24"
|
android:src="@drawable/baseline_person_24"
|
||||||
android:background="@null"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
@ -57,38 +57,48 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@id/main_activity_person_center" />
|
app:layout_constraintTop_toBottomOf="@id/main_activity_person_center" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="8dp"
|
android:layout_marginRight="8dp"
|
||||||
android:layout_marginBottom="108dp"
|
android:layout_marginBottom="108dp"
|
||||||
app:layout_constraintRight_toLeftOf="@+id/main_activity_right_fragment"
|
android:orientation="vertical"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintRight_toLeftOf="@+id/main_activity_right_fragment"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
tools:ignore="MissingConstraints">
|
tools:ignore="MissingConstraints">
|
||||||
|
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/main_activity_select_line"
|
||||||
|
android:layout_width="38dp"
|
||||||
|
android:layout_height="38dp"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:background="@drawable/selector_road_line_btn_bg"
|
||||||
|
android:onClick="@{()->mainActivity.selectLineOnclick()}"
|
||||||
|
android:src="@drawable/selector_road_line_src" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_voice"
|
android:id="@+id/main_activity_voice"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:src="@drawable/icon_add_voice"
|
android:background="@null"
|
||||||
android:background="@null" />
|
android:src="@drawable/icon_add_voice" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_line"
|
android:id="@+id/main_activity_line"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
|
android:background="@null"
|
||||||
android:onClick="@{()->mainActivity.voiceOnclick()}"
|
android:onClick="@{()->mainActivity.voiceOnclick()}"
|
||||||
android:src="@drawable/icon_add_data"
|
android:src="@drawable/icon_add_data" />
|
||||||
android:background="@null" />
|
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_location"
|
android:id="@+id/main_activity_location"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
|
android:background="@null"
|
||||||
android:onClick="@{()->viewModel.onClickLocationButton()}"
|
android:onClick="@{()->viewModel.onClickLocationButton()}"
|
||||||
android:src="@drawable/icon_location"
|
android:src="@drawable/icon_location" />
|
||||||
android:background="@null" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -116,69 +126,70 @@
|
|||||||
app:navGraph="@navigation/right_fragment_nav_graph" />
|
app:navGraph="@navigation/right_fragment_nav_graph" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
app:layout_constraintRight_toLeftOf="@+id/main_activity_right_fragment"
|
app:layout_constraintRight_toLeftOf="@+id/main_activity_right_fragment"
|
||||||
android:layout_marginRight="10dp"
|
android:layout_marginRight="10dp"
|
||||||
android:layout_marginTop="10dp"
|
android:orientation="horizontal"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="MissingConstraints">
|
tools:ignore="MissingConstraints">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/main_activity_menu_layout"
|
android:id="@+id/main_activity_menu_layout"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone"
|
android:orientation="horizontal"
|
||||||
android:orientation="horizontal">
|
android:visibility="gone">
|
||||||
|
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_serach"
|
android:id="@+id/main_activity_serach"
|
||||||
android:onClick="@{()->mainActivity.onClickSerach()}"
|
|
||||||
android:background="@drawable/icon_serach"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/icon_serach"
|
||||||
|
android:onClick="@{()->mainActivity.onClickSerach()}" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_2d_3d"
|
android:id="@+id/main_activity_2d_3d"
|
||||||
android:background="@drawable/icon_2d_3d"
|
|
||||||
android:onClick="@{()->mainActivity.onClick2DOr3D()}"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/icon_2d_3d"
|
||||||
|
android:onClick="@{()->mainActivity.onClick2DOr3D()}" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_camera"
|
android:id="@+id/main_activity_camera"
|
||||||
android:background="@drawable/icon_page_video_a1"
|
|
||||||
android:onClick="@{()->mainActivity.openCamera()}"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/icon_page_video_a1"
|
||||||
|
android:onClick="@{()->mainActivity.openCamera()}" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_trace"
|
android:id="@+id/main_activity_trace"
|
||||||
android:onClick="@{()->mainActivity.onClickTrace()}"
|
|
||||||
android:background="@drawable/icon_trace"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/icon_trace"
|
||||||
|
android:onClick="@{()->mainActivity.onClickTrace()}" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/main_activity_calc_disance"
|
android:id="@+id/main_activity_calc_disance"
|
||||||
android:background="@drawable/icon_calc_disance"
|
|
||||||
android:onClick="@{()->mainActivity.onClickCalcDisance()}"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/icon_calc_disance"
|
||||||
|
android:onClick="@{()->mainActivity.onClickCalcDisance()}" />
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:layout_marginTop="5dp"
|
|
||||||
android:id="@+id/main_activity_menu"
|
android:id="@+id/main_activity_menu"
|
||||||
android:background="@drawable/chk_icon_menu_open_close_xml"
|
|
||||||
android:onClick="@{()->mainActivity.onClickMenu()}"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:background="@drawable/chk_icon_menu_open_close_xml"
|
||||||
|
android:onClick="@{()->mainActivity.onClickMenu()}" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -190,9 +201,9 @@
|
|||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_marginLeft="20dp"
|
android:layout_marginLeft="20dp"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="20dp"
|
||||||
|
android:background="@null"
|
||||||
android:onClick="@{()->mainActivity.openCamera()}"
|
android:onClick="@{()->mainActivity.openCamera()}"
|
||||||
android:src="@drawable/baseline_person_24"
|
android:src="@drawable/baseline_person_24"
|
||||||
android:background="@null"
|
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
@ -6,16 +6,16 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/ivory"
|
android:background="@color/ivory"
|
||||||
android:paddingLeft="10dp"
|
android:paddingLeft="10dp"
|
||||||
android:paddingRight="10dp"
|
|
||||||
android:paddingTop="5dp"
|
android:paddingTop="5dp"
|
||||||
|
android:paddingRight="10dp"
|
||||||
tools:context="com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapCityListAdapter">
|
tools:context="com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapCityListAdapter">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/offline_map_city_name"
|
android:id="@+id/offline_map_city_name"
|
||||||
|
style="@style/map_size_font_style"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="省市名称"
|
android:text="省市名称"
|
||||||
style="@style/map_size_font_style"
|
|
||||||
android:textSize="@dimen/default_font_size" />
|
android:textSize="@dimen/default_font_size" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -24,25 +24,26 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/offline_map_city_name"
|
android:layout_below="@id/offline_map_city_name"
|
||||||
android:drawableLeft="@mipmap/point_blue"
|
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="5dp"
|
||||||
android:textColor="@color/gray_121"
|
android:drawableLeft="@mipmap/point_blue"
|
||||||
android:text="文件大小" />
|
android:text="文件大小"
|
||||||
|
android:textColor="@color/gray_121" />
|
||||||
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/offline_map_download_btn"
|
android:id="@+id/offline_map_download_btn"
|
||||||
style="@style/map_download_style_btn"
|
style="@style/map_download_style_btn"
|
||||||
android:layout_width="60dp"
|
android:layout_width="60dp"
|
||||||
android:layout_alignTop="@id/offline_map_city_name"
|
|
||||||
android:layout_alignBottom="@id/offline_map_city_size"
|
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:gravity="center"
|
||||||
android:shadowColor="@android:color/transparent"
|
android:shadowColor="@android:color/transparent"
|
||||||
android:text="下载"
|
android:text="下载"
|
||||||
android:textSize="@dimen/card_title_font_2size" />
|
android:textSize="@dimen/card_title_font_2size" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_city_list_status"
|
android:id="@+id/tv_city_list_status"
|
||||||
|
style="@style/content_font_default_size_13sp"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
@ -50,8 +51,7 @@
|
|||||||
android:layout_toLeftOf="@id/offline_map_download_btn"
|
android:layout_toLeftOf="@id/offline_map_download_btn"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:focusable="false"
|
android:focusable="false"
|
||||||
android:shadowColor="@android:color/transparent"
|
android:shadowColor="@android:color/transparent" />
|
||||||
style="@style/content_font_default_size_13sp" />
|
|
||||||
|
|
||||||
<com.navinfo.omqs.ui.widget.MyProgressBar
|
<com.navinfo.omqs.ui.widget.MyProgressBar
|
||||||
android:id="@+id/offline_map_progress"
|
android:id="@+id/offline_map_progress"
|
||||||
@ -59,7 +59,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="16dp"
|
android:layout_height="16dp"
|
||||||
android:layout_below="@id/offline_map_download_btn"
|
android:layout_below="@id/offline_map_download_btn"
|
||||||
android:progressDrawable="@drawable/progress_bg"
|
|
||||||
android:paddingTop="10dp"
|
android:paddingTop="10dp"
|
||||||
|
android:progressDrawable="@drawable/progress_bg"
|
||||||
android:visibility="invisible" />
|
android:visibility="invisible" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
@ -1,53 +1,63 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/ivory"
|
|
||||||
android:paddingLeft="10dp"
|
android:paddingLeft="10dp"
|
||||||
android:paddingRight="10dp"
|
android:paddingRight="10dp"
|
||||||
android:paddingTop="5dp"
|
android:paddingTop="5dp"
|
||||||
android:paddingBottom="5dp"
|
android:paddingBottom="5dp"
|
||||||
tools:context="com.navinfo.omqs.ui.fragment.qsrecordlist.QsRecordListAdapter">
|
tools:context="com.navinfo.omqs.ui.fragment.qsrecordlist.QsRecordListAdapter">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/qs_record_index"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:drawableLeft="@mipmap/marker"
|
||||||
|
android:maxLength="3"
|
||||||
|
android:text=""
|
||||||
|
android:layout_marginRight="@dimen/default_widget_padding"
|
||||||
|
style="@style/content_font_default_size_13sp" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/qs_record_classType"
|
android:id="@+id/qs_record_classType"
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:drawableLeft="@mipmap/point_blue"
|
|
||||||
android:text="问题分类"
|
|
||||||
style="@style/content_font_default"
|
|
||||||
android:textSize="@dimen/default_font_size" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/qs_record_problemLink"
|
|
||||||
style="@style/content_font_default"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_toRightOf="@id/qs_record_classType"
|
|
||||||
android:drawableLeft="@mipmap/point_blue"
|
|
||||||
android:layout_marginLeft="@dimen/default_widget_padding"
|
|
||||||
android:text="问题环节" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/qs_record_problem_type"
|
|
||||||
style="@style/content_font_default_size_13sp"
|
style="@style/content_font_default_size_13sp"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:maxEms="6"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:layout_toRightOf="@id/qs_record_index"
|
||||||
|
android:text="问题分类" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/qs_record_time"
|
||||||
|
style="@style/content_font_default_size_13sp"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="@dimen/default_widget_padding"
|
||||||
|
android:layout_toRightOf="@id/qs_record_classType"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:text="" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/qs_record_problem_type"
|
||||||
|
style="@style/content_font_default_size_10sp"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/qs_record_classType"
|
android:layout_below="@id/qs_record_classType"
|
||||||
android:drawableLeft="@mipmap/point_blue"
|
android:layout_toRightOf="@id/qs_record_index"
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="5dp"
|
||||||
android:text="问题类型" />
|
android:text="问题类型" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/qs_record_phenomenon"
|
android:id="@+id/qs_record_phenomenon"
|
||||||
style="@style/content_font_default_size_13sp"
|
style="@style/content_font_default_size_10sp"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_toRightOf="@id/qs_record_problem_type"
|
android:layout_toRightOf="@id/qs_record_problem_type"
|
||||||
|
android:maxLines="2"
|
||||||
android:layout_below="@id/qs_record_classType"
|
android:layout_below="@id/qs_record_classType"
|
||||||
android:drawableLeft="@mipmap/point_blue"
|
|
||||||
android:layout_marginLeft="@dimen/default_widget_padding"
|
android:layout_marginLeft="@dimen/default_widget_padding"
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="5dp"
|
||||||
android:text="问题现象" />
|
android:text="问题现象" />
|
||||||
|
@ -17,4 +17,15 @@
|
|||||||
android:text="80"
|
android:text="80"
|
||||||
android:textColor="#2F2F2F"
|
android:textColor="#2F2F2F"
|
||||||
android:textSize="14.67sp" />
|
android:textSize="14.67sp" />
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/sign_bottom_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:layout_marginLeft="15dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:text="道路名"
|
||||||
|
android:layout_alignParentBottom="true"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="14.67sp" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
@ -15,11 +15,9 @@
|
|||||||
android:id="@+id/task_name"
|
android:id="@+id/task_name"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_toLeftOf="@id/task_download_btn"
|
android:layout_marginRight="5dp"
|
||||||
android:text="任务名称"
|
android:text="任务名称"
|
||||||
android:textStyle="bold"
|
android:textSize="12sp" />
|
||||||
android:textColor="@color/black"
|
|
||||||
android:textSize="@dimen/default_font_size" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/task_city_name"
|
android:id="@+id/task_city_name"
|
||||||
@ -37,10 +35,10 @@
|
|||||||
style="@style/map_size_font_style"
|
style="@style/map_size_font_style"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_marginRight="5dp"
|
||||||
android:layout_toLeftOf="@id/task_upload_btn"
|
|
||||||
android:layout_below="@id/task_city_name"
|
android:layout_below="@id/task_city_name"
|
||||||
android:textColor="@color/gray_121"
|
android:layout_toLeftOf="@id/task_upload_btn"
|
||||||
|
android:layout_alignParentLeft="true"
|
||||||
android:text="版本号"
|
android:text="版本号"
|
||||||
android:textSize="@dimen/card_title_font_3size" />
|
android:textSize="@dimen/card_title_font_3size" />
|
||||||
|
|
||||||
@ -51,7 +49,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/task_data_version"
|
android:layout_below="@id/task_data_version"
|
||||||
android:layout_marginTop="5dp"
|
android:layout_marginTop="5dp"
|
||||||
android:drawableLeft="@mipmap/point_blue"
|
|
||||||
android:text="路线颜色"
|
android:text="路线颜色"
|
||||||
android:textSize="@dimen/card_title_font_3size" />
|
android:textSize="@dimen/card_title_font_3size" />
|
||||||
|
|
||||||
@ -65,6 +62,7 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:shadowColor="@android:color/transparent"
|
android:shadowColor="@android:color/transparent"
|
||||||
android:text="下载"
|
android:text="下载"
|
||||||
|
android:textColor="@color/btn_blue_solid"
|
||||||
android:textSize="@dimen/card_title_font_2size" />
|
android:textSize="@dimen/card_title_font_2size" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@ -78,6 +76,7 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:shadowColor="@android:color/transparent"
|
android:shadowColor="@android:color/transparent"
|
||||||
android:text="同步"
|
android:text="同步"
|
||||||
|
android:textColor="@color/btn_blue_solid"
|
||||||
android:textSize="@dimen/card_title_font_2size" />
|
android:textSize="@dimen/card_title_font_2size" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -13,30 +13,85 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
style="@style/left_pannel_title_layout">
|
style="@style/left_pannel_title_layout">
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
|
||||||
android:id="@+id/record_back"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
android:layout_marginTop="5dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
android:background="@drawable/selector_bg_round_button"
|
|
||||||
android:foreground="@drawable/ripple_btn_press"
|
|
||||||
style="@style/btn_round"
|
|
||||||
android:src="@drawable/ic_baseline_keyboard_arrow_left_24"></androidx.appcompat.widget.AppCompatImageView>
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:id="@+id/record_title"
|
android:id="@+id/evaluation_appbar_layout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/img_back"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textSize="@dimen/left_pannel_title_font"
|
android:padding="@dimen/eight"
|
||||||
android:textStyle="bold"
|
android:layout_alignParentLeft="true"
|
||||||
android:text="我的数据"
|
android:layout_centerInParent="true"
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
android:src="@drawable/btn_back_xml" />
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
<TextView
|
||||||
app:layout_constraintBottom_toBottomOf="parent"></androidx.appcompat.widget.AppCompatTextView>
|
android:id="@+id/tv_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:paddingTop="@dimen/ten"
|
||||||
|
android:paddingBottom="@dimen/five"
|
||||||
|
android:text="测评结果"
|
||||||
|
android:textColor="@color/highFontColor"
|
||||||
|
android:textSize="@dimen/default_font_size" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title_count"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/tv_title"
|
||||||
|
android:paddingLeft="@dimen/ten"
|
||||||
|
android:layout_alignStart="@+id/tv_title"
|
||||||
|
android:paddingBottom="@dimen/ten"
|
||||||
|
android:textSize="@dimen/card_title_font_3size"
|
||||||
|
android:text="(共0个)"
|
||||||
|
android:textColor="@color/cv_gray_153" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/img_refrush"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:padding="@dimen/eight"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:layout_marginRight="@dimen/eight"
|
||||||
|
android:background="@drawable/icon_refrush" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/img_order"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:padding="@dimen/eight"
|
||||||
|
android:layout_marginRight="@dimen/eight"
|
||||||
|
android:layout_toLeftOf="@+id/img_refrush"
|
||||||
|
android:background="@drawable/icon_order" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/img_filter"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerInParent="true"
|
||||||
|
android:padding="@dimen/eight"
|
||||||
|
android:layout_marginRight="@dimen/eight"
|
||||||
|
android:layout_toLeftOf="@+id/img_order"
|
||||||
|
android:background="@drawable/icon_filter" />
|
||||||
|
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
|
25
app/src/main/res/menu/evaluation_list_bar_mean.xml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/filter"
|
||||||
|
android:contentDescription="筛选"
|
||||||
|
android:icon="@drawable/icon_filter"
|
||||||
|
android:title="筛选"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/order"
|
||||||
|
android:contentDescription="排序"
|
||||||
|
android:icon="@drawable/icon_order"
|
||||||
|
android:title="排序"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/refrush"
|
||||||
|
android:contentDescription="刷新"
|
||||||
|
android:icon="@drawable/icon_refrush"
|
||||||
|
android:title="刷新"
|
||||||
|
app:showAsAction="ifRoom" />
|
||||||
|
|
||||||
|
</menu>
|
@ -41,7 +41,7 @@
|
|||||||
<item
|
<item
|
||||||
android:id="@+id/personal_center_menu_qs_record_list"
|
android:id="@+id/personal_center_menu_qs_record_list"
|
||||||
android:icon="@drawable/ic_baseline_playlist_add_check_24"
|
android:icon="@drawable/ic_baseline_playlist_add_check_24"
|
||||||
android:title="我的数据" />
|
android:title="测评结果" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/personal_center_menu_layer_manager"
|
android:id="@+id/personal_center_menu_layer_manager"
|
||||||
android:icon="@drawable/ic_baseline_layers_24"
|
android:icon="@drawable/ic_baseline_layers_24"
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 355 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 332 B |
@ -166,6 +166,7 @@
|
|||||||
<color name="highFontColor">#2631DD</color>
|
<color name="highFontColor">#2631DD</color>
|
||||||
<color name="high_item_color">#FFF5F7FE</color>
|
<color name="high_item_color">#FFF5F7FE</color>
|
||||||
<color name="contentColor">#000000</color>
|
<color name="contentColor">#000000</color>
|
||||||
|
<color name="icon_blue">#FF4263EB</color>
|
||||||
<!-- 一键连接对话框背景色 -->
|
<!-- 一键连接对话框背景色 -->
|
||||||
<color name="bg_gray2">#d1d1d1</color>
|
<color name="bg_gray2">#d1d1d1</color>
|
||||||
<!-- 一键连接时间显示区域背景色 -->
|
<!-- 一键连接时间显示区域背景色 -->
|
||||||
|
@ -63,6 +63,15 @@
|
|||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<!-- 默认字体 -->
|
||||||
|
<style name="content_font_default_size_10sp">
|
||||||
|
<item name="android:gravity">center_vertical</item>
|
||||||
|
<item name="android:textSize">@dimen/card_title_font_3size</item>
|
||||||
|
<item name="android:textColor">@color/black</item>
|
||||||
|
<item name="android:layout_width">wrap_content</item>
|
||||||
|
<item name="android:layout_height">wrap_content</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<!-- 输入框基本样式 -->
|
<!-- 输入框基本样式 -->
|
||||||
<style name="input_blue_type" parent="content_font_default">
|
<style name="input_blue_type" parent="content_font_default">
|
||||||
<item name="android:textSize">16sp</item>
|
<item name="android:textSize">16sp</item>
|
||||||
|
@ -57,7 +57,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
|
|||||||
private lateinit var canvas: org.oscim.backend.canvas.Canvas
|
private lateinit var canvas: org.oscim.backend.canvas.Canvas
|
||||||
private lateinit var itemizedLayer: MyItemizedLayer
|
private lateinit var itemizedLayer: MyItemizedLayer
|
||||||
private lateinit var markerRendererFactory: MarkerRendererFactory
|
private lateinit var markerRendererFactory: MarkerRendererFactory
|
||||||
private var resId = R.mipmap.map_icon_point_add
|
private var resId = R.mipmap.map_icon_report
|
||||||
private var itemListener: OnQsRecordItemClickListener? = null
|
private var itemListener: OnQsRecordItemClickListener? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.3 KiB |
BIN
collect-library/src/main/res/mipmap-xxhdpi/map_icon_report.png
Normal file
After Width: | Height: | Size: 1.3 KiB |