增加要素捕捉功能,

增加测量功能
This commit is contained in:
squallzhjch
2023-08-04 10:11:29 +08:00
parent 5266cbb4b1
commit 8f3bd1926a
31 changed files with 732 additions and 122 deletions

View File

@@ -0,0 +1,103 @@
package com.navinfo.omqs.ui.fragment.signMoreInfo
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.AdapterLaneBoundaryBinding
import com.navinfo.omqs.databinding.AdapterTwoItemBinding
import com.navinfo.omqs.ui.other.BaseViewHolder
import com.navinfo.omqs.ui.other.anim.ExpandableViewHoldersUtil
import com.navinfo.omqs.ui.other.anim.ExpandableViewHoldersUtil.Expandable
data class LaneBoundaryItem(
val title: String, val text: String?, val itemList: MutableList<TwoItemAdapterItem>?
)
class LaneBoundaryAdapter : RecyclerView.Adapter<ViewHolder>() {
private val keepOne: ExpandableViewHoldersUtil.KeepOneH<ExpandViewHolder> =
ExpandableViewHoldersUtil.KeepOneH()
private var dataList = mutableListOf<LaneBoundaryItem>()
class ExpandViewHolder(
val viewBinding: AdapterLaneBoundaryBinding,
private val keepOne: ExpandableViewHoldersUtil.KeepOneH<ExpandViewHolder>
) : ViewHolder(viewBinding.root),
View.OnClickListener, Expandable {
init {
viewBinding.root.setOnClickListener(this)
}
fun bind(pos: Int, laneBoundaryItem: LaneBoundaryItem) {
viewBinding.contactName.text = laneBoundaryItem.title
if (laneBoundaryItem.itemList != null) {
for (item in laneBoundaryItem.itemList) {
var view = LayoutInflater.from(viewBinding.root.context)
.inflate(R.layout.adapter_two_item, null, false)
view.findViewById<TextView>(R.id.title).text = item.title
view.findViewById<TextView>(R.id.text).text = item.text
viewBinding.infos.addView(view)
}
}
keepOne.bind(this, pos)
}
override fun onClick(v: View) {
keepOne.toggle(this,viewBinding.expandIcon)
}
override val expandView: View
get() = viewBinding.infos
}
override
fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return if (viewType == 1) {
val viewBinding = AdapterLaneBoundaryBinding.inflate(
LayoutInflater.from(parent.context), parent, false
)
ExpandViewHolder(viewBinding, keepOne)
} else {
val viewBinding =
AdapterTwoItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
BaseViewHolder(viewBinding)
}
}
override fun getItemCount(): Int {
return dataList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
if (holder is ExpandViewHolder) {
holder.bind(position, dataList[position])
} else if (holder is BaseViewHolder) {
val binding: AdapterTwoItemBinding = holder.viewBinding as AdapterTwoItemBinding
val item = dataList[position]
binding.title.text = item.title
binding.text.text = item.text
}
}
override fun getItemViewType(position: Int): Int {
return if (dataList[position].itemList != null) 1
else 0
}
fun refreshData(list: List<LaneBoundaryItem>) {
dataList.clear()
dataList.addAll(list)
notifyDataSetChanged()
}
}

View File

@@ -55,15 +55,27 @@ class SignMoreInfoFragment : BaseFragment() {
binding.signInfoRecyclerview.adapter = adapter
adapter.refreshData(SignUtil.getRoadNameList(it))
}
//车道边界类型
2013 -> {
val adapter = LaneBoundaryAdapter()
binding.signInfoRecyclerview.adapter = adapter
adapter.refreshData(SignUtil.getLaneBoundaryTypeInfo(it))
}
//可变点限速
2021 -> {
val adapter = TwoItemAdapter()
binding.signInfoRecyclerview.adapter = adapter
adapter.refreshData(SignUtil.getChangeLimitSpeedInfo(it))
}
//常规点限速
4002 -> {
val adapter = ElectronicEyeInfoAdapter()
val adapter = TwoItemAdapter()
binding.signInfoRecyclerview.adapter = adapter
adapter.refreshData(SignUtil.getSpeedLimitMoreInfoText(it))
}
//条件点限速
4003 -> {
val adapter = ElectronicEyeInfoAdapter()
val adapter = TwoItemAdapter()
binding.signInfoRecyclerview.adapter = adapter
adapter.refreshData(SignUtil.getConditionLimitMoreInfoText(it))
}
@@ -80,11 +92,14 @@ class SignMoreInfoFragment : BaseFragment() {
binding.signInfoTitle.setCompoundDrawables(
drawable, null, null, null
)
val adapter = ElectronicEyeInfoAdapter()
val adapter = TwoItemAdapter()
binding.signInfoRecyclerview.adapter = adapter
adapter.refreshData(SignUtil.getElectronicEyeMoreInfo(it))
}
else -> {
val adapter = TwoItemAdapter()
binding.signInfoRecyclerview.adapter = adapter
}
}
}

View File

@@ -2,27 +2,26 @@ package com.navinfo.omqs.ui.fragment.signMoreInfo
import android.view.LayoutInflater
import android.view.ViewGroup
import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.AdapterElectronicEyeBinding
import com.navinfo.omqs.databinding.AdapterTwoItemBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
data class ElectronicEyeMoreInfoAdapterItem(
data class TwoItemAdapterItem(
val title: String,
val text: String
)
class ElectronicEyeInfoAdapter : BaseRecyclerViewAdapter<ElectronicEyeMoreInfoAdapterItem>() {
class TwoItemAdapter : BaseRecyclerViewAdapter<TwoItemAdapterItem>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
val viewBinding =
AdapterElectronicEyeBinding.inflate(LayoutInflater.from(parent.context), parent, false)
AdapterTwoItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return BaseViewHolder(viewBinding)
}
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val binding: AdapterElectronicEyeBinding =
holder.viewBinding as AdapterElectronicEyeBinding
val binding: AdapterTwoItemBinding =
holder.viewBinding as AdapterTwoItemBinding
val item = data[position]
binding.title.text = item.title
binding.text.text = item.text

View File

@@ -1,11 +1,8 @@
package com.navinfo.omqs.ui.fragment.tasklink
import android.os.Build
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.RequiresApi
import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.AdapterElectronicEyeBinding
import com.navinfo.omqs.databinding.AdapterTaskLinkInfoBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder

View File

@@ -180,10 +180,10 @@ class TaskListAdapter(
binding.taskUploadBtn.visibility = View.INVISIBLE
}
if (taskBean.syncStatus == FileUploadStatus.DONE) {
binding.taskUploadBtn.setProgress(0)
// binding.taskUploadBtn.setProgress(0)
binding.taskUploadBtn.setBackgroundColor(binding.root.resources.getColor(R.color.ripple_end_color))
} else {
binding.taskUploadBtn.setProgress(100)
// binding.taskUploadBtn.setProgress(100)
binding.taskUploadBtn.setBackgroundColor(Color.parseColor("#888FB3"))
}
binding.taskDownloadBtn.tag = position
@@ -301,7 +301,7 @@ class TaskListAdapter(
binding.taskDownloadBtn.setTextColor(Color.WHITE)
}
if (taskBean.fileSize > 0L) {
if (taskBean.fileSize > 0L && taskBean.status != FileDownloadStatus.DONE) {
val progress = (taskBean.currentSize * 100 / taskBean.fileSize).toInt()
binding.taskProgressText.text =
"$progress%"

View File

@@ -5,7 +5,6 @@ import android.content.SharedPreferences
import android.content.SharedPreferences.OnSharedPreferenceChangeListener
import android.os.Build
import android.view.View
import android.widget.Toast
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
@@ -19,7 +18,6 @@ import com.navinfo.collect.library.map.OnGeoPointClickListener
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.omqs.Constant
import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.http.NetResult
import com.navinfo.omqs.http.NetworkService
import com.navinfo.omqs.tools.FileManager
import com.navinfo.omqs.ui.dialog.FirstDialog
@@ -27,7 +25,6 @@ import com.navinfo.omqs.util.DateTimeUtil
import dagger.hilt.android.lifecycle.HiltViewModel
import io.realm.Realm
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.collectLatest
import org.oscim.core.GeoPoint
import javax.inject.Inject
@@ -144,6 +141,10 @@ class TaskViewModel @Inject constructor(
liveDataTaskLinks.value = taskBean.hadLinkDvoList
showTaskLinks(taskBean)
com.navinfo.collect.library.system.Constant.TASK_ID = taskBean.id
mapController.layerManagerHandler.omdbLayersClear()
mapController.mMapView.updateMap(true)
}
private fun showTaskLinks(taskBean: TaskBean) {
@@ -475,8 +476,8 @@ class TaskViewModel @Inject constructor(
.equalTo("linkId", hadLinkDvoBean.linkPid)
.and().equalTo("taskId", hadLinkDvoBean.taskId)
.findAll()
if(markers != null){
for(marker in markers){
if (markers != null) {
for (marker in markers) {
mapController.markerHandle.removeQsRecordMark(marker)
}
markers.deleteAllFromRealm()