diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index b84b5b45..e72e6c4f 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -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) diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index d650fdf5..8a8f3f70 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -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() + //捕捉到新增的link + val liveDataTaskLink = MutableLiveData() + /** * 当前选中的要展示的详细信息的要素 */ @@ -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( diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt index 0f3fc0ae..468d56d6 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt @@ -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 { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkFragment.kt index 571a1d23..579382bb 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkFragment.kt @@ -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()) + } } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt index 87b32795..6945c9a9 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt @@ -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() + /** + * 当前正在编辑的线 + */ + 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() + } } \ No newline at end of file diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 06448ea1..0b7a0264 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -1690,7 +1690,7 @@ - diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt index 3bfef3e0..8b486d45 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/HadLinkDvoBean.kt @@ -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 = "", /** * (几何)加偏后 diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapController.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapController.kt index d449d4a2..89004106 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapController.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapController.kt @@ -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.* diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/BaseHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/BaseHandler.kt index 6e3240a0..1efce364 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/BaseHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/BaseHandler.kt @@ -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) // } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LineHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LineHandler.kt index 0cdee3b3..c52bbd7e 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LineHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LineHandler.kt @@ -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) } } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt index 851d095c..0743a60d 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt @@ -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(5) + val niLocationFlow = MutableSharedFlow(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) } } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt index 26c97517..13030488 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt @@ -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() - } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MeasureLayerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MeasureLayerHandler.kt index 237afa13..289e58b5 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MeasureLayerHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MeasureLayerHandler.kt @@ -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 = object : OnItemGestureListener { override fun onItemSingleTapUp(index: Int, item: MarkerInterface): Boolean { diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/layers/OmdbTaskLinkLayer.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/layers/OmdbTaskLinkLayer.kt index 0b82d09e..c44d2405 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/layers/OmdbTaskLinkLayer.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/layers/OmdbTaskLinkLayer.kt @@ -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) {