Merge branch 'master' of https://gitlab.navinfo.com/CollectVehicle/OneMapQS
Conflicts: app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java vtm
This commit is contained in:
@@ -9,6 +9,7 @@ import android.util.Log
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.viewModels
|
||||
@@ -21,6 +22,7 @@ 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
|
||||
import com.navinfo.omqs.R
|
||||
import com.navinfo.omqs.bean.ImportConfig
|
||||
@@ -447,10 +449,12 @@ class MainActivity : BaseActivity() {
|
||||
Toast.makeText(this, "输入格式不正确", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
dialog.dismiss()
|
||||
}
|
||||
inputDialog.show()
|
||||
}
|
||||
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
|
||||
@@ -508,10 +512,10 @@ class MainActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击计算
|
||||
* 点击测速
|
||||
*/
|
||||
fun onClickCalcDisance() {
|
||||
|
||||
fun onClickCalcDistance() {
|
||||
measuringToolOn()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,16 +22,12 @@ import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.navigation.findNavController
|
||||
import com.blankj.utilcode.util.ToastUtils
|
||||
import com.blankj.utilcode.util.ViewUtils.runOnUiThread
|
||||
import com.navinfo.collect.library.data.dao.impl.TraceDataBase
|
||||
import com.navinfo.collect.library.data.entity.*
|
||||
import com.navinfo.collect.library.garminvirbxe.HostBean
|
||||
import com.navinfo.collect.library.map.NIMapController
|
||||
import com.navinfo.collect.library.map.OnGeoPointClickListener
|
||||
import com.navinfo.collect.library.map.handler.ONNoteItemClickListener
|
||||
import com.navinfo.collect.library.map.handler.OnNiLocationItemListener
|
||||
import com.navinfo.collect.library.map.handler.OnQsRecordItemClickListener
|
||||
import com.navinfo.collect.library.map.handler.OnTaskLinkItemClickListener
|
||||
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
|
||||
@@ -60,10 +56,8 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.locationtech.jts.geom.Point
|
||||
import org.oscim.core.GeoPoint
|
||||
import org.oscim.core.MapPosition
|
||||
import org.oscim.layers.marker.MarkerItem
|
||||
import org.oscim.map.Map
|
||||
import org.videolan.libvlc.LibVlcUtil
|
||||
import java.io.File
|
||||
@@ -175,6 +169,17 @@ class MainViewModel @Inject constructor(
|
||||
*/
|
||||
private var bSelectPauseTrace = false
|
||||
|
||||
/**
|
||||
* 是不是开启测距
|
||||
*/
|
||||
private var bMeasuringTool = false
|
||||
|
||||
/**
|
||||
* 测量类型
|
||||
*/
|
||||
var measuringType: MeasureLayerHandler.MEASURE_TYPE =
|
||||
MeasureLayerHandler.MEASURE_TYPE.DISTANCE
|
||||
|
||||
var linkIdCache = ""
|
||||
|
||||
private var lastNiLocaion: NiLocation? = null
|
||||
@@ -220,12 +225,16 @@ class MainViewModel @Inject constructor(
|
||||
object : OnGeoPointClickListener {
|
||||
override fun onMapClick(tag: String, point: GeoPoint) {
|
||||
if (tag == TAG) {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
//线选择状态
|
||||
if (bSelectRoad) {
|
||||
captureLink(point)
|
||||
} else {
|
||||
captureItem(point)
|
||||
if (bMeasuringTool) {
|
||||
mapController.measureLayerHandler.addPoint(measuringType, point)
|
||||
} else {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
//线选择状态
|
||||
if (bSelectRoad) {
|
||||
captureLink(point)
|
||||
} else {
|
||||
captureItem(point)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -586,7 +595,6 @@ class MainViewModel @Inject constructor(
|
||||
* 点击我的位置,回到我的位置
|
||||
*/
|
||||
fun onClickLocationButton() {
|
||||
mapController.markerHandle.removeMarker("location")
|
||||
mapController.locationLayerHandler.animateToCurrentPosition()
|
||||
}
|
||||
|
||||
@@ -1032,12 +1040,12 @@ class MainViewModel @Inject constructor(
|
||||
val nextNiLocation =
|
||||
mapController.markerHandle.getNILocation(currentIndexNiLocation + 1)
|
||||
if (nextNiLocation != null && niLocation != null) {
|
||||
var nilocationDisTime =
|
||||
var niLocationDisTime =
|
||||
nextNiLocation.timeStamp.toLong() - niLocation.timeStamp.toLong()
|
||||
disTime = if (nilocationDisTime < 1000) {
|
||||
disTime = if (niLocationDisTime < 1000) {
|
||||
1000
|
||||
} else {
|
||||
nilocationDisTime
|
||||
niLocationDisTime
|
||||
}
|
||||
showMarker(mapController.mMapView.context, nextNiLocation)
|
||||
currentIndexNiLocation += 1
|
||||
@@ -1058,6 +1066,46 @@ class MainViewModel @Inject constructor(
|
||||
timer?.cancel()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 开启测量工具
|
||||
*/
|
||||
fun setMeasuringToolEnable(b: Boolean) {
|
||||
bMeasuringTool = b
|
||||
mapController.measureLayerHandler.clear()
|
||||
}
|
||||
|
||||
/**
|
||||
* 测量打点
|
||||
*/
|
||||
fun addPointForMeasuringTool() {
|
||||
mapController.measureLayerHandler.addPoint(measuringType)
|
||||
}
|
||||
|
||||
/**
|
||||
* 测距回退点
|
||||
*/
|
||||
fun backPointForMeasuringTool() {
|
||||
mapController.measureLayerHandler.backspacePoint()
|
||||
}
|
||||
|
||||
/**
|
||||
* 重绘
|
||||
*/
|
||||
fun resetMeasuringTool() {
|
||||
mapController.measureLayerHandler.clear()
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置测量类型 0:距离 2:面积 3:角度
|
||||
*/
|
||||
fun setMeasuringToolType(type: MeasureLayerHandler.MEASURE_TYPE) {
|
||||
if(measuringType != type) {
|
||||
measuringType = type
|
||||
mapController.measureLayerHandler.clear()
|
||||
}
|
||||
}
|
||||
|
||||
fun click2Dor3D(){
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
Log.e(
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.navinfo.omqs.ui.fragment.tasklink
|
||||
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@@ -38,7 +37,7 @@ class TaskLinkFragment : BaseFragment(), View.OnClickListener {
|
||||
|
||||
arguments?.let {
|
||||
val id = it.getString("TaskLinkId")
|
||||
if (id != null && id.isNotEmpty()){
|
||||
if (id != null && id.isNotEmpty()) {
|
||||
viewModel.initData(id)
|
||||
}
|
||||
}
|
||||
@@ -97,11 +96,11 @@ class TaskLinkFragment : BaseFragment(), View.OnClickListener {
|
||||
/**
|
||||
* 线长度
|
||||
*/
|
||||
mapController.measureLayerHandler.lineLengthLiveData.observe(viewLifecycleOwner) {
|
||||
binding.taskLinkLength.text = "${it}米"
|
||||
mapController.measureLayerHandler.measureValueLiveData.observe(viewLifecycleOwner) {
|
||||
binding.taskLinkLength.text = "${it.valueString}${it.unit}"
|
||||
}
|
||||
mapController.measureLayerHandler.tempLineDistanceLiveData.observe(viewLifecycleOwner) {
|
||||
(activity as MainActivity).setHomeCenterText(it)
|
||||
mapController.measureLayerHandler.tempMeasureValueLiveData.observe(viewLifecycleOwner) {
|
||||
(activity as MainActivity).setHomeCenterText("${it.valueString}${it.unit}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,6 +110,7 @@ class TaskLinkFragment : BaseFragment(), View.OnClickListener {
|
||||
* 显示地图准星
|
||||
*/
|
||||
activity?.let {
|
||||
(activity as MainActivity).measuringToolOff()
|
||||
(activity as MainActivity).setHomeCenterVisibility(View.VISIBLE)
|
||||
}
|
||||
}
|
||||
@@ -159,7 +159,7 @@ class TaskLinkFragment : BaseFragment(), View.OnClickListener {
|
||||
binding.taskLinkClear -> {
|
||||
viewModel.clearLink()
|
||||
}
|
||||
binding.taskLinkBarDelete ->{
|
||||
binding.taskLinkBarDelete -> {
|
||||
viewModel.deleteData(requireContext())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package com.navinfo.omqs.ui.fragment.tasklink
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Build
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
@@ -13,18 +10,15 @@ import com.navinfo.collect.library.data.entity.LinkInfoBean
|
||||
import com.navinfo.collect.library.data.entity.QsRecordBean
|
||||
import com.navinfo.collect.library.data.entity.TaskBean
|
||||
import com.navinfo.collect.library.map.NIMapController
|
||||
import com.navinfo.collect.library.map.handler.MeasureLayerHandler
|
||||
import com.navinfo.collect.library.utils.GeometryTools
|
||||
import com.navinfo.omqs.Constant
|
||||
import com.navinfo.omqs.ui.dialog.FirstDialog
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import io.realm.Realm
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.bson.codecs.UuidCodec
|
||||
import org.bson.internal.UuidHelper
|
||||
import org.oscim.core.GeoPoint
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
|
||||
@@ -136,7 +130,7 @@ class TaskLinkViewModel @Inject constructor(
|
||||
* 编辑点
|
||||
*/
|
||||
fun addPoint() {
|
||||
mapController.measureLayerHandler.drawLineOrPolygon(false)
|
||||
mapController.measureLayerHandler.addPoint(MeasureLayerHandler.MEASURE_TYPE.DISTANCE)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,7 +192,7 @@ class TaskLinkViewModel @Inject constructor(
|
||||
if (hadLinkDvoBean != null) {
|
||||
hadLinkDvoBean!!.taskId = liveDataTaskBean.value!!.id
|
||||
hadLinkDvoBean!!.length =
|
||||
mapController.measureLayerHandler.lineLengthLiveData.value!!
|
||||
mapController.measureLayerHandler.measureValueLiveData.value!!.value
|
||||
hadLinkDvoBean!!.geometry =
|
||||
GeometryTools.getLineString(mapController.measureLayerHandler.mPathLayer.points)
|
||||
hadLinkDvoBean!!.linkInfo = LinkInfoBean(
|
||||
@@ -218,7 +212,7 @@ class TaskLinkViewModel @Inject constructor(
|
||||
taskId = liveDataTaskBean.value!!.id,
|
||||
linkPid = UUID.randomUUID().toString(),
|
||||
linkStatus = 3,
|
||||
length = mapController.measureLayerHandler.lineLengthLiveData.value!!,
|
||||
length = mapController.measureLayerHandler.measureValueLiveData.value!!.value,
|
||||
geometry = GeometryTools.getLineString(mapController.measureLayerHandler.mPathLayer.points),
|
||||
linkInfo = LinkInfoBean(
|
||||
kind = liveDataSelectKind.value!!.type,
|
||||
@@ -256,7 +250,7 @@ class TaskLinkViewModel @Inject constructor(
|
||||
* 绘制线的时候回退点
|
||||
*/
|
||||
fun removeLinkLastPoint() {
|
||||
mapController.measureLayerHandler.drawLineBackspace()
|
||||
mapController.measureLayerHandler.backspacePoint()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -302,9 +296,11 @@ class TaskLinkViewModel @Inject constructor(
|
||||
if (task != null) {
|
||||
liveDataTaskBean.postValue(realm.copyFromRealm(task))
|
||||
}
|
||||
hadLinkDvoBean = realm.copyFromRealm(objects)
|
||||
withContext(Dispatchers.Main) {
|
||||
mapController.measureLayerHandler.initPathLine(hadLinkDvoBean?.geometry!!)
|
||||
if(objects != null) {
|
||||
hadLinkDvoBean = realm.copyFromRealm(objects)
|
||||
withContext(Dispatchers.Main) {
|
||||
mapController.measureLayerHandler.initPathLine(hadLinkDvoBean?.geometry!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user