修改地图卡顿
修改新增link线型编辑
This commit is contained in:
parent
e3695fb6cb
commit
45e3e3ca0d
@ -223,9 +223,18 @@ class MainActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.liveDataTaskLink.observe(this) {
|
||||
val bundle = Bundle()
|
||||
bundle.putString("TaskLinkId", it)
|
||||
findNavController(R.id.main_activity_right_fragment).navigate(
|
||||
R.id.TaskLinkFragment,
|
||||
bundle
|
||||
)
|
||||
}
|
||||
|
||||
//捕捉列表变化回调
|
||||
viewModel.liveDataNILocationList.observe(this) {
|
||||
Toast.makeText(this,"轨迹被点击了",Toast.LENGTH_LONG).show()
|
||||
Toast.makeText(this, "轨迹被点击了", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
//右上角菜单是否被点击
|
||||
@ -545,7 +554,12 @@ class MainActivity : BaseActivity() {
|
||||
mapController.mMapView.setScaleBarLayer(GLViewport.Position.BOTTOM_CENTER, 128, 65)
|
||||
}
|
||||
mapController.mMapView.vtmMap.animator()
|
||||
.animateTo(GeoPoint( mapController.mMapView.vtmMap.mapPosition.geoPoint.latitude,mapController.mMapView.vtmMap.mapPosition.geoPoint.longitude))
|
||||
.animateTo(
|
||||
GeoPoint(
|
||||
mapController.mMapView.vtmMap.mapPosition.geoPoint.latitude,
|
||||
mapController.mMapView.vtmMap.mapPosition.geoPoint.longitude
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.M)
|
||||
|
@ -23,13 +23,10 @@ import androidx.lifecycle.viewModelScope
|
||||
import androidx.navigation.findNavController
|
||||
import com.blankj.utilcode.util.ToastUtils
|
||||
import com.navinfo.collect.library.data.dao.impl.TraceDataBase
|
||||
import com.navinfo.collect.library.data.entity.NiLocation
|
||||
import com.navinfo.collect.library.data.entity.NoteBean
|
||||
import com.navinfo.collect.library.data.entity.QsRecordBean
|
||||
import com.navinfo.collect.library.data.entity.RenderEntity
|
||||
import com.navinfo.collect.library.data.entity.TaskBean
|
||||
import com.navinfo.collect.library.data.entity.*
|
||||
import com.navinfo.collect.library.map.NIMapController
|
||||
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.omqs.Constant
|
||||
@ -91,6 +88,9 @@ class MainViewModel @Inject constructor(
|
||||
//道路名
|
||||
val liveDataRoadName = MutableLiveData<RenderEntity?>()
|
||||
|
||||
//捕捉到新增的link
|
||||
val liveDataTaskLink = MutableLiveData<String>()
|
||||
|
||||
/**
|
||||
* 当前选中的要展示的详细信息的要素
|
||||
*/
|
||||
@ -150,6 +150,12 @@ class MainViewModel @Inject constructor(
|
||||
liveDataNILocationList.value = list
|
||||
}
|
||||
})
|
||||
mapController.lineHandler.setOnTaskLinkItemClickListener(object :
|
||||
OnTaskLinkItemClickListener {
|
||||
override fun onTaskLink(taskLinkId: String) {
|
||||
liveDataTaskLink.value = taskLinkId
|
||||
}
|
||||
})
|
||||
|
||||
initLocation()
|
||||
|
||||
@ -159,7 +165,9 @@ class MainViewModel @Inject constructor(
|
||||
// testPoint = it
|
||||
//线选择状态
|
||||
if (bSelectRoad) {
|
||||
captureLink(it)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
captureLink(it)
|
||||
}
|
||||
} else {
|
||||
captureItem(it)
|
||||
}
|
||||
@ -169,7 +177,7 @@ class MainViewModel @Inject constructor(
|
||||
initTaskData()
|
||||
initQsRecordData()
|
||||
initNoteData()
|
||||
initNILocationData()
|
||||
// initNILocationData()
|
||||
}
|
||||
}
|
||||
|
||||
@ -227,8 +235,10 @@ class MainViewModel @Inject constructor(
|
||||
mapController.mMapView.context,
|
||||
Constant.USER_DATA_PATH
|
||||
).niLocationDao.findToTaskIdAll(id.toString())
|
||||
list!!.forEach {
|
||||
mapController.markerHandle.addNiLocationMarkerItem(it)
|
||||
if (list != null) {
|
||||
for (location in list) {
|
||||
mapController.markerHandle.addNiLocationMarkerItem(location)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -238,6 +248,17 @@ class MainViewModel @Inject constructor(
|
||||
private fun initLocation() {
|
||||
//用于定位点存储到数据库
|
||||
viewModelScope.launch(Dispatchers.Default) {
|
||||
//用于定位点捕捉道路
|
||||
mapController.locationLayerHandler.niLocationFlow.collectLatest { location ->
|
||||
if (!isSelectRoad()) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
captureLink(
|
||||
GeoPoint(
|
||||
location.latitude,
|
||||
location.longitude
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
mapController.locationLayerHandler.niLocationFlow.collect { location ->
|
||||
val geometry = GeometryTools.createGeometry(
|
||||
GeoPoint(
|
||||
@ -285,17 +306,6 @@ class MainViewModel @Inject constructor(
|
||||
//mapController.mMapView.vtmMap.updateMap(true)
|
||||
}
|
||||
}
|
||||
//用于定位点捕捉道路
|
||||
viewModelScope.launch(Dispatchers.Default) {
|
||||
mapController.locationLayerHandler.niLocationFlow.collectLatest { location ->
|
||||
if (!isSelectRoad()) captureLink(
|
||||
GeoPoint(
|
||||
location.latitude,
|
||||
location.longitude
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
//显示轨迹图层
|
||||
mapController.layerManagerHandler.showNiLocationLayer()
|
||||
@ -312,6 +322,7 @@ class MainViewModel @Inject constructor(
|
||||
/**
|
||||
* 捕获道路和面板
|
||||
*/
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
private suspend fun captureLink(point: GeoPoint) {
|
||||
|
||||
val linkList = realmOperateHelper.queryLink(
|
||||
|
@ -39,6 +39,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import io.realm.Realm
|
||||
import io.realm.RealmList
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import org.oscim.core.GeoPoint
|
||||
import java.io.File
|
||||
@ -109,7 +110,7 @@ class EvaluationResultViewModel @Inject constructor(
|
||||
init {
|
||||
liveDataQsRecordBean.value = QsRecordBean(id = UUID.randomUUID().toString())
|
||||
viewModelScope.launch {
|
||||
mapController.onMapClickFlow.collect {
|
||||
mapController.onMapClickFlow.collectLatest {
|
||||
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(it).toText()
|
||||
mapController.markerHandle.addMarker(it, markerTitle)
|
||||
viewModelScope.launch {
|
||||
|
@ -36,6 +36,13 @@ class TaskLinkFragment : BaseFragment(), View.OnClickListener {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
||||
arguments?.let {
|
||||
val id = it.getString("TaskLinkId")
|
||||
if (id != null && id.isNotEmpty()){
|
||||
viewModel.initData(id)
|
||||
}
|
||||
}
|
||||
|
||||
binding.taskLinkAddPoint.setOnClickListener(this)
|
||||
binding.taskLinkKind.setOnClickListener(this)
|
||||
binding.taskLinkFunctionalLevel.setOnClickListener(this)
|
||||
@ -44,6 +51,8 @@ class TaskLinkFragment : BaseFragment(), View.OnClickListener {
|
||||
binding.taskLinkBarSave.setOnClickListener(this)
|
||||
binding.taskLinkBack.setOnClickListener(this)
|
||||
binding.taskLinkClear.setOnClickListener(this)
|
||||
binding.taskLinkBarDelete.setOnClickListener(this)
|
||||
|
||||
/**
|
||||
* 数据操作结束
|
||||
*/
|
||||
@ -150,6 +159,9 @@ class TaskLinkFragment : BaseFragment(), View.OnClickListener {
|
||||
binding.taskLinkClear -> {
|
||||
viewModel.clearLink()
|
||||
}
|
||||
binding.taskLinkBarDelete ->{
|
||||
viewModel.deleteData(requireContext())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +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
|
||||
@ -8,15 +10,18 @@ import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.navinfo.collect.library.data.entity.HadLinkDvoBean
|
||||
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.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
|
||||
@ -102,6 +107,11 @@ class TaskLinkViewModel @Inject constructor(
|
||||
*/
|
||||
val liveDataTaskBean = MutableLiveData<TaskBean?>()
|
||||
|
||||
/**
|
||||
* 当前正在编辑的线
|
||||
*/
|
||||
private var hadLinkDvoBean: HadLinkDvoBean? = null
|
||||
|
||||
/**
|
||||
* 当前正在选择哪个数据 1:种别 2:功能等级 3:数据等级
|
||||
*/
|
||||
@ -184,26 +194,50 @@ class TaskLinkViewModel @Inject constructor(
|
||||
liveDataToastMessage.postValue("请选择数据等级!")
|
||||
return@launch
|
||||
}
|
||||
val linkBean = HadLinkDvoBean(
|
||||
// taskId = liveDataTaskBean.value!!.id,
|
||||
linkPid = UUID.randomUUID().toString(),
|
||||
linkStatus = 3,
|
||||
length = mapController.measureLayerHandler.lineLengthLiveData.value!!,
|
||||
geometry = GeometryTools.getLineString(mapController.measureLayerHandler.mPathLayer.points),
|
||||
linkInfo = LinkInfoBean(
|
||||
val task: TaskBean = liveDataTaskBean.value!!
|
||||
if (hadLinkDvoBean != null) {
|
||||
hadLinkDvoBean!!.taskId = liveDataTaskBean.value!!.id
|
||||
hadLinkDvoBean!!.length =
|
||||
mapController.measureLayerHandler.lineLengthLiveData.value!!
|
||||
hadLinkDvoBean!!.geometry =
|
||||
GeometryTools.getLineString(mapController.measureLayerHandler.mPathLayer.points)
|
||||
hadLinkDvoBean!!.linkInfo = LinkInfoBean(
|
||||
kind = liveDataSelectKind.value!!.type,
|
||||
functionLevel = liveDataSelectFunctionLevel.value!!.type,
|
||||
dataLevel = liveDataSelectDataLevel.value!!.type,
|
||||
)
|
||||
)
|
||||
val task: TaskBean = liveDataTaskBean.value!!
|
||||
task.hadLinkDvoList.add(linkBean)
|
||||
for (l in task.hadLinkDvoList) {
|
||||
if (l.linkPid == hadLinkDvoBean!!.linkPid) {
|
||||
task.hadLinkDvoList.remove(l)
|
||||
task.hadLinkDvoList.add(hadLinkDvoBean)
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
hadLinkDvoBean = HadLinkDvoBean(
|
||||
taskId = liveDataTaskBean.value!!.id,
|
||||
linkPid = UUID.randomUUID().toString(),
|
||||
linkStatus = 3,
|
||||
length = mapController.measureLayerHandler.lineLengthLiveData.value!!,
|
||||
geometry = GeometryTools.getLineString(mapController.measureLayerHandler.mPathLayer.points),
|
||||
linkInfo = LinkInfoBean(
|
||||
kind = liveDataSelectKind.value!!.type,
|
||||
functionLevel = liveDataSelectFunctionLevel.value!!.type,
|
||||
dataLevel = liveDataSelectDataLevel.value!!.type,
|
||||
)
|
||||
)
|
||||
task.hadLinkDvoList.add(hadLinkDvoBean)
|
||||
}
|
||||
|
||||
|
||||
val realm = Realm.getDefaultInstance()
|
||||
realm.executeTransaction {
|
||||
it.copyToRealmOrUpdate(hadLinkDvoBean)
|
||||
it.copyToRealmOrUpdate(task)
|
||||
}
|
||||
mapController.lineHandler.addTaskLink(linkBean)
|
||||
sharedPreferences.edit().putString(Constant.SHARED_SYNC_TASK_LINK_ID, linkBean.linkPid)
|
||||
mapController.lineHandler.addTaskLink(hadLinkDvoBean!!)
|
||||
sharedPreferences.edit()
|
||||
.putString(Constant.SHARED_SYNC_TASK_LINK_ID, hadLinkDvoBean!!.linkPid)
|
||||
.apply()
|
||||
liveDataFinish.postValue(true)
|
||||
}
|
||||
@ -231,4 +265,87 @@ class TaskLinkViewModel @Inject constructor(
|
||||
fun clearLink() {
|
||||
mapController.measureLayerHandler.clear()
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
fun initData(id: String) {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val realm = Realm.getDefaultInstance()
|
||||
val objects =
|
||||
realm.where(HadLinkDvoBean::class.java).equalTo("linkPid", id)
|
||||
.findFirst()
|
||||
objects?.linkInfo?.let {
|
||||
for (kind in kindList) {
|
||||
if (kind.type == it.kind) {
|
||||
liveDataSelectKind.postValue(kind)
|
||||
break
|
||||
}
|
||||
}
|
||||
for (function in functionLevelList) {
|
||||
if (function.type == it.functionLevel) {
|
||||
liveDataSelectFunctionLevel.postValue(function)
|
||||
break
|
||||
}
|
||||
}
|
||||
for (data in dataLevelList) {
|
||||
if (data.type == it.dataLevel) {
|
||||
liveDataSelectDataLevel.postValue(data)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
val task =
|
||||
realm.where(TaskBean::class.java).equalTo("id", objects?.taskId)
|
||||
.findFirst()
|
||||
|
||||
if (task != null) {
|
||||
liveDataTaskBean.postValue(realm.copyFromRealm(task))
|
||||
}
|
||||
hadLinkDvoBean = realm.copyFromRealm(objects)
|
||||
withContext(Dispatchers.Main) {
|
||||
mapController.measureLayerHandler.initPathLine(hadLinkDvoBean?.geometry!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除数据
|
||||
*/
|
||||
fun deleteData(context: Context) {
|
||||
if(hadLinkDvoBean == null){
|
||||
liveDataFinish.value = true
|
||||
return
|
||||
}
|
||||
val mDialog = FirstDialog(context)
|
||||
mDialog.setTitle("提示?")
|
||||
mDialog.setMessage("是否删除Mark,请确认!")
|
||||
mDialog.setPositiveButton("确定"
|
||||
) { _, _ ->
|
||||
mDialog.dismiss()
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val realm = Realm.getDefaultInstance()
|
||||
realm.executeTransaction {
|
||||
val task = it.where(TaskBean::class.java).equalTo("id",hadLinkDvoBean!!.taskId).findFirst()
|
||||
if(task != null) {
|
||||
for (h in task.hadLinkDvoList) {
|
||||
if(h.linkPid == hadLinkDvoBean!!.linkPid)
|
||||
task.hadLinkDvoList.remove(h)
|
||||
break
|
||||
}
|
||||
realm.copyToRealmOrUpdate(task)
|
||||
}
|
||||
|
||||
// val objects = it.where(HadLinkDvoBean::class.java)
|
||||
// .equalTo("linkPid", hadLinkDvoBean!!.linkPid).findFirst()
|
||||
// objects?.deleteFromRealm()
|
||||
}
|
||||
mapController.lineHandler.removeTaskLink(hadLinkDvoBean!!.linkPid)
|
||||
mapController.mMapView.vtmMap.updateMap(true)
|
||||
liveDataFinish.postValue(true)
|
||||
}
|
||||
}
|
||||
mDialog.setNegativeButton("取消", null)
|
||||
mDialog.show()
|
||||
}
|
||||
}
|
@ -1690,7 +1690,7 @@
|
||||
<m k="speedFlag" v="1">
|
||||
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
|
||||
stroke-width="1.0"></caption>
|
||||
<symbol src="assets:omdb/icon_4004_1.png" symbol-height="46"
|
||||
<symbol src="assets:omdb/icon_4004_0.svg" symbol-height="46"
|
||||
symbol-width="46"></symbol>
|
||||
<!-- <caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"-->
|
||||
<!-- stroke-width="1.0"></caption>-->
|
||||
|
@ -1,12 +1,13 @@
|
||||
package com.navinfo.collect.library.data.entity
|
||||
|
||||
import io.realm.RealmObject
|
||||
import io.realm.annotations.PrimaryKey
|
||||
|
||||
open class HadLinkDvoBean @JvmOverloads constructor(
|
||||
// /**
|
||||
// * 任务id,方便捕捉查询
|
||||
// */
|
||||
// var taskId: Int = 0,
|
||||
/**
|
||||
* 任务id,方便捕捉查询
|
||||
*/
|
||||
var taskId: Int = 0,
|
||||
/**
|
||||
* 图幅号
|
||||
*/
|
||||
@ -14,6 +15,7 @@ open class HadLinkDvoBean @JvmOverloads constructor(
|
||||
/**
|
||||
* linkPid
|
||||
*/
|
||||
@PrimaryKey
|
||||
var linkPid: String = "",
|
||||
/**
|
||||
* (几何)加偏后
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.navinfo.collect.library.map
|
||||
|
||||
import android.os.Build
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.navinfo.collect.library.map.handler.*
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.navinfo.collect.library.map.handler
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.navinfo.collect.library.map.NIMapView
|
||||
import org.oscim.layers.Layer
|
||||
@ -10,6 +10,7 @@ abstract class BaseHandler(context: AppCompatActivity, mapView: NIMapView) {
|
||||
protected val mMapView: NIMapView = mapView
|
||||
|
||||
fun addLayer(layer: Layer, groupType: NIMapView.LAYER_GROUPS) {
|
||||
Log.e("jingo", "增加了图层 ${layer.toString()}")
|
||||
mMapView.vtmMap.layers().add(
|
||||
layer,
|
||||
groupType.groupIndex
|
||||
@ -17,11 +18,11 @@ abstract class BaseHandler(context: AppCompatActivity, mapView: NIMapView) {
|
||||
}
|
||||
|
||||
fun removeLayer(layer: Layer) {
|
||||
Log.e("jingo", "移除了图层 ${layer.toString()}")
|
||||
mMapView.vtmMap.layers().remove(layer)
|
||||
}
|
||||
|
||||
|
||||
|
||||
// fun setOnMapClickListener(listener: NIMapView.OnMapClickListener) {
|
||||
// mMapView.setOnMapClickListener(listener)
|
||||
// }
|
||||
|
@ -36,6 +36,7 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
|
||||
onTaskLinkItemClickListener = listener
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 路口高亮
|
||||
*/
|
||||
@ -183,6 +184,12 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
|
||||
* 增加一条任务高亮线
|
||||
*/
|
||||
fun addTaskLink(linkBean: HadLinkDvoBean) {
|
||||
for (marker in omdbTaskMarkerLayer.itemList) {
|
||||
if ((marker as MarkerItem).title == linkBean.linkPid) {
|
||||
omdbTaskMarkerLayer.removeItem(marker)
|
||||
break
|
||||
}
|
||||
}
|
||||
if (linkBean.linkStatus == 3) {
|
||||
val pointList = GeometryTools.getGeoPoints(linkBean.geometry)
|
||||
val geoPoint = if (pointList.size < 3) {
|
||||
@ -197,7 +204,10 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
|
||||
)
|
||||
omdbTaskMarkerLayer.addItem(marker)
|
||||
}
|
||||
omdbTaskLinkLayer.removeLine(linkBean.linkPid)
|
||||
omdbTaskLinkLayer.addLine(linkBean)
|
||||
omdbTaskLinkLayer.update()
|
||||
mMapView.vtmMap.updateMap(true)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -211,6 +221,8 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
|
||||
}
|
||||
}
|
||||
omdbTaskLinkLayer.removeLine(linkBeanId)
|
||||
omdbTaskLinkLayer.update()
|
||||
mMapView.vtmMap.updateMap(true)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ import com.baidu.location.LocationClientOption.LocationMode
|
||||
import com.navinfo.collect.library.data.entity.NiLocation
|
||||
import com.navinfo.collect.library.map.NIMapView
|
||||
import com.navinfo.collect.library.utils.DateUtils
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.launch
|
||||
import org.oscim.core.GeoPoint
|
||||
@ -29,7 +30,7 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
|
||||
//
|
||||
// }
|
||||
|
||||
val niLocationFlow = MutableSharedFlow<NiLocation>(5)
|
||||
val niLocationFlow = MutableSharedFlow<NiLocation>(3)
|
||||
|
||||
init {
|
||||
///添加定位图层到地图,[NIMapView.LAYER_GROUPS.NAVIGATION] 是最上层layer组
|
||||
@ -72,10 +73,10 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
|
||||
// )
|
||||
|
||||
// if (niLocationListener != null) {
|
||||
getCurrentNiLocation()?.let { it1 ->
|
||||
mContext.lifecycleScope.launch {
|
||||
niLocationFlow.emit(it1)
|
||||
}
|
||||
getCurrentNiLocation()?.let { it1 ->
|
||||
mContext.lifecycleScope.launch(Dispatchers.Default) {
|
||||
niLocationFlow.emit(it1)
|
||||
}
|
||||
|
||||
// }// niLocationListener.call(it1) }
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import android.content.SharedPreferences
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.util.Log
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
@ -536,58 +537,67 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
|
||||
* 添加质检数据marker
|
||||
*/
|
||||
public suspend fun addNiLocationMarkerItem(niLocation: NiLocation) {
|
||||
synchronized(this) {
|
||||
Log.e("jingo", "插入定位点0 ")
|
||||
|
||||
var itemizedLayer: ItemizedLayer? = null
|
||||
var itemizedLayer: ItemizedLayer? = null
|
||||
|
||||
val direction: Double = niLocation.direction
|
||||
val direction: Double = niLocation.direction
|
||||
|
||||
val geoMarkerItem: MarkerItem = ClusterMarkerItem(
|
||||
niLocation,
|
||||
niLocation.id,
|
||||
niLocation.time,
|
||||
GeoPoint(niLocation.latitude, niLocation.longitude)
|
||||
)
|
||||
val geoMarkerItem: MarkerItem = ClusterMarkerItem(
|
||||
niLocation,
|
||||
niLocation.id,
|
||||
niLocation.time,
|
||||
GeoPoint(niLocation.latitude, niLocation.longitude)
|
||||
)
|
||||
|
||||
//角度
|
||||
when (niLocation.media) {
|
||||
0 -> {
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
if (direction != 0.0) {
|
||||
val symbolGpsTemp =
|
||||
MarkerSymbol(niLocationBitmap, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolGpsTemp
|
||||
geoMarkerItem.setRotation(direction.toFloat())
|
||||
} else {
|
||||
val symbolGpsTemp =
|
||||
MarkerSymbol(niLocationBitmap2, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolGpsTemp
|
||||
//角度
|
||||
when (niLocation.media) {
|
||||
0 -> {
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
if (direction != 0.0) {
|
||||
val symbolGpsTemp =
|
||||
MarkerSymbol(niLocationBitmap, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolGpsTemp
|
||||
geoMarkerItem.setRotation(direction.toFloat())
|
||||
} else {
|
||||
val symbolGpsTemp =
|
||||
MarkerSymbol(niLocationBitmap2, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolGpsTemp
|
||||
}
|
||||
Log.e(
|
||||
"jingo",
|
||||
"插入定位点1 ${geoMarkerItem.geoPoint.longitude} ${geoMarkerItem.geoPoint.latitude}"
|
||||
)
|
||||
niLocationItemizedLayer.addItem(geoMarkerItem)
|
||||
itemizedLayer = niLocationItemizedLayer
|
||||
}
|
||||
niLocationItemizedLayer.addItem(geoMarkerItem)
|
||||
itemizedLayer = niLocationItemizedLayer
|
||||
}
|
||||
|
||||
1 -> {
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
if (direction != 0.0) {
|
||||
val symbolLidarTemp =
|
||||
MarkerSymbol(niLocationBitmap1, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolLidarTemp
|
||||
geoMarkerItem.setRotation(direction.toFloat())
|
||||
} else {
|
||||
val symbolGpsTemp =
|
||||
MarkerSymbol(niLocationBitmap3, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolGpsTemp
|
||||
1 -> {
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
//角度不为0时需要预先设置marker样式并进行角度设置,否则使用图层默认的sym即可
|
||||
if (direction != 0.0) {
|
||||
val symbolLidarTemp =
|
||||
MarkerSymbol(niLocationBitmap1, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolLidarTemp
|
||||
geoMarkerItem.setRotation(direction.toFloat())
|
||||
} else {
|
||||
val symbolGpsTemp =
|
||||
MarkerSymbol(niLocationBitmap3, MarkerSymbol.HotspotPlace.CENTER, false)
|
||||
geoMarkerItem.marker = symbolGpsTemp
|
||||
}
|
||||
Log.e(
|
||||
"jingo",
|
||||
"插入定位点2 ${geoMarkerItem.geoPoint.longitude} ${geoMarkerItem.geoPoint.latitude}"
|
||||
)
|
||||
niLocationItemizedLayer.addItem(geoMarkerItem)
|
||||
itemizedLayer = niLocationItemizedLayer
|
||||
}
|
||||
niLocationItemizedLayer.addItem(geoMarkerItem)
|
||||
itemizedLayer = niLocationItemizedLayer
|
||||
}
|
||||
|
||||
}
|
||||
itemizedLayer?.update()
|
||||
}
|
||||
|
||||
itemizedLayer!!.update()
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,11 +3,9 @@ package com.navinfo.collect.library.map.handler
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.os.Build
|
||||
import android.text.TextPaint
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.navinfo.collect.library.R
|
||||
@ -453,6 +451,32 @@ open class MeasureLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化线数据, 用来二次编辑
|
||||
*/
|
||||
fun initPathLine(geometry: String) {
|
||||
bDrawLine = true
|
||||
mPathLayer.isEnabled = true
|
||||
mPathLayerTemp.isEnabled = true
|
||||
val pointList = GeometryTools.getGeoPoints(geometry)
|
||||
mPathLayer.setPoints(pointList)
|
||||
for (point in pointList) {
|
||||
val markerItem = MarkerItem(createUUID(), "", "", point)
|
||||
markerLayer.addItem(markerItem)
|
||||
mPathMakers.add(markerItem)
|
||||
}
|
||||
if (mPathLayer.points.size > 1) {
|
||||
val distance: Double = GeometryTools.getDistance(mPathLayer.points)
|
||||
val bg = BigDecimal(distance)
|
||||
val f1 = bg.setScale(3, BigDecimal.ROUND_HALF_UP).toDouble()
|
||||
lineLengthLiveData.value = f1
|
||||
tempLineDistanceLiveData.value = "${f1}米"
|
||||
} else {
|
||||
lineLengthLiveData.value = 0.000
|
||||
}
|
||||
mMapView.updateMap(true)
|
||||
}
|
||||
|
||||
private val itemGestureListener: OnItemGestureListener<MarkerInterface> =
|
||||
object : OnItemGestureListener<MarkerInterface> {
|
||||
override fun onItemSingleTapUp(index: Int, item: MarkerInterface): Boolean {
|
||||
|
@ -59,12 +59,11 @@ class OmdbTaskLinkLayer(map: Map, private var style: Style) : VectorLayer(map) {
|
||||
update()
|
||||
}
|
||||
|
||||
fun removeLine(linkPid: String): Boolean {
|
||||
fun removeLine(linkPid: String) {
|
||||
if (lineMap.containsKey(linkPid)) {
|
||||
super.remove(lineMap[linkPid])
|
||||
lineMap.remove(linkPid)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fun removeLine(geometry: Geometry) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user