增加室内整理工具反向控制

This commit is contained in:
qiji4215 2023-07-19 17:01:02 +08:00
parent 063927653a
commit 45de9982fc
8 changed files with 272 additions and 111 deletions

View File

@ -185,6 +185,7 @@ class MainActivity : BaseActivity() {
MotionEvent.ACTION_DOWN -> {
voiceOnTouchStart()//Do Something
}
MotionEvent.ACTION_UP -> {
voiceOnTouchStop()//Do Something
}
@ -235,13 +236,18 @@ class MainActivity : BaseActivity() {
)
}
//捕捉列表变化回调
//捕捉轨迹点
viewModel.liveDataNILocationList.observe(this) {
if(viewModel.isSelectTrace()){
if (viewModel.isSelectTrace()) {
//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)
viewModel.showMarker(this, it)
viewModel.setCurrentIndexNiLocation(it)
val traceVideoBean = TraceVideoBean(
command = "videotime?",
userid = Constant.USER_ID,
time = "${it.time}:000"
)
viewModel.sendServerCommand(this, traceVideoBean,IndoorToolsCommand.SELECT_POINT)
}
}
@ -321,6 +327,49 @@ class MainActivity : BaseActivity() {
}
}
viewModel.liveIndoorToolsResp.observe(this){
when(it){
IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS->{
if(viewModel.indoorToolsCommand==IndoorToolsCommand.SELECT_POINT){
selectPointFinish(true)
}
}
IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE->{
if(viewModel.indoorToolsCommand==IndoorToolsCommand.SELECT_POINT){
selectPointFinish(false)
}
}
}
}
//室内整理工具反向控制
viewModel.liveIndoorToolsCommand.observe(this) {
when (it) {
IndoorToolsCommand.PLAY -> {
setPlayStatus()
}
IndoorToolsCommand.INDEXING -> {
pausePlayTrace()
}
IndoorToolsCommand.SELECT_POINT -> {
}
IndoorToolsCommand.NEXT -> {
}
IndoorToolsCommand.REWIND -> {
}
IndoorToolsCommand.STOP -> {
//切换为暂停状态
pausePlayTrace()
}
}
}
lifecycleScope.launch {
// 初始化地图图层控制接收器
FlowEventBus.subscribe<List<ImportConfig>>(
@ -551,13 +600,10 @@ class MainActivity : BaseActivity() {
viewModel.setSelectTrace(!viewModel.isSelectTrace())
binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace()
if(viewModel.isSelectTrace()){
Toast.makeText(this,"请选择轨迹点!",Toast.LENGTH_LONG).show()
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
setViewEnable(false)
viewModel.cancelTrace()
}
}
@ -592,13 +638,17 @@ class MainActivity : BaseActivity() {
@RequiresApi(Build.VERSION_CODES.N)
fun rewindTraceOnclick() {
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{
val item = mapController.markerHandle.getNILocation(viewModel.getCurrentNiLocationIndex() - 1)
if (item != null) {
viewModel.setCurrentIndexLoction(viewModel.getCurrentNiLocationIndex() - 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,IndoorToolsCommand.REWIND)
} else {
dealNoData()
}
}
@ -612,24 +662,24 @@ class MainActivity : BaseActivity() {
binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace()
viewModel.setSelectTrace(false)
binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace()
if(viewModel.isSelectPauseTrace()){
if (viewModel.isSelectPauseTrace()) {
playVideo()
}else{
} else {
pauseVideo()
viewModel.cancelTrace()
}
}
@RequiresApi(Build.VERSION_CODES.N)
fun playVideo(){
if (mapController.markerHandle.getCurrentMark()==null) {
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)
viewModel.sendServerCommand(this, traceVideoBean,IndoorToolsCommand.PLAY)
}
/**
@ -644,9 +694,9 @@ class MainActivity : BaseActivity() {
}
@RequiresApi(Build.VERSION_CODES.N)
fun pauseVideo(){
fun pauseVideo() {
val traceVideoBean = TraceVideoBean(command = "pauseVideo?", userid = Constant.USER_ID)
viewModel.sendServerCommand(this,traceVideoBean)
viewModel.sendServerCommand(this, traceVideoBean,IndoorToolsCommand.STOP)
}
/**
@ -655,13 +705,17 @@ class MainActivity : BaseActivity() {
@RequiresApi(Build.VERSION_CODES.N)
fun nextTraceOnclick() {
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{
val item = mapController.markerHandle.getNILocation(viewModel.getCurrentNiLocationIndex() + 1)
if (item != null) {
viewModel.setCurrentIndexLoction(viewModel.getCurrentNiLocationIndex()+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,IndoorToolsCommand.NEXT)
} else {
dealNoData()
}
}
@ -688,6 +742,26 @@ class MainActivity : BaseActivity() {
viewModel.cancelTrace()
}
/**
* 选点结束
* @param value true 选点成功 false 选点失败
*/
@RequiresApi(Build.VERSION_CODES.N)
private fun selectPointFinish(value: Boolean) {
if (value) {
setViewEnable(true)
viewModel.setSelectPauseTrace(false)
binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace()
}
}
private fun setViewEnable(value: Boolean){
binding.mainActivitySnapshotRewind.isEnabled = value
binding.mainActivitySnapshotNext.isEnabled = value
binding.mainActivitySnapshotPause.isEnabled = value
binding.mainActivitySnapshotFinish.isEnabled = value
}
/**
* 打开或关闭底部导航栏
@ -708,7 +782,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.N)
@ -769,14 +848,14 @@ class MainActivity : BaseActivity() {
*/
fun showIndoorDataLayout() {
binding.mainActivityMenuIndoorGroup.visibility = View.VISIBLE
if(Constant.INDOOR_IP.isNotEmpty()){
if (Constant.INDOOR_IP.isNotEmpty()) {
setIndoorGroupEnable(true)
}else{
} else {
setIndoorGroupEnable(false)
}
}
private fun setIndoorGroupEnable(enable: Boolean){
private fun setIndoorGroupEnable(enable: Boolean) {
binding.mainActivitySnapshotFinish.isEnabled = enable
binding.mainActivityTraceSnapshotPoints.isEnabled = enable
binding.mainActivitySnapshotMediaFlag.isEnabled = enable

View File

@ -43,6 +43,7 @@ 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.ShareUtil
import com.navinfo.omqs.util.SoundMeter
import com.navinfo.omqs.util.SpeakMode
import dagger.hilt.android.lifecycle.HiltViewModel
@ -74,7 +75,7 @@ class MainViewModel @Inject constructor(
private val realmOperateHelper: RealmOperateHelper,
private val networkService: NetworkService,
private val sharedPreferences: SharedPreferences
) : ViewModel(),SocketServer.OnConnectSinsListener{
) : ViewModel(), SocketServer.OnConnectSinsListener {
private var mCameraDialog: CommonDialog? = null
@ -130,10 +131,10 @@ class MainViewModel @Inject constructor(
val liveDataCenterPoint = MutableLiveData<MapPosition>()
//状态
val qrCodeStatus: MutableLiveData<QrCodeStatus> = MutableLiveData()
val liveIndoorToolsResp: MutableLiveData<IndoorToolsResp> = MutableLiveData()
//状态
val indoorToolsStatus: MutableLiveData<IndoorToolsStatus> = MutableLiveData()
val liveIndoorToolsCommand: MutableLiveData<IndoorToolsCommand> = MutableLiveData()
/**
* 是不是线选择模式
@ -159,9 +160,11 @@ class MainViewModel @Inject constructor(
private var lastNiLocaion: NiLocation? = null
var currentIndexNiLocation: Int = 0
private var currentIndexNiLocation: Int = 0
private var socketServer:SocketServer? = null
private var socketServer: SocketServer? = null
var indoorToolsCommand: IndoorToolsCommand? = null
init {
mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition ->
@ -208,7 +211,7 @@ class MainViewModel @Inject constructor(
initNILocationData()
}
socketServer = SocketServer(mapController,traceDataBase,sharedPreferences)
socketServer = SocketServer(mapController, traceDataBase, sharedPreferences)
}
/**
@ -277,6 +280,7 @@ class MainViewModel @Inject constructor(
@RequiresApi(Build.VERSION_CODES.N)
private fun initLocation() {
val shareUtil = ShareUtil(mapController.mMapView.context, 1)
//用于定位点存储到数据库
viewModelScope.launch(Dispatchers.Default) {
//用于定位点捕捉道路
@ -309,20 +313,20 @@ class MainViewModel @Inject constructor(
}
val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
location.taskId = id.toString()
if (shareUtil.connectstate) {
location.media = 1
}
var disance = 0.0
//增加间距判断
if (lastNiLocaion != null) {
val disance = GeometryTools.getDistance(
disance = GeometryTools.getDistance(
location.latitude, location.longitude,
lastNiLocaion!!.latitude, lastNiLocaion!!.longitude
)
//相距差距大于2.5米以上进行存储
if (disance > 2.5 && disance < 60) {
traceDataBase.niLocationDao.insert(location)
mapController.markerHandle.addNiLocationMarkerItem(location)
mapController.mMapView.vtmMap.updateMap(true)
lastNiLocaion = location
}
} else {
}
//室内整理工具时不能进行轨迹存储判断轨迹间隔要超过2.5并小于60米
if (Constant.INDOOR_IP.isEmpty() && (disance == 0.0 || (disance > 2.5 && disance < 60))) {
traceDataBase.niLocationDao.insert(location)
mapController.markerHandle.addNiLocationMarkerItem(location)
mapController.mMapView.vtmMap.updateMap(true)
@ -699,13 +703,19 @@ class MainViewModel @Inject constructor(
liveDataSignMoreInfo.value = data
}
fun sendServerCommand(context: Context, traceVideoBean: TraceVideoBean) {
fun sendServerCommand(
context: Context,
traceVideoBean: TraceVideoBean,
indoorToolsCommand: IndoorToolsCommand
) {
if (TextUtils.isEmpty(Constant.INDOOR_IP)) {
Toast.makeText(context, "获取ip失败", Toast.LENGTH_LONG).show()
return
}
this.indoorToolsCommand = indoorToolsCommand
viewModelScope.launch(Dispatchers.Default) {
val url = "http://${Constant.INDOOR_IP}:8080/sensor/service/${traceVideoBean.command}?"
@ -728,7 +738,8 @@ class MainViewModel @Inject constructor(
"命令成功。",
Toast.LENGTH_LONG
).show()
qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS)
liveIndoorToolsResp.postValue(IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS)
//启动双向控制服务
@ -750,6 +761,7 @@ class MainViewModel @Inject constructor(
)
.show()
}
liveIndoorToolsResp.postValue(IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE)
}
} catch (e: IOException) {
@ -773,7 +785,7 @@ class MainViewModel @Inject constructor(
)
.show()
}
qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE)
liveIndoorToolsResp.postValue(IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE)
}
is NetResult.Failure<*> -> {
@ -785,7 +797,7 @@ class MainViewModel @Inject constructor(
)
.show()
}
qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE)
liveIndoorToolsResp.postValue(IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE)
}
else -> {}
@ -814,6 +826,34 @@ class MainViewModel @Inject constructor(
}
}
/**
* 显示索引位置
* @param niLocation 轨迹点
*/
fun setCurrentIndexNiLocation(niLocation: NiLocation) {
viewModelScope.launch ( Dispatchers.IO ){
Log.e("qj","开始$currentIndexNiLocation")
currentIndexNiLocation = mapController.markerHandle.getNILocationIndex(niLocation)!!
Log.e("qj","结束$currentIndexNiLocation")
}
}
/**
* 设置索引位置
* @param index 索引
*/
fun setCurrentIndexLoction(index: Int) {
currentIndexNiLocation = index
}
/**
*
* @return index 索引
*/
fun getCurrentNiLocationIndex(): Int {
return currentIndexNiLocation
}
/**
* 结束自动播放
*/
@ -833,22 +873,32 @@ class MainViewModel @Inject constructor(
override fun onIndexing() {
//切换为暂停状态
indoorToolsStatus.postValue(IndoorToolsStatus.PAUSE)
liveIndoorToolsCommand.postValue(IndoorToolsCommand.INDEXING)
}
override fun onStop() {
TODO("Not yet implemented")
liveIndoorToolsCommand.postValue(IndoorToolsCommand.STOP)
}
override fun onPlay() {
TODO("Not yet implemented")
liveIndoorToolsCommand.postValue(IndoorToolsCommand.PLAY)
}
override fun onParseEnd() {
TODO("Not yet implemented")
}
override fun onReceiveLocation(mNiLocation: NiLocation?) {
TODO("Not yet implemented")
if (mNiLocation != null) {
setCurrentIndexNiLocation(mNiLocation)
showMarker(mapController.mMapView.context, mNiLocation)
Log.e("qj","反向控制$currentIndexNiLocation")
} else {
BaseToast.makeText(
mapController.mMapView.context,
"没有找到对应轨迹点!",
Toast.LENGTH_SHORT
).show()
}
}
}

View File

@ -24,11 +24,25 @@ import java.util.Collections
import kotlin.math.abs
enum class IndoorToolsStatus {
PAUSE,
enum class IndoorToolsCommand {
PLAY,
SELECT_POINT,
INDEXING,
NEXT,
REWIND
REWIND,
STOP
}
enum class IndoorToolsResp{
/**
* 信息更新轨迹成功
*/
QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS,
/**
* 信息更新轨迹失败
*/
QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE,
}
/**
@ -264,6 +278,7 @@ class SocketServer(
timeIndex = mTaskList.size - 1
val result = parseResult(mTaskList[timeIndex])
var resultNiLocation: NiLocation? = null
var index: Int = -1
if (result != null) {
when (result.type) {
1 -> {
@ -277,6 +292,9 @@ class SocketServer(
val currentTimeStr: String = DateTimeUtil.TimePointSSSToTime(
result.data
)
Log.e(TAG, "反向"+result.data)
val startTime = currentTime - traceTimeBuffer
val endTme = currentTime + traceTimeBuffer
@ -291,21 +309,23 @@ class SocketServer(
endTimeStr
)
) {
Log.e(TAG, "getTraceData开始")
val list: List<NiLocation>? =
getTrackList(startTimeStr, endTimeStr, currentTimeStr)
val list: List<NiLocation>? = getTrackList(startTimeStr, endTimeStr, currentTimeStr)
Log.e(TAG, "getTraceData结束")
if (list != null && list.size > 0) {
var disTime: Long = 0
//只有一个点不进行判断直接返回结果
if (list.size == 1) {
resultNiLocation = list[0]
} else {
//遍历集合取最近时间的轨迹点
b@ for (nilocation in list) {
if (!TextUtils.isEmpty(nilocation.time)) {
//只获取到秒的常量
@ -323,15 +343,13 @@ class SocketServer(
//第一次不对比,取当前值
if (disTime == 0L) {
disTime = disTimeTemp
resultNiLocation =
nilocation
resultNiLocation = nilocation
} else {
//前一个差值大于当前差值则取当前相对小的值
if (disTime - disTimeTemp > 0) {
disTime = disTimeTemp
resultNiLocation =
nilocation
resultNiLocation = nilocation
}
}
}
@ -343,6 +361,9 @@ class SocketServer(
val msg1 = Message()
msg1.what = 0x11
msg1.obj = resultNiLocation
if (resultNiLocation != null) {
Log.e(TAG, "反向app"+resultNiLocation.time)
}
mHandler.sendMessage(msg1)
}
@ -373,6 +394,7 @@ class SocketServer(
mHandler.sendMessage(msg2)
}
}
Thread.sleep(10)
} catch (e: Exception) {
e.printStackTrace()
val msg = Message()
@ -407,7 +429,7 @@ class SocketServer(
val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1)
val list: MutableList<NiLocation> = traceDataBase.niLocationDao.taskIdAndTimeTofindList(id.toString(),startTime,endTime)
val list: MutableList<NiLocation> = traceDataBase.niLocationDao.findToTaskIdAll(id.toString())
if (list.size > 0) return list
}
@ -442,6 +464,7 @@ class SocketServer(
connectFaild("连接断开")
}
}
Thread.sleep(10)
} catch (e: IOException) {
connectFaild(e.toString())
e.printStackTrace()

View File

@ -34,15 +34,6 @@ enum class QrCodeStatus {
*/
QR_CODE_STATUS_SERVER_INFO_SUCCESS,
/**
* 信息更新轨迹成功
*/
QR_CODE_STATUS_UPDATE_VIDEO_INFO_SUCCESS,
/**
* 信息更新轨迹失败
*/
QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE,
}
@HiltViewModel

View File

@ -61,12 +61,6 @@ 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 -> {
}
}
}

View File

@ -116,10 +116,10 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
}
R.id.personal_center_menu_test -> {
viewModel.readRealmData()
//108.91056000267433 34.29635901721207
//108.90107116103331 34.29568928574205
// 定位到指定位置
niMapController.mMapView.vtmMap.animator()
.animateTo(GeoPoint( 34.29635901721207, 108.91056000267433))
.animateTo(GeoPoint( 34.29568928574205, 108.90107116103331))
}
// R.id.personal_center_menu_task_list -> {
// findNavController().navigate(R.id.TaskManagerFragment)

View File

@ -1707,48 +1707,52 @@
</m>0
<!-- 道路边界类型 -->
<m v="OMDB_RDBOUND_BOUNDARYTYPE">
<outline-layer id="boundaryType" stroke="#fcba5a" width="0.2" />
<outline-layer id="boundaryType" stroke="#8e44ad" width="0.2" />
<m k="boundaryType" v="0|1|2|3|4|5|6|7|8|9">
<line stroke="#ffffff" use="boundaryType" width="0.2"/>
</m>
<!-- <outline-layer id="boundaryType" stroke="#fcba5a" width="0.2" />
<m k="boundaryType" v="0">
<!--不应用-->
&lt;!&ndash;不应用&ndash;&gt;
<line stroke="#fcba5a" use="boundaryType"/>
<lineSymbol repeat-gap="12" repeat-start="12" symbol-height="16" symbol-width="16" src="assets:omdb/icon_2083_0.svg" />
</m>
<m k="boundaryType" v="1">
<!--无标线无可区分边界-->
&lt;!&ndash;无标线无可区分边界&ndash;&gt;
<line dasharray="10,2,2,2,2,2,2,2" repeat-start="0" stroke="#fcba5a" width="0.2" />
</m>
<m k="boundaryType" v="2">
<!--标线-->
&lt;!&ndash;标线&ndash;&gt;
<line stroke="#fcba5a" use="boundaryType"/>
</m>
<m k="boundaryType" v="3">
<!--路牙-->
&lt;!&ndash;路牙&ndash;&gt;
<line dasharray="10,4" repeat-start="0" stroke="#fcba5a" width="0.2" />
</m>
<m k="boundaryType" v="4">
<!--护栏-->
&lt;!&ndash;护栏&ndash;&gt;
<line dasharray="10,2,2,2" repeat-start="0" stroke="#fcba5a" width="0.2"/>
</m>
<m k="boundaryType" v="5">
<!---->
&lt;!&ndash;&ndash;&gt;
<line stroke="#fcba5a" use="boundaryType"/>
<line dasharray="10,5" stroke="#fcba5a" width="0.5" />
</m>
<m k="boundaryType" v="6">
<!--道路面铺设边缘-->
&lt;!&ndash;道路面铺设边缘&ndash;&gt;
<line stroke="#fcba5a" use="boundaryType"/>
<lineSymbol repeat-gap="32" repeat-start="0" symbol-height="32" src="assets:omdb/icon_2083_6.svg" />
</m>
<m k="boundaryType" v="7">
<!--虚拟三角岛-->
&lt;!&ndash;虚拟三角岛&ndash;&gt;
<line stroke="#fcba5a" use="boundaryType"/>
<line src="assets:omdb/icon_2083_7_1.svg" symbol-height="12" symbol-width="12" symbol-percent="20" width="1" />
</m>
<m k="boundaryType" v="9">
<!--杆状障碍物-->
&lt;!&ndash;杆状障碍物&ndash;&gt;
<line stroke="#fcba5a" use="boundaryType"/>
<lineSymbol repeat-gap="16" repeat-start="12" symbol-height="24" symbol-width="8" src="assets:omdb/icon_2083_9.svg" />
</m>
</m>-->
</m>
<!-- 车道边界类型 -->
<m v="OMDB_LANE_MARK_BOUNDARYTYPE">
@ -1758,9 +1762,9 @@
<m v="2">
<m k="markType">
<!--其他|实线-->
<m v="0|1">
<m v="0|1|2|3|4|5|6|7|8">
<m k="markColor">
<m v="0|1">
<m v="1">
<line stroke="#ffffff" use="boundaryType" />
</m>
<m v="2">
@ -1772,12 +1776,12 @@
<m v="7">
<line stroke="#00ff00" use="boundaryType" />
</m>
<m v="9">
<m v="0|9">
<line stroke="#8e44ad" use="boundaryType" />
</m>
</m>
</m>
<!--虚线-->
<!-- &lt;!&ndash;虚线&ndash;&gt;
<m v="2">
<m k="markColor">
<m v="0|1">
@ -1802,18 +1806,17 @@
</m>
</m>
</m>
<!--导流区边线-->
&lt;!&ndash;导流区边线&ndash;&gt;
<m v="4">
<line outline="boundary" stroke="#545D6C"></line>
<lineSymbol repeat-gap="0.5" repeat-start="0"
src="assets:omdb/icon_right.png" />
</m>
<!-- &lt;!&ndash;铺设路面边缘&ndash;&gt;-->
<!-- <m v="5">-->
<!-- <line outline="#ffffff" fix="true" src="assets:omdb/icon_close.png" stroke="#ffffffff" use="boundaryType"/>-->
<!-- </m>-->
</m>-->
</m>
</m>
<m v="0|1|3|4|5|6|7|8|9">
<line stroke="#ffffff" use="boundaryType"/>
</m>
</m>
</m>

View File

@ -766,6 +766,27 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
}
}
fun getNILocationIndex(niLocation: NiLocation):Int?{
var list = niLocationItemizedLayer.itemList
if(niLocation!=null&&list.isNotEmpty()){
var index = -1
list.forEach{
index += 1
if(((it as MarkerItem).uid as NiLocation).id.equals(niLocation.id)){
return index
}
}
}
return -1
}
}
interface OnQsRecordItemClickListener {