diff --git a/app/src/main/java/com/navinfo/omqs/bean/TraceVideoBean.kt b/app/src/main/java/com/navinfo/omqs/bean/TraceVideoBean.kt new file mode 100644 index 00000000..f8d0da42 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/bean/TraceVideoBean.kt @@ -0,0 +1,8 @@ +package com.navinfo.omqs.bean + +data class TraceVideoBean( + var userid: String = "", + var playMode: String = "", + var time: String = "", + var command: String = "", +) \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt index beca12b6..2570f031 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt @@ -6,8 +6,7 @@ import com.navinfo.omqs.bean.IndoorConnectionInfoBean import com.navinfo.omqs.bean.LoginUserBean import com.navinfo.omqs.bean.QRCodeBean import com.navinfo.omqs.bean.SysUserBean -import okhttp3.ResponseBody -import retrofit2.Response +import com.navinfo.omqs.bean.TraceVideoBean /** @@ -38,4 +37,9 @@ interface NetworkService { * 更新用户信息 */ suspend fun updateServerInfo(url: String,indoorConnectionInfoBean: IndoorConnectionInfoBean): NetResult + + /** + * 设置轨迹对应的视频 + */ + suspend fun sendServerCommand(url: String,traceVideoBean: TraceVideoBean): NetResult } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt index e2ce3a7e..059229b8 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt @@ -6,6 +6,7 @@ import com.navinfo.omqs.bean.IndoorConnectionInfoBean import com.navinfo.omqs.bean.LoginUserBean import com.navinfo.omqs.bean.QRCodeBean import com.navinfo.omqs.bean.SysUserBean +import com.navinfo.omqs.bean.TraceVideoBean import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import okhttp3.ResponseBody @@ -110,6 +111,33 @@ class NetworkServiceImpl @Inject constructor( map["baseurl"] = indoorConnectionInfoBean.baseurl map["platform"] = indoorConnectionInfoBean.platform + val result = netApi.retrofitUpdateServerInfo(url,map) + if (result.isSuccessful) { + if (result.code() == 200) { + NetResult.Success(result.body()) + } else { + NetResult.Failure(result.code(), result.message()) + } + } else { + NetResult.Failure(result.code(), result.message()) + } + } catch (e: Exception) { + NetResult.Error(e) + } + } + + override suspend fun sendServerCommand( + url: String, + traceVideoBean: TraceVideoBean + ): NetResult = + //在IO线程中运行 + withContext(Dispatchers.IO) { + return@withContext try { + val map: MutableMap = HashMap() + map["userid"] = traceVideoBean.userid + map["playMode"] = traceVideoBean.playMode + map["time"] = traceVideoBean.time + val result = netApi.retrofitUpdateServerInfo(url,map) if (result.isSuccessful) { if (result.code() == 200) { 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 f2e296c2..a36d1cb2 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 @@ -20,11 +20,13 @@ import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.navinfo.collect.library.data.entity.NiLocation import com.navinfo.collect.library.map.NIMapController import com.navinfo.omqs.Constant import com.navinfo.omqs.R import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.bean.SignBean +import com.navinfo.omqs.bean.TraceVideoBean import com.navinfo.omqs.databinding.ActivityMainBinding import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager import com.navinfo.omqs.tools.LayerConfigUtils @@ -34,12 +36,14 @@ import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapFragment import com.navinfo.omqs.ui.fragment.qsrecordlist.QsRecordListFragment import com.navinfo.omqs.ui.fragment.signMoreInfo.SignMoreInfoFragment import com.navinfo.omqs.ui.fragment.tasklist.TaskManagerFragment +import com.navinfo.omqs.ui.other.BaseToast import com.navinfo.omqs.ui.widget.RecyclerViewSpacesItemDecoration import com.navinfo.omqs.util.FlowEventBus import com.navinfo.omqs.util.SpeakMode import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import org.oscim.core.GeoPoint +import org.oscim.layers.marker.MarkerItem import org.oscim.renderer.GLViewport import org.videolan.vlc.Util import java.math.BigDecimal @@ -227,7 +231,10 @@ class MainActivity : BaseActivity() { //捕捉列表变化回调 viewModel.liveDataNILocationList.observe(this) { if(viewModel.isSelectTrace()){ - Toast.makeText(this,"轨迹被点击了",Toast.LENGTH_LONG).show() + //Toast.makeText(this,"轨迹被点击了",Toast.LENGTH_LONG).show() + viewModel.showMarker(this,it) + val traceVideoBean = TraceVideoBean(command = "videotime?", userid = Constant.USER_ID, time = "${it.time}:000") + viewModel.sendServerCommand(this,traceVideoBean) } } @@ -535,10 +542,17 @@ class MainActivity : BaseActivity() { @RequiresApi(Build.VERSION_CODES.N) fun tracePointsOnclick() { viewModel.setSelectTrace(!viewModel.isSelectTrace()) + binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() + if(viewModel.isSelectTrace()){ Toast.makeText(this,"请选择轨迹点!",Toast.LENGTH_LONG).show() + //调用撤销自动播放 + binding.mainActivitySnapshotFinish.isEnabled = false + binding.mainActivitySnapshotRewind.isEnabled = false + binding.mainActivitySnapshotPause.isEnabled = false + binding.mainActivitySnapshotNext.isEnabled = false + viewModel.cancelTrace() } - binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() } /** @@ -550,6 +564,7 @@ class MainActivity : BaseActivity() { viewModel.setSelectTrace(false) viewModel.setMediaFlag(false) viewModel.setSelectPauseTrace(false) + binding.mainActivityMenuIndoorGroup.visibility = View.GONE binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag() binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() @@ -569,7 +584,16 @@ class MainActivity : BaseActivity() { */ @RequiresApi(Build.VERSION_CODES.N) fun rewindTraceOnclick() { - pasePlayTrace() + pausePlayTrace() + val item = mapController.markerHandle.getNILocation(viewModel.currentIndexNiLocation-1) + if(item!=null){ + viewModel.currentIndexNiLocation = viewModel.currentIndexNiLocation-1 + viewModel.showMarker(this,(item as MarkerItem).uid as NiLocation) + val traceVideoBean = TraceVideoBean(command = "videotime?", userid = Constant.USER_ID, time = "${(item.uid as NiLocation).time}:000") + viewModel.sendServerCommand(this,traceVideoBean) + }else{ + dealNoData() + } } /** @@ -581,6 +605,41 @@ class MainActivity : BaseActivity() { binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() viewModel.setSelectTrace(false) binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() + if(viewModel.isSelectPauseTrace()){ + playVideo() + }else{ + pauseVideo() + viewModel.cancelTrace() + } + } + + @RequiresApi(Build.VERSION_CODES.N) + fun playVideo(){ + if (mapController.markerHandle.getCurrentMark()==null) { + BaseToast.makeText(this, "请先选择轨迹点!", BaseToast.LENGTH_SHORT).show() + return + } + viewModel.setSelectTrace(false) + binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() + val traceVideoBean = TraceVideoBean(command = "playVideo?", userid = Constant.USER_ID) + viewModel.sendServerCommand(this,traceVideoBean) + } + + /** + * 设置为播放状态 + */ + @RequiresApi(Build.VERSION_CODES.N) + fun setPlayStatus() { + //切换为播放 + viewModel.setSelectPauseTrace(true) + binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() + playVideo() + } + + @RequiresApi(Build.VERSION_CODES.N) + fun pauseVideo(){ + val traceVideoBean = TraceVideoBean(command = "pauseVideo?", userid = Constant.USER_ID) + viewModel.sendServerCommand(this,traceVideoBean) } /** @@ -588,15 +647,38 @@ class MainActivity : BaseActivity() { */ @RequiresApi(Build.VERSION_CODES.N) fun nextTraceOnclick() { - pasePlayTrace() + pausePlayTrace() + val item = mapController.markerHandle.getNILocation(viewModel.currentIndexNiLocation+1) + if(item!=null){ + viewModel.currentIndexNiLocation = viewModel.currentIndexNiLocation+1 + viewModel.showMarker(this,(item as MarkerItem).uid as NiLocation) + val traceVideoBean = TraceVideoBean(command = "videotime?", userid = Constant.USER_ID, time = "${(item.uid as NiLocation).time}:000") + viewModel.sendServerCommand(this,traceVideoBean) + }else{ + dealNoData() + } } @RequiresApi(Build.VERSION_CODES.N) - fun pasePlayTrace() { + private fun dealNoData() { + BaseToast.makeText(this, "无数据了!", Toast.LENGTH_SHORT).show() + + //无数据时自动暂停播放,并停止轨迹 + if (viewModel.isSelectPauseTrace()) { + pauseVideo() + viewModel.cancelTrace() + viewModel.setSelectPauseTrace(false) + binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() + } + } + + @RequiresApi(Build.VERSION_CODES.N) + fun pausePlayTrace() { viewModel.setSelectTrace(false) binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() viewModel.setSelectPauseTrace(false) binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() + viewModel.cancelTrace() } 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 6a0b84ab..aa4b38f6 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 @@ -15,10 +15,10 @@ import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.PopupWindow +import android.widget.Toast import androidx.annotation.RequiresApi import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import androidx.lifecycle.lifecycleScope import androidx.lifecycle.viewModelScope import androidx.navigation.findNavController import com.blankj.utilcode.util.ToastUtils @@ -35,10 +35,16 @@ import com.navinfo.collect.library.utils.GeometryToolsKt import com.navinfo.omqs.Constant import com.navinfo.omqs.R import com.navinfo.omqs.bean.ImportConfig +import com.navinfo.omqs.bean.QRCodeBean import com.navinfo.omqs.bean.SignBean +import com.navinfo.omqs.bean.TraceVideoBean import com.navinfo.omqs.db.RealmOperateHelper +import com.navinfo.omqs.http.NetResult +import com.navinfo.omqs.http.NetworkService +import com.navinfo.omqs.ui.activity.scan.QrCodeStatus import com.navinfo.omqs.ui.dialog.CommonDialog import com.navinfo.omqs.ui.manager.TakePhotoManager +import com.navinfo.omqs.ui.other.BaseToast import com.navinfo.omqs.ui.widget.SignUtil import com.navinfo.omqs.util.DateTimeUtil import com.navinfo.omqs.util.SoundMeter @@ -56,6 +62,7 @@ import org.oscim.core.MapPosition import org.oscim.map.Map import org.videolan.libvlc.LibVlcUtil import java.io.File +import java.io.IOException import java.util.* import javax.inject.Inject @@ -69,6 +76,7 @@ class MainViewModel @Inject constructor( private val mapController: NIMapController, private val traceDataBase: TraceDataBase, private val realmOperateHelper: RealmOperateHelper, + private val networkService: NetworkService, private val sharedPreferences: SharedPreferences ) : ViewModel() { @@ -97,6 +105,8 @@ class MainViewModel @Inject constructor( */ val liveDataSignMoreInfo = MutableLiveData() + private var traceTag: String = "TRACE_TAG" + // var testPoint = GeoPoint(0, 0) //uuid标识,用于记录轨迹组 @@ -120,6 +130,9 @@ class MainViewModel @Inject constructor( val liveDataCenterPoint = MutableLiveData() + //状态 + val qrCodeStatus: MutableLiveData = MutableLiveData() + /** * 是不是线选择模式 */ @@ -144,6 +157,8 @@ class MainViewModel @Inject constructor( private var lastNiLocaion: NiLocation? = null + var currentIndexNiLocation: Int = 0; + init { mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition -> when (e) { @@ -163,8 +178,9 @@ class MainViewModel @Inject constructor( liveDataNoteIdList.value = list } - override fun onNiLocation(item: NiLocation) { + override fun onNiLocation(index: Int, item: NiLocation) { liveDataNILocationList.value = item + currentIndexNiLocation = index } }) @@ -175,11 +191,11 @@ class MainViewModel @Inject constructor( mapController.onMapClickFlow.collectLatest { // testPoint = it //线选择状态 -/* if (bSelectRoad) { - captureLink(it) - } else { - captureItem(it) - }*/ + /* if (bSelectRoad) { + captureLink(it) + } else { + captureItem(it) + }*/ } } viewModelScope.launch(Dispatchers.IO) { @@ -259,7 +275,7 @@ class MainViewModel @Inject constructor( mapController.locationLayerHandler.niLocationFlow.collect { location -> //过滤掉无效点 - if(!GeometryTools.isCheckError(location.longitude,location.latitude)){ + if (!GeometryTools.isCheckError(location.longitude, location.latitude)) { val geometry = GeometryTools.createGeometry( GeoPoint( location.latitude, location.longitude @@ -289,9 +305,10 @@ class MainViewModel @Inject constructor( if (lastNiLocaion != null) { val disance = GeometryTools.getDistance( location.latitude, location.longitude, - lastNiLocaion!!.latitude, lastNiLocaion!!.longitude) + lastNiLocaion!!.latitude, lastNiLocaion!!.longitude + ) //相距差距大于2.5米以上进行存储 - if (disance > 2.5) { + if (disance > 2.5 && disance < 60) { traceDataBase.niLocationDao.insert(location) mapController.markerHandle.addNiLocationMarkerItem(location) mapController.mMapView.vtmMap.updateMap(true) @@ -299,8 +316,8 @@ class MainViewModel @Inject constructor( } } else { traceDataBase.niLocationDao.insert(location) -/* mapController.markerHandle.addNiLocationMarkerItem(location) - mapController.mMapView.vtmMap.updateMap(true)*/ + mapController.markerHandle.addNiLocationMarkerItem(location) + mapController.mMapView.vtmMap.updateMap(true) lastNiLocaion = location } } @@ -309,7 +326,11 @@ class MainViewModel @Inject constructor( //用于定位点捕捉道路 viewModelScope.launch(Dispatchers.Default) { mapController.locationLayerHandler.niLocationFlow.collectLatest { location -> - if (!isSelectRoad()&&!GeometryTools.isCheckError(location.longitude,location.latitude)) captureLink( + if (!isSelectRoad() && !GeometryTools.isCheckError( + location.longitude, + location.latitude + ) + ) captureLink( GeoPoint( location.latitude, location.longitude @@ -335,11 +356,11 @@ class MainViewModel @Inject constructor( */ @RequiresApi(Build.VERSION_CODES.N) private suspend fun captureLink(point: GeoPoint) { - if(captureLinkState){ + if (captureLinkState) { return } - try{ + try { captureLinkState = true val linkList = realmOperateHelper.queryLink( @@ -437,9 +458,9 @@ class MainViewModel @Inject constructor( liveDataRoadName.postValue(null) } - }catch (e:Exception){ + } catch (e: Exception) { - }finally { + } finally { captureLinkState = false } @@ -673,5 +694,114 @@ class MainViewModel @Inject constructor( liveDataSignMoreInfo.value = data } + fun sendServerCommand(context: Context, traceVideoBean: TraceVideoBean) { + if (TextUtils.isEmpty(Constant.INDOOR_IP)) { + Toast.makeText(context, "获取ip失败!", Toast.LENGTH_LONG).show() + return + } + + viewModelScope.launch(Dispatchers.Default) { + val url = "http://${Constant.INDOOR_IP}:8080/sensor/service/${traceVideoBean.command}?" + + when (val result = networkService.sendServerCommand( + url = url, + traceVideoBean = traceVideoBean + )) { + is NetResult.Success<*> -> { + + if (result.data != null) { + try { + + val defaultUserResponse = result.data as QRCodeBean + + if (defaultUserResponse.errcode == 0) { + + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "命令成功。", + Toast.LENGTH_LONG + ).show() + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS) + } + } else { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "命令无效${defaultUserResponse.errmsg}", + Toast.LENGTH_SHORT + ) + .show() + } + } + + } catch (e: IOException) { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${e.message}", + Toast.LENGTH_SHORT + ).show() + } + } + } + } + + is NetResult.Error<*> -> { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${result.exception.message}", + Toast.LENGTH_SHORT + ) + .show() + } + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE) + } + + is NetResult.Failure<*> -> { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${result.code}:${result.msg}", + Toast.LENGTH_SHORT + ) + .show() + } + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE) + } + + else -> {} + } + + } + + } + + /** + * 显示marker + * @param trackCollection 轨迹点 + * @param type 1 提示最后一个轨迹点 非1提示第一个轨迹点 + */ + fun showMarker(context: Context, niLocation: NiLocation) { + if (mapController.markerHandle != null) { + mapController.markerHandle.removeMarker(traceTag) + if (niLocation != null) { + mapController.markerHandle.addMarker( + GeoPoint( + niLocation.latitude, + niLocation.longitude + ), traceTag, "", niLocation as java.lang.Object + ) + } + } + } + + /** + * 结束自动播放 + */ + fun cancelTrace() { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt index 1e82d3c7..566a92aa 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt @@ -33,6 +33,16 @@ enum class QrCodeStatus { * 信息更新成功 */ QR_CODE_STATUS_SERVER_INFO_SUCCESS, + + /** + * 信息更新轨迹成功 + */ + QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS, + + /** + * 信息更新轨迹失败 + */ + QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE, } @HiltViewModel diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt index 12706f25..876c1ab6 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt @@ -61,6 +61,12 @@ class QrCodeActivity : BaseActivity() { } QrCodeStatus.QR_CODE_STATUS_SERVER_INFO_SUCCESS -> { + } + QrCodeStatus.QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS -> { + + } + QrCodeStatus.QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE -> { + } } } 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..1468539c 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 @@ -212,6 +212,7 @@ class EvaluationResultViewModel @Inject constructor( if (classType2 != null) { classType = classType2 } + classCode = bean.renderEntity.code.toString() } //如果右侧栏没数据,给个默认值 if (liveDataQsRecordBean.value!!.classType.isEmpty()) { @@ -298,11 +299,12 @@ class EvaluationResultViewModel @Inject constructor( /** * 查询问题类型列表 */ - fun getProblemTypeList(classType: String) { + fun getProblemTypeList(scProblemTypeBean: ScProblemTypeBean) { viewModelScope.launch(Dispatchers.IO) { - getProblemList(classType) + getProblemList(scProblemTypeBean.classType) } - classTypeTemp = classType + classTypeTemp = scProblemTypeBean.classType + classCodeTemp = scProblemTypeBean.elementCode } /** @@ -381,7 +383,7 @@ class EvaluationResultViewModel @Inject constructor( GeoPoint( p.latitude, p.longitude - ), markerTitle + ), markerTitle,"",null ) //获取linkid diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt index d5a1f5d5..261b2106 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt @@ -7,7 +7,7 @@ import com.navinfo.omqs.databinding.TextItemSelectBinding import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter import com.navinfo.omqs.ui.other.BaseViewHolder -class LeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) : +class LeftAdapter(private var itemListener: ((Int, ScProblemTypeBean) -> Unit?)? = null) : BaseRecyclerViewAdapter() { private var selectTitle = "" @@ -28,7 +28,7 @@ class LeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) : selectTitle = title.classType notifyDataSetChanged() } - itemListener?.invoke(position, title.classType) + itemListener?.invoke(position, title) } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cdc5c529..774553c2 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -380,6 +380,7 @@ { override fun onItemSingleTapUp(index: Int, item: MarkerInterface?): Boolean { itemListener?.let { - it.onNiLocation((niLocationItemizedLayer.itemList[index] as MarkerItem).uid as NiLocation) + it.onNiLocation(index,(niLocationItemizedLayer.itemList[index] as MarkerItem).uid as NiLocation) } return true } @@ -303,7 +295,8 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : fun addMarker( geoPoint: GeoPoint, title: String?, - description: String? = "" + description: String? = "", + uid: java.lang.Object?=null, ) { var marker: MarkerItem? = null for (e in mDefaultMarkerLayer.itemList) { @@ -318,6 +311,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : tempTitle = StringUtil.createUUID() } val marker = MarkerItem( + uid, tempTitle, description, geoPoint @@ -333,6 +327,14 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : } } + fun getCurrentMark(): MarkerInterface? { + + if(mDefaultMarkerLayer!=null){ + return mDefaultMarkerLayer.itemList[mDefaultMarkerLayer.itemList.size-1] + } + return null + } + /** * 移除marker */ @@ -520,9 +522,13 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : /** * 添加质检数据marker */ - public suspend fun addNiLocationMarkerItem(niLocation: NiLocation) { + fun addNiLocationMarkerItem(niLocation: NiLocation) { + var geoMarkerItem = createNILocationBitmap(niLocation) + niLocationItemizedLayer.addItem(geoMarkerItem) + niLocationItemizedLayer.update() + } - var itemizedLayer: ItemizedLayer? = null + private fun createNILocationBitmap(niLocation: NiLocation): MarkerItem{ val direction: Double = niLocation.direction @@ -548,8 +554,6 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : MarkerSymbol(niLocationBitmap2, MarkerSymbol.HotspotPlace.CENTER, false) geoMarkerItem.marker = symbolGpsTemp } - niLocationItemizedLayer.addItem(geoMarkerItem) - itemizedLayer = niLocationItemizedLayer } 1 -> { @@ -565,14 +569,10 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : MarkerSymbol(niLocationBitmap3, MarkerSymbol.HotspotPlace.CENTER, false) geoMarkerItem.marker = symbolGpsTemp } - niLocationItemizedLayer.addItem(geoMarkerItem) - itemizedLayer = niLocationItemizedLayer } - } - itemizedLayer!!.update() - + return geoMarkerItem } @@ -794,10 +794,22 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : niLocationItemizedLayer.update() } + fun getNILocationItemizedLayerSize():Int{ + return niLocationItemizedLayer.itemList.size + } + + fun getNILocation(index:Int):MarkerInterface?{ + return if(index>-1&&index) fun onNoteList(list: MutableList) - fun onNiLocation(it: NiLocation) + fun onNiLocation(index:Int,it: NiLocation) }