Merge branch 'master' of gitlab.navinfo.com:CollectVehicle/OneMapQS
Conflicts: collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBReferenceDataSource.java collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java vtm
This commit is contained in:
@@ -20,6 +20,7 @@ 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.handler.MeasureLayerHandler
|
||||
import com.navinfo.omqs.Constant
|
||||
@@ -42,6 +43,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
|
||||
@@ -398,78 +400,6 @@ class MainActivity : BaseActivity() {
|
||||
supportFragmentManager.beginTransaction()
|
||||
.add(R.id.console_fragment_layout, ConsoleFragment()).commit()
|
||||
}
|
||||
|
||||
initMeasuringTool()
|
||||
}
|
||||
|
||||
/**
|
||||
*初始化测量工具栏的点击事件
|
||||
*/
|
||||
|
||||
private fun initMeasuringTool() {
|
||||
val root = binding.mainActivityMeasuringTool.root
|
||||
root.findViewById<View>(R.id.measuring_tool_select_point)
|
||||
.setOnClickListener(measuringToolClickListener)
|
||||
root.findViewById<View>(R.id.measuring_tool_close)
|
||||
.setOnClickListener(measuringToolClickListener)
|
||||
root.findViewById<View>(R.id.measuring_tool_backspace)
|
||||
.setOnClickListener(measuringToolClickListener)
|
||||
root.findViewById<View>(R.id.measuring_tool_reset)
|
||||
.setOnClickListener(measuringToolClickListener)
|
||||
root.findViewById<View>(R.id.measuring_tool_distance)
|
||||
.setOnClickListener(measuringToolClickListener)
|
||||
root.findViewById<View>(R.id.measuring_tool_area)
|
||||
.setOnClickListener(measuringToolClickListener)
|
||||
root.findViewById<View>(R.id.measuring_tool_angle)
|
||||
.setOnClickListener(measuringToolClickListener)
|
||||
}
|
||||
|
||||
/**
|
||||
* 测量工具点击事件
|
||||
*/
|
||||
private val measuringToolClickListener = View.OnClickListener {
|
||||
when (it.id) {
|
||||
//选点
|
||||
R.id.measuring_tool_select_point -> {
|
||||
viewModel.addPointForMeasuringTool()
|
||||
}
|
||||
//关闭
|
||||
R.id.measuring_tool_close -> {
|
||||
measuringToolOff()
|
||||
}
|
||||
//上一步
|
||||
R.id.measuring_tool_backspace -> {
|
||||
viewModel.backPointForMeasuringTool()
|
||||
}
|
||||
//重绘
|
||||
R.id.measuring_tool_reset -> {
|
||||
viewModel.resetMeasuringTool()
|
||||
}
|
||||
//测距
|
||||
R.id.measuring_tool_distance -> {
|
||||
it.isSelected = true
|
||||
viewModel.setMeasuringToolType(MeasureLayerHandler.MEASURE_TYPE.DISTANCE)
|
||||
val root = binding.mainActivityMeasuringTool.root
|
||||
root.findViewById<View>(R.id.measuring_tool_area).isSelected = false
|
||||
root.findViewById<View>(R.id.measuring_tool_angle).isSelected = false
|
||||
}
|
||||
//测面积
|
||||
R.id.measuring_tool_area -> {
|
||||
it.isSelected = true
|
||||
viewModel.setMeasuringToolType(MeasureLayerHandler.MEASURE_TYPE.AREA)
|
||||
val root = binding.mainActivityMeasuringTool.root
|
||||
root.findViewById<View>(R.id.measuring_tool_distance).isSelected = false
|
||||
root.findViewById<View>(R.id.measuring_tool_angle).isSelected = false
|
||||
}
|
||||
//测角度
|
||||
R.id.measuring_tool_angle -> {
|
||||
it.isSelected = true
|
||||
viewModel.setMeasuringToolType(MeasureLayerHandler.MEASURE_TYPE.ANGLE)
|
||||
val root = binding.mainActivityMeasuringTool.root
|
||||
root.findViewById<View>(R.id.measuring_tool_distance).isSelected = false
|
||||
root.findViewById<View>(R.id.measuring_tool_area).isSelected = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -513,29 +443,48 @@ class MainActivity : BaseActivity() {
|
||||
binding.mainActivityMeasuringTool.root.visibility = View.GONE
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据输入的经纬度跳转坐标
|
||||
*/
|
||||
//根据输入的经纬度跳转坐标
|
||||
fun jumpPosition() {
|
||||
val view = this.layoutInflater.inflate(R.layout.dialog_view_edittext, null)
|
||||
val inputDialog = MaterialAlertDialogBuilder(
|
||||
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()
|
||||
mapController.markerHandle.removeMarker("location")
|
||||
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()
|
||||
@@ -628,7 +577,7 @@ class MainActivity : BaseActivity() {
|
||||
* 点击2\3D
|
||||
*/
|
||||
fun onClick2DOr3D() {
|
||||
|
||||
viewModel.click2Dor3D()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -743,8 +692,8 @@ class MainActivity : BaseActivity() {
|
||||
* 点击结束轨迹操作
|
||||
*/
|
||||
fun mediaFlagOnclick() {
|
||||
/* viewModel.setMediaFlag(!viewModel.isMediaFlag())
|
||||
binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag()*/
|
||||
/* viewModel.setMediaFlag(!viewModel.isMediaFlag())
|
||||
binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag()*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.navinfo.collect.library.map.OnGeoPointClickListener
|
||||
import com.navinfo.collect.library.map.handler.*
|
||||
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
|
||||
@@ -289,8 +290,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)
|
||||
}
|
||||
|
||||
@@ -484,11 +484,14 @@ class MainViewModel @Inject constructor(
|
||||
captureLinkState = true
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
val linkList = realmOperateHelper.queryLink(
|
||||
/* val linkList = realmOperateHelper.queryLink(
|
||||
point = point,
|
||||
)
|
||||
)*/
|
||||
|
||||
val linkList = realmOperateHelper.queryLine(point = point, buffer = 2.5, table = "OMDB_LANE_MARK_BOUNDARYTYPE")
|
||||
|
||||
var hisRoadName = false
|
||||
|
||||
if (linkList.isNotEmpty()) {
|
||||
//看板数据
|
||||
val signList = mutableListOf<SignBean>()
|
||||
@@ -1102,5 +1105,74 @@ class MainViewModel @Inject constructor(
|
||||
mapController.measureLayerHandler.clear()
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
mapController.markerHandle.addMarker(GeoPoint(y,x),"location")
|
||||
dialog.dismiss()
|
||||
} else {
|
||||
Toast.makeText(mapController.mMapView.context, "输入格式不正确", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.navinfo.omqs.ui.activity.map
|
||||
|
||||
enum class SearchEnum {
|
||||
LINK,LOCATION,MARK
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
}
|
||||
@@ -435,6 +436,7 @@ class TaskViewModel @Inject constructor(
|
||||
}
|
||||
liveDataTaskLinks.postValue(currentSelectTaskBean!!.hadLinkDvoList)
|
||||
mapController.lineHandler.addTaskLink(hadLinkDvoBean)
|
||||
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
|
||||
mapController.mMapView.vtmMap.updateMap(true)
|
||||
}
|
||||
}
|
||||
@@ -488,6 +490,7 @@ class TaskViewModel @Inject constructor(
|
||||
}
|
||||
}
|
||||
}
|
||||
mapController.layerManagerHandler.updateOMDBVectorTileLayer()
|
||||
mapController.mMapView.vtmMap.updateMap(true)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user