1.增加搜索相关功能业务2.解决下载omdb后不及时渲染问题3.增加按任务及link关联渲染业务4.接口中增加按任务查询条件

This commit is contained in:
qiji4215
2023-08-10 10:51:22 +08:00
parent 1765b8801b
commit 57ccf8584b
26 changed files with 494 additions and 210 deletions

View File

@@ -19,8 +19,8 @@ import androidx.navigation.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.tabs.TabLayout
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.map.NIMapOptions
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig
@@ -41,6 +41,7 @@ import com.navinfo.omqs.util.FlowEventBus
import com.navinfo.omqs.util.SpeakMode
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.oscim.android.theme.AssetsRenderTheme
import org.oscim.core.GeoPoint
import org.oscim.renderer.GLViewport
import org.videolan.vlc.Util
@@ -406,31 +407,49 @@ class MainActivity : BaseActivity() {
this
).setTitle("坐标定位").setView(view)
val editText = view.findViewById<EditText>(R.id.dialog_edittext)
editText.hint = "请输入经纬度例如116.1234567,39.1234567"
val tabItemLayout = view.findViewById<TabLayout>(R.id.search_tab_layout)
editText.hint = "请输入LinkPid例如12345678"
var index:Int = 0
tabItemLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(p0: TabLayout.Tab) {
}
override fun onTabUnselected(p0: TabLayout.Tab) {
}
override fun onTabSelected(p0: TabLayout.Tab) {
index = p0.position
editText.text = null
//清理已绘制线
mapController.lineHandler.removeLine()
when (p0.position) {
0 -> editText.hint = "请输入LinkPid例如12345678"
1 -> editText.hint = "请输入MarkId例如123456789"
2 -> editText.hint = "请输入经纬度例如116.1234567,39.1234567"
}
}
})
inputDialog.setNegativeButton("取消") { dialog, _ ->
dialog.dismiss()
}
inputDialog.setPositiveButton("确定") { dialog, _ ->
if (editText.text.isNotEmpty()) {
try {
val parts = editText.text.toString().split("[,\\s]".toRegex())
if (parts.size == 2) {
val x = parts[0].toDouble()
val y = parts[1].toDouble()
mapController.animationHandler.animationByLatLon(y, x)
} else {
Toast.makeText(this, "输入格式不正确", Toast.LENGTH_SHORT).show()
when (index) {
0 -> viewModel.search(SearchEnum.LINK,editText.text.toString(),dialog)
1 -> viewModel.search(SearchEnum.MARK,editText.text.toString(),dialog)
2 -> viewModel.search(SearchEnum.LOCATION,editText.text.toString(),dialog)
}
} catch (e: Exception) {
Toast.makeText(this, "输入格式不正确", Toast.LENGTH_SHORT).show()
}
}
dialog.dismiss()
}
inputDialog.show()
}
override fun onStart() {
super.onStart()
@@ -512,7 +531,7 @@ class MainActivity : BaseActivity() {
* 点击2\3D
*/
fun onClick2DOr3D() {
viewModel.click2Dor3D()
}
/**
@@ -627,8 +646,8 @@ class MainActivity : BaseActivity() {
* 点击结束轨迹操作
*/
fun mediaFlagOnclick() {
/* viewModel.setMediaFlag(!viewModel.isMediaFlag())
binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag()*/
/* viewModel.setMediaFlag(!viewModel.isMediaFlag())
binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag()*/
}
/**
@@ -825,7 +844,7 @@ class MainActivity : BaseActivity() {
}
}
private fun showMainActivityBottomSheetGroup(){
private fun showMainActivityBottomSheetGroup() {
binding.mainActivityBottomSheetGroup.visibility = View.VISIBLE
mapController.mMapView.setScaleBarLayer(GLViewport.Position.BOTTOM_CENTER, 128, 65)
mapController.mMapView.vtmMap.animator().animateTo(
@@ -836,7 +855,7 @@ class MainActivity : BaseActivity() {
)
}
private fun hideMainActivityBottomSheetGroup(){
private fun hideMainActivityBottomSheetGroup() {
binding.mainActivityBottomSheetGroup.visibility = View.GONE
mapController.mMapView.setScaleBarLayer(GLViewport.Position.BOTTOM_CENTER, 128, 5)
mapController.mMapView.vtmMap.animator().animateTo(

View File

@@ -34,6 +34,7 @@ import com.navinfo.collect.library.map.handler.OnQsRecordItemClickListener
import com.navinfo.collect.library.map.handler.OnTaskLinkItemClickListener
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.collect.library.utils.GeometryToolsKt
import com.navinfo.collect.library.utils.RealmDBParamUtils
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ImportConfig
@@ -280,8 +281,7 @@ class MainViewModel @Inject constructor(
initNILocationData()
}
sharedPreferences.registerOnSharedPreferenceChangeListener(this)
com.navinfo.collect.library.system.Constant.TASK_ID =
sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
RealmDBParamUtils.setTaskId(sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1))
socketServer = SocketServer(mapController, traceDataBase, sharedPreferences)
}
@@ -1053,5 +1053,73 @@ class MainViewModel @Inject constructor(
fun cancelTrace() {
timer?.cancel()
}
fun click2Dor3D(){
viewModelScope.launch(Dispatchers.IO) {
Log.e(
"qj",
"${
Realm.getDefaultInstance().where(RenderEntity::class.java).findAll().size
}==安装数量"
)
}
}
/**
* 搜索接口
* @param searchEnum 枚举类
* @param msg 搜索内容
*/
fun search(searchEnum: SearchEnum,msg:String,dialog:DialogInterface){
if(searchEnum!=null&&msg.isNotEmpty()&&dialog!=null){
when (searchEnum) {
SearchEnum.LINK -> {
viewModelScope.launch(Dispatchers.IO) {
val link = realmOperateHelper.queryLink(linkPid = msg)
if(link!=null){
link?.let { l ->
mapController.lineHandler.showLine(l.geometry)
dialog.dismiss()
}
}else{
withContext(Dispatchers.Main){
Toast.makeText(mapController.mMapView.context, "未查询到数据", Toast.LENGTH_SHORT).show()
}
}
}
}
SearchEnum.MARK -> {
viewModelScope.launch(Dispatchers.IO) {
val qsRecordBean = realmOperateHelper.queryQcRecordBean(markId = msg)
if(qsRecordBean!=null){
qsRecordBean?.let { l ->
val naviController = (mapController.mMapView.context as Activity).findNavController(R.id.main_activity_right_fragment)
val bundle = Bundle()
bundle.putString("QsId", l.id)
naviController.navigate(R.id.EvaluationResultFragment, bundle)
ToastUtils.showLong(l.classType)
dialog.dismiss()
}
}else{
withContext(Dispatchers.Main){
Toast.makeText(mapController.mMapView.context, "未查询到数据", Toast.LENGTH_SHORT).show()
}
}
}
}
SearchEnum.LOCATION -> {
val parts = msg.split("[,\\s]".toRegex())
if (parts.size == 2) {
val x = parts[0].toDouble()
val y = parts[1].toDouble()
mapController.animationHandler.animationByLatLon(y, x)
dialog.dismiss()
} else {
Toast.makeText(mapController.mMapView.context, "输入格式不正确", Toast.LENGTH_SHORT).show()
}
}
}
}
}
}

View File

@@ -0,0 +1,5 @@
package com.navinfo.omqs.ui.activity.map
enum class SearchEnum {
LINK,LOCATION,MARK
}

View File

@@ -220,7 +220,7 @@ class EvaluationResultViewModel @Inject constructor(
liveDataQsRecordBean.value?.let {
val taskLink =
realmOperateHelper.captureTaskLink(liveDataTaskBean.value!!.id, point)
realmOperateHelper.captureTaskLink(point)
if (taskLink != null) {
it.linkId = taskLink.linkPid
mapController.lineHandler.showLine(taskLink.geometry)

View File

@@ -1,6 +1,7 @@
package com.navinfo.omqs.ui.fragment.qsrecordlist
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.util.Log
import androidx.lifecycle.MutableLiveData
@@ -9,6 +10,7 @@ import androidx.lifecycle.viewModelScope
import androidx.navigation.findNavController
import com.blankj.utilcode.util.ToastUtils
import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.ui.activity.map.MainActivity
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -19,14 +21,16 @@ import javax.inject.Inject
@HiltViewModel
class QsRecordListViewModel @Inject constructor(
private val sharedPreferences: SharedPreferences
) : ViewModel() {
val liveDataQSList = MutableLiveData<List<QsRecordBean>>()
fun getList(context: Context) {
viewModelScope.launch(Dispatchers.IO) {
val taskId = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
val realm = Realm.getDefaultInstance()
val objects = realm.where(QsRecordBean::class.java).findAll()
val objects = realm.where(QsRecordBean::class.java).equalTo("taskId",taskId).findAll()
liveDataQSList.postValue(realm.copyFromRealm(objects))
}
}

View File

@@ -16,6 +16,7 @@ import com.navinfo.collect.library.data.entity.TaskBean
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.map.OnGeoPointClickListener
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.collect.library.utils.RealmDBParamUtils
import com.navinfo.omqs.Constant
import com.navinfo.omqs.db.RealmOperateHelper
import com.navinfo.omqs.http.NetworkService
@@ -141,8 +142,8 @@ class TaskViewModel @Inject constructor(
liveDataTaskLinks.value = taskBean.hadLinkDvoList
showTaskLinks(taskBean)
com.navinfo.collect.library.system.Constant.TASK_ID = taskBean.id
mapController.layerManagerHandler.omdbLayersClear()
RealmDBParamUtils.setTaskId(taskBean.id)
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
mapController.mMapView.updateMap(true)
}