diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f32f5edd..865ca118 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@
+
@@ -34,10 +35,10 @@
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
- android:supportsRtl="true"
android:largeHeap="true"
- android:theme="@style/Theme.OMQualityInspection"
- android:requestLegacyExternalStorage="true">
+ android:requestLegacyExternalStorage="true"
+ android:supportsRtl="true"
+ android:theme="@style/Theme.OMQualityInspection">
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt b/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt
index 556829bb..fd8928cd 100644
--- a/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt
+++ b/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt
@@ -18,7 +18,7 @@ class OMQSApplication : Application() {
FileManager.initRootDir(this)
Realm.init(this)
val password = "encryp".encodeToByteArray().copyInto(ByteArray(64))
- // 70617373776f72640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+ // 656e6372797000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Log.d("OMQSApplication", "密码是: ${byteArrayToHexString(password)}")
val config = RealmConfiguration.Builder()
.directory(File(Constant.DATA_PATH))
diff --git a/app/src/main/java/com/navinfo/omqs/bean/ScProblemTypeBean.kt b/app/src/main/java/com/navinfo/omqs/bean/ScProblemTypeBean.kt
index 4ce71de7..0bfcecea 100644
--- a/app/src/main/java/com/navinfo/omqs/bean/ScProblemTypeBean.kt
+++ b/app/src/main/java/com/navinfo/omqs/bean/ScProblemTypeBean.kt
@@ -11,20 +11,33 @@ import kotlinx.parcelize.Parcelize
data class ScProblemTypeBean(
@PrimaryKey(autoGenerate = true)
var id: Long = 0,
+ /**
+ * elementType
+ * 要素类型
+ */
+ @ColumnInfo("ELEMENT_TYPE")
+ val elementType: String = "",
+ /**
+ * 要素代码
+ */
+ @ColumnInfo("ELEMENT_CODE")
+ val elementCode: String = "",
/**
* 问题分类
*/
@ColumnInfo("CLASS_TYPE")
- var classType: String = "",
+ val classType: String = "",
+
/**
* 问题类型
*/
@ColumnInfo("TYPE")
- var problemType: String = "",
+ val problemType: String = "",
+
/**
* 问题现象
*/
@ColumnInfo("PHENOMENON")
- var phenomenon: String = ""
+ val phenomenon: String = ""
) : Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/PermissionsActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/PermissionsActivity.kt
index fa584a95..5e6ba595 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/activity/PermissionsActivity.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/activity/PermissionsActivity.kt
@@ -30,7 +30,7 @@ open class PermissionsActivity : BaseActivity() {
permissionList.add(Permission.ACCESS_FINE_LOCATION)
permissionList.add(Permission.ACCESS_COARSE_LOCATION)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- permissionList.add(Permission.ACCESS_BACKGROUND_LOCATION)
+// permissionList.add(Permission.ACCESS_BACKGROUND_LOCATION)
}
XXPermissions.with(this)
// 申请单个权限
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 b28d7c4f..b6700885 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
@@ -52,8 +52,16 @@ class MainActivity : BaseActivity() {
binding.mainActivity = this
//给xml传递viewModel对象
binding.viewModel = viewModel
-// lifecycle.addObserver(viewModel)
- lifecycleScope
+
+ viewModel.liveDataQsRecordIdList.observe(this) {
+ if (it.size == 1) {
+ val bundle = Bundle()
+ bundle.putString("QsId", it[0])
+ val naviController = findNavController(R.id.main_activity_right_fragment)
+ naviController.navigate(R.id.EvaluationResultFragment, bundle)
+ }
+ }
+
}
override fun onStart() {
@@ -94,7 +102,7 @@ class MainActivity : BaseActivity() {
naviController.navigate(R.id.EvaluationResultFragment)
}
- override fun onBackPressed() {
- super.onBackPressed()
- }
+// override fun onBackPressed() {
+// super.onBackPressed()
+// }
}
\ No newline at end of file
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 c052a0f7..ab00003e 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
@@ -1,8 +1,10 @@
package com.navinfo.omqs.ui.activity.map
import android.util.Log
+import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.navinfo.collect.library.map.NIMapController
+import com.navinfo.collect.library.map.handler.OnQsRecordItemClickListener
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.scopes.ActivityRetainedScoped
import javax.inject.Inject
@@ -16,6 +18,16 @@ class MainViewModel @Inject constructor(
private val mapController: NIMapController,
) : ViewModel() {
+ val liveDataQsRecordIdList = MutableLiveData>()
+
+ init {
+ mapController.layerManagerHandler.setOnQsRecordItemClickListener(object :
+ OnQsRecordItemClickListener {
+ override fun onQsRecordList(list: MutableList) {
+ liveDataQsRecordIdList.value = list
+ }
+ })
+ }
/**
* 点击我的位置,回到我的位置
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt
index 4e9013db..eeac9c80 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.databinding.DataBindingUtil
import androidx.navigation.NavOptions
import androidx.navigation.findNavController
import com.navinfo.omqs.R
@@ -14,30 +15,26 @@ import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
- private var _binding: FragmentEvaluationResultBinding? = null
- private val binding get() = _binding!!
+ private lateinit var binding: FragmentEvaluationResultBinding
private val viewModel by shareViewModels("QsRecode")
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
- _binding = FragmentEvaluationResultBinding.inflate(inflater, container, false)
+ binding =
+ DataBindingUtil.inflate(inflater, R.layout.fragment_evaluation_result, container, false)
+ binding.fragment = this
+ binding.viewModel = viewModel
+ binding.lifecycleOwner = this
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- liveDataObserve()
-
- /**
- * 点击监听
- */
- binding.evaluationClassType.setOnClickListener(this)
- binding.evaluationProblemType.setOnClickListener(this)
- binding.evaluationPhenomenon.setOnClickListener(this)
- binding.evaluationLink.setOnClickListener(this)
- binding.evaluationCause.setOnClickListener(this)
-
+ //监听是否退出当前页面
+ viewModel.liveDataFinish.observe(viewLifecycleOwner) {
+ onBackPressed()
+ }
//返回按钮点击
binding.evaluationBar.setNavigationOnClickListener {
onBackPressed()
@@ -59,7 +56,17 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
/**
* 读取元数据
*/
- viewModel.loadMetadata()
+ if (arguments != null) {
+ val id = requireArguments().getString("QsId")
+ if (id != null) {
+ viewModel.loadData(id)
+ } else {
+ viewModel.loadMetadata()
+ }
+ } else {
+ viewModel.loadMetadata()
+ }
+
// //监听大分类数据变化
// viewModel.liveDataClassTypeList.observe(viewLifecycleOwner) {
// if (it == null || it.isEmpty()) {
@@ -155,43 +162,12 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
//
// }
- /**
- * 监听liveData
- */
- private fun liveDataObserve() {
-
- //监听问题分类,更新UI
- viewModel.liveDataCurrentClassType.observe(viewLifecycleOwner) {
- binding.evaluationClassType.text = it
- }
- //监听问题类型,更新UI
- viewModel.liveDataCurrentProblemType.observe(viewLifecycleOwner) {
- binding.evaluationProblemType.text = it
- }
- //监听问题现象,更新UI
- viewModel.liveDataCurrentPhenomenon.observe(viewLifecycleOwner) {
- binding.evaluationPhenomenon.text = it
- }
- //监听问题环节,更新UI
- viewModel.liveDataCurrentProblemLink.observe(viewLifecycleOwner) {
- binding.evaluationLink.text = it
- }
- //监听问题初步原因,更新UI
- viewModel.liveDataCurrentCause.observe(viewLifecycleOwner) {
- binding.evaluationCause.text = it
- }
- //监听是否退出当前页面
- viewModel.liveDataFinish.observe(viewLifecycleOwner) {
- onBackPressed()
- }
- }
override fun onDestroyView() {
activity?.apply {
findNavController(R.id.main_activity_middle_fragment).navigateUp()
}
super.onDestroyView()
- _binding = null
}
/**
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 a233fb64..1e162cb1 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
@@ -10,6 +10,7 @@ import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.omqs.db.RoomAppDatabase
import dagger.hilt.android.lifecycle.HiltViewModel
import io.realm.Realm
+import io.realm.kotlin.where
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.util.*
@@ -28,63 +29,32 @@ class EvaluationResultViewModel @Inject constructor(
val liveDataFinish = MutableLiveData()
/**
- * 问题分类 liveData,给[PhenomenonLeftAdapter]展示的数据
+ * 问题分类 liveData,给[LeftAdapter]展示的数据
*/
- val liveDataClassTypeList = MutableLiveData>()
+ val liveDataLeftTypeList = MutableLiveData>()
/**
- * 问题类型 liveData 给[PhenomenonMiddleAdapter]展示的数据
+ * 问题类型 liveData 给[MiddleAdapter]展示的数据
*/
- val liveDataProblemTypeList = MutableLiveData>()
+ val liveDataMiddleTypeList = MutableLiveData>()
/**
- * 问题现象 liveData 给[PhenomenonRightGroupHeaderAdapter]展示的数据
+ * 问题现象 liveData 给[RightGroupHeaderAdapter]展示的数据
*/
- val liveDataPhenomenonRightList = MutableLiveData>()
+ val liveDataRightTypeList = MutableLiveData>()
- /**
- * 当前选择问题分类 给[EvaluationResultFragment]中 【问题分类】展示数据
- */
- var liveDataCurrentClassType = MutableLiveData()
-
- /**
- * 当前选择的问题类型 给[EvaluationResultFragment]中 【问题类型】展示数据
- */
- var liveDataCurrentProblemType = MutableLiveData()
-
- /**
- * 当前选择的问题现象 给[EvaluationResultFragment]中 【问题现象】展示数据
- */
- var liveDataCurrentPhenomenon = MutableLiveData()
-
-
- /**
- * 当前选择的问题环节 给[EvaluationResultFragment]中 【问题环节】展示数据
- */
- var liveDataCurrentProblemLink = MutableLiveData()
-
- /**
- * 当前选择的问初步原因 给[EvaluationResultFragment]中 【初步原因】展示数据
- */
- var liveDataCurrentCause = MutableLiveData()
-
- var currentGeoPoint: GeoPoint? = null
-
+ var liveDataQsRecordBean = MutableLiveData()
init {
+ liveDataQsRecordBean.value = QsRecordBean(id = UUID.randomUUID().toString(), classType = "89193")
Log.e("jingo", "EvaluationResultViewModel 创建了 ${hashCode()}")
mapController.markerHandle.apply {
setOnMapClickListener {
- currentGeoPoint = it
+ liveDataQsRecordBean.value!!.geometry = it.toGeometry()
addMarker(it, markerTitle)
}
}
- val geoPoint = mapController.locationLayerHandler.getCurrentGeoPoint()
- geoPoint?.let {
- currentGeoPoint = it
- mapController.markerHandle.addMarker(geoPoint, markerTitle)
- }
}
@@ -104,22 +74,31 @@ class EvaluationResultViewModel @Inject constructor(
getClassTypeList()
getProblemLinkList()
}
+ val geoPoint = mapController.locationLayerHandler.getCurrentGeoPoint()
+ geoPoint?.let {
+ liveDataQsRecordBean.value!!.geometry = it.toGeometry()
+ mapController.markerHandle.addMarker(geoPoint, markerTitle)
+ }
}
/**
* //获取问题分类列表
*/
fun getClassTypeList() {
+
viewModelScope.launch(Dispatchers.IO) {
val list = roomAppDatabase.getScProblemTypeDao().findClassTypeList()
list?.let {
- //通知页面更新
- liveDataClassTypeList.postValue(it)
- //如果右侧栏没数据,给个默认值
- if (liveDataCurrentClassType.value == null) {
- liveDataCurrentClassType.postValue(it[0])
+ if (list.isNotEmpty()) {
+ //通知页面更新
+ liveDataLeftTypeList.postValue(it)
+ val classType = it[0]
+ //如果右侧栏没数据,给个默认值
+ if (liveDataQsRecordBean.value!!.classType.isEmpty()) {
+ liveDataQsRecordBean.value!!.classType = classType
+ }
+ getProblemList(classType)
}
- getProblemList(it[0])
}
}
@@ -133,27 +112,26 @@ class EvaluationResultViewModel @Inject constructor(
val list = roomAppDatabase.getScRootCauseAnalysisDao().findAllData()
list?.let { tl ->
if (tl.isNotEmpty()) {
- val typeTitleList = mutableListOf()
- val phenomenonRightList = mutableListOf()
+ val middleList = mutableListOf()
+ val rightList = mutableListOf()
for (item in tl) {
- if (!typeTitleList.contains(item.problemLink)) {
- typeTitleList.add(item.problemLink)
+ if (!middleList.contains(item.problemLink)) {
+ middleList.add(item.problemLink)
}
- phenomenonRightList.add(
- PhenomenonMiddleBean(
+ rightList.add(
+ RightBean(
title = item.problemLink, text = item.problemCause, isSelect = false
)
)
}
-
- if (liveDataCurrentProblemLink.value == null) {
- liveDataCurrentProblemLink.postValue(phenomenonRightList[0].text)
+ if (liveDataQsRecordBean.value!!.problemLink.isEmpty()) {
+ liveDataQsRecordBean.value!!.problemLink = middleList[0]
}
- if (liveDataCurrentCause.value == null) {
- liveDataCurrentCause.postValue(typeTitleList[0])
+ if (liveDataQsRecordBean.value!!.cause.isEmpty()) {
+ liveDataQsRecordBean.value!!.cause = rightList[0].text
}
- liveDataProblemTypeList.postValue(typeTitleList)
- liveDataPhenomenonRightList.postValue(phenomenonRightList)
+ liveDataMiddleTypeList.postValue(middleList)
+ liveDataRightTypeList.postValue(rightList)
}
}
}
@@ -167,76 +145,90 @@ class EvaluationResultViewModel @Inject constructor(
typeList?.let { tl ->
if (tl.isNotEmpty()) {
val typeTitleList = mutableListOf()
- val phenomenonRightList = mutableListOf()
+ val phenomenonRightList = mutableListOf()
for (item in tl) {
if (!typeTitleList.contains(item.problemType)) {
typeTitleList.add(item.problemType)
}
phenomenonRightList.add(
- PhenomenonMiddleBean(
+ RightBean(
title = item.problemType, text = item.phenomenon, isSelect = false
)
)
}
- if (liveDataCurrentPhenomenon.value == null) {
- liveDataCurrentPhenomenon.postValue(phenomenonRightList[0].text)
- }
- if (liveDataCurrentProblemType.value == null) {
- liveDataCurrentProblemType.postValue(typeTitleList[0])
- }
- liveDataProblemTypeList.postValue(typeTitleList)
- liveDataPhenomenonRightList.postValue(phenomenonRightList)
+ liveDataMiddleTypeList.postValue(typeTitleList)
+ liveDataRightTypeList.postValue(phenomenonRightList)
}
}
}
/**
- * 查询问题类型
+ * 查询问题类型列表
*/
fun getProblemTypeList(classType: String) {
viewModelScope.launch(Dispatchers.IO) {
- liveDataCurrentClassType.postValue(classType)
getProblemList(classType)
}
}
- fun setPhenomenonMiddleBean(bean: PhenomenonMiddleBean) {
- if (liveDataCurrentPhenomenon.value != bean.text) liveDataCurrentPhenomenon.value =
- bean.text
- if (liveDataCurrentProblemType.value != bean.title) liveDataCurrentProblemType.value =
- bean.title
-
+ /**
+ * 监听右侧栏的点击事件,修改数据
+ */
+ fun setPhenomenonMiddleBean(adapterBean: RightBean) {
+ liveDataQsRecordBean.value!!.phenomenon = adapterBean.text
+ liveDataQsRecordBean.value!!.problemType = adapterBean.title
}
- fun setProblemLinkMiddleBean(bean: PhenomenonMiddleBean) {
- if (liveDataCurrentProblemLink.value != bean.text) liveDataCurrentProblemLink.value =
- bean.text
- if (liveDataCurrentCause.value != bean.title) liveDataCurrentCause.value = bean.title
+ fun setProblemLinkMiddleBean(adapterBean: RightBean) {
+ liveDataQsRecordBean.value!!.cause = adapterBean.text
+ liveDataQsRecordBean.value!!.problemLink = adapterBean.title
}
fun saveData() {
viewModelScope.launch(Dispatchers.IO) {
- val qsRecord = QsRecordBean(
- id = UUID.randomUUID().toString(),
- classType = liveDataCurrentClassType.value.toString(),
- type = liveDataCurrentProblemType.value.toString(),
- phenomenon = liveDataCurrentPhenomenon.value.toString(),
- problemLink = liveDataCurrentProblemLink.value.toString(),
- cause = liveDataCurrentCause.value.toString(),
- )
- qsRecord.geometry = currentGeoPoint!!.toGeometry()
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
- it.copyToRealmOrUpdate(qsRecord)
+ it.copyToRealmOrUpdate(liveDataQsRecordBean.value)
}
realm.close()
- mapController.mMapView.updateMap()
+ mapController.layerManagerHandler.addOrUpdateQsRecordMark(liveDataQsRecordBean.value!!)
liveDataFinish.postValue(true)
}
}
fun deleteData() {
+// viewModelScope.launch(Dispatchers.IO) {
+// val qsRecord = QsRecordBean(
+// id = UUID.randomUUID().toString(),
+// classType = liveDataCurrentClassType.value.toString(),
+// type = liveDataCurrentProblemType.value.toString(),
+// phenomenon = liveDataCurrentPhenomenon.value.toString(),
+// problemLink = liveDataCurrentProblemLink.value.toString(),
+// cause = liveDataCurrentCause.value.toString(),
+// )
+// qsRecord.geometry = currentGeoPoint!!.toGeometry()
+// val realm = Realm.getDefaultInstance()
+// realm.executeTransaction {
+// it.copyToRealmOrUpdate(qsRecord)
+// }
+// realm.close()
+// mapController.layerManagerHandler.addOrUpdateQsRecordMark(qsRecord)
+// liveDataFinish.postValue(true)
+// }
+ }
+ /**
+ * 根据数据id,查询数据
+ */
+ fun loadData(id: String) {
+ viewModelScope.launch(Dispatchers.IO) {
+ val realm = Realm.getDefaultInstance()
+ val objects = realm.where().equalTo("id", id).findFirst()
+
+ if (objects != null) {
+ liveDataQsRecordBean.postValue(realm.copyFromRealm(objects))
+ }
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonLeftAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt
similarity index 95%
rename from app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonLeftAdapter.kt
rename to app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/LeftAdapter.kt
index 572a3c5f..0ff2468b 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonLeftAdapter.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 PhenomenonLeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
+class LeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
BaseRecyclerViewAdapter() {
private var selectTitle = ""
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonMiddleAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/MiddleAdapter.kt
similarity index 95%
rename from app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonMiddleAdapter.kt
rename to app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/MiddleAdapter.kt
index 997b8b83..d3020c80 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonMiddleAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/MiddleAdapter.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 PhenomenonMiddleAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
+class MiddleAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
BaseRecyclerViewAdapter() {
private var selectTitle = ""
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt
index 9eef25da..042c1411 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonFragment.kt
@@ -5,13 +5,9 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.fragment.app.Fragment
-import androidx.navigation.findNavController
-import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.OnScrollListener
-import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.FragmentPhenomenonBinding
import com.navinfo.omqs.ui.fragment.BaseFragment
import com.navinfo.omqs.ui.other.shareViewModels
@@ -41,12 +37,15 @@ class PhenomenonFragment :
//左侧菜单
binding.phenomenonLeftRecyclerview.setHasFixedSize(true)
binding.phenomenonLeftRecyclerview.layoutManager = LinearLayoutManager(requireContext())
- val leftAdapter = PhenomenonLeftAdapter { _, text ->
+ /**
+ * 监听左侧栏的点击事件
+ */
+ val leftAdapter = LeftAdapter { _, text ->
viewModel.getProblemTypeList(text)
}
binding.phenomenonLeftRecyclerview.adapter = leftAdapter
//左侧菜单查询结果监听
- viewModel.liveDataClassTypeList.observe(viewLifecycleOwner) {
+ viewModel.liveDataLeftTypeList.observe(viewLifecycleOwner) {
leftAdapter.refreshData(it)
}
@@ -55,26 +54,34 @@ class PhenomenonFragment :
var rightLayoutManager = LinearLayoutManager(requireContext())
binding.phenomenonRightRecyclerview.layoutManager = rightLayoutManager
- val rightAdapter = PhenomenonRightGroupHeaderAdapter { _, bean ->
+ /**
+ * 监听右侧栏的点击事件
+ */
+ val rightAdapter = RightGroupHeaderAdapter { _, bean ->
viewModel.setPhenomenonMiddleBean(bean)
}
binding.phenomenonRightRecyclerview.adapter = rightAdapter
//右侧菜单增加组标题
binding.phenomenonRightRecyclerview.addItemDecoration(
- PhenomenonRightGroupHeaderDecoration(
+ RightGroupHeaderDecoration(
requireContext()
)
)
//右侧菜单查询数据监听
- viewModel.liveDataPhenomenonRightList.observe(viewLifecycleOwner) {
+ viewModel.liveDataRightTypeList.observe(viewLifecycleOwner) {
rightAdapter.refreshData(it)
}
- val middleAdapter = PhenomenonMiddleAdapter { _, title ->
+ /**
+ * 监听中间栏的点击事件
+ */
+ val middleAdapter = MiddleAdapter { _, title ->
rightLayoutManager.scrollToPositionWithOffset(rightAdapter.getGroupTopIndex(title), 0)
-
}
+ /**
+ * 监控右侧滚动,更新左侧
+ */
binding.phenomenonRightRecyclerview.addOnScrollListener(object :
OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
@@ -98,7 +105,7 @@ class PhenomenonFragment :
binding.phenomenonMiddleRecyclerview.layoutManager = LinearLayoutManager(requireContext())
binding.phenomenonMiddleRecyclerview.adapter = middleAdapter
//中间侧菜单查询结果监听
- viewModel.liveDataProblemTypeList.observe(viewLifecycleOwner) {
+ viewModel.liveDataMiddleTypeList.observe(viewLifecycleOwner) {
middleAdapter.refreshData(it)
}
binding.phenomenonDrawer.setOnClickListener {
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonMiddleBean.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonMiddleBean.kt
deleted file mode 100644
index 5f77e434..00000000
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonMiddleBean.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.navinfo.omqs.ui.fragment.evaluationresult
-
-/**
- * 问题现象列表
- */
-data class PhenomenonMiddleBean(val title: String, val text: String, var isSelect: Boolean = false)
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt
index d10fe1ef..26286848 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/ProblemLinkFragment.kt
@@ -35,22 +35,22 @@ class ProblemLinkFragment : BaseFragment() {
var rightLayoutManager = LinearLayoutManager(requireContext())
binding.linkRightRecyclerview.layoutManager = rightLayoutManager
- val rightAdapter = PhenomenonRightGroupHeaderAdapter { _, bean ->
+ val rightAdapter = RightGroupHeaderAdapter { _, bean ->
viewModel.setProblemLinkMiddleBean(bean)
}
binding.linkRightRecyclerview.adapter = rightAdapter
//右侧菜单增加组标题
binding.linkRightRecyclerview.addItemDecoration(
- PhenomenonRightGroupHeaderDecoration(
+ RightGroupHeaderDecoration(
requireContext()
)
)
//右侧菜单查询数据监听
- viewModel.liveDataPhenomenonRightList.observe(viewLifecycleOwner) {
+ viewModel.liveDataRightTypeList.observe(viewLifecycleOwner) {
rightAdapter.refreshData(it)
}
- val middleAdapter = PhenomenonMiddleAdapter { _, title ->
+ val middleAdapter = MiddleAdapter { _, title ->
rightLayoutManager.scrollToPositionWithOffset(rightAdapter.getGroupTopIndex(title), 0)
}
@@ -72,7 +72,7 @@ class ProblemLinkFragment : BaseFragment() {
binding.linkMiddleRecyclerview.layoutManager = LinearLayoutManager(requireContext())
binding.linkMiddleRecyclerview.adapter = middleAdapter
//中间侧菜单查询结果监听
- viewModel.liveDataProblemTypeList.observe(viewLifecycleOwner) {
+ viewModel.liveDataMiddleTypeList.observe(viewLifecycleOwner) {
middleAdapter.refreshData(it)
}
binding.linkDrawer.setOnClickListener {
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightBean.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightBean.kt
new file mode 100644
index 00000000..090cf251
--- /dev/null
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightBean.kt
@@ -0,0 +1,6 @@
+package com.navinfo.omqs.ui.fragment.evaluationresult
+
+/**
+ * 问题现象列表
+ */
+data class RightBean(val title: String, val text: String, var isSelect: Boolean = false)
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonRightGroupHeaderAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderAdapter.kt
similarity index 92%
rename from app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonRightGroupHeaderAdapter.kt
rename to app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderAdapter.kt
index 1b57d518..d2d77b76 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonRightGroupHeaderAdapter.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderAdapter.kt
@@ -7,8 +7,8 @@ import com.navinfo.omqs.databinding.TextItemSelectBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
import com.navinfo.omqs.ui.other.BaseViewHolder
-class PhenomenonRightGroupHeaderAdapter(private var itemListener: ((Int, PhenomenonMiddleBean) -> Unit?)? = null) :
- BaseRecyclerViewAdapter() {
+class RightGroupHeaderAdapter(private var itemListener: ((Int, RightBean) -> Unit?)? = null) :
+ BaseRecyclerViewAdapter() {
private var groupTitleList = mutableListOf()
override fun getItemViewRes(position: Int): Int {
return R.layout.text_item_select
@@ -85,7 +85,7 @@ class PhenomenonRightGroupHeaderAdapter(private var itemListener: ((Int, Phenome
return 0
}
- override fun refreshData(newData: List) {
+ override fun refreshData(newData: List) {
super.refreshData(newData)
groupTitleList.clear()
for (item in newData) {
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonRightGroupHeaderDecoration.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderDecoration.kt
similarity index 91%
rename from app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonRightGroupHeaderDecoration.kt
rename to app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderDecoration.kt
index 23b60c68..8cf32e01 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/PhenomenonRightGroupHeaderDecoration.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/RightGroupHeaderDecoration.kt
@@ -5,7 +5,6 @@ import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Rect
-import android.util.Log
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -15,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView.ItemDecoration
/**
* 自定义装饰器(实现分组+吸顶效果)
*/
-class PhenomenonRightGroupHeaderDecoration(context: Context) : ItemDecoration() {
+class RightGroupHeaderDecoration(context: Context) : ItemDecoration() {
//头部的高
private val mItemHeaderHeight: Int
private val mTextPaddingLeft: Int
@@ -48,8 +47,8 @@ class PhenomenonRightGroupHeaderDecoration(context: Context) : ItemDecoration()
* @param state
*/
override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
- if (parent.adapter is PhenomenonRightGroupHeaderAdapter) {
- val adapter = parent.adapter as PhenomenonRightGroupHeaderAdapter
+ if (parent.adapter is RightGroupHeaderAdapter) {
+ val adapter = parent.adapter as RightGroupHeaderAdapter
val count = parent.childCount //获取可见范围内Item的总数
for (i in 0 until count) {
val view: View = parent.getChildAt(i)
@@ -99,8 +98,8 @@ class PhenomenonRightGroupHeaderDecoration(context: Context) : ItemDecoration()
* @param state
*/
override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
- if (parent.adapter is PhenomenonRightGroupHeaderAdapter) {
- val adapter = parent.adapter as PhenomenonRightGroupHeaderAdapter
+ if (parent.adapter is RightGroupHeaderAdapter) {
+ val adapter = parent.adapter as RightGroupHeaderAdapter
val position =
(parent.layoutManager as LinearLayoutManager?)!!.findFirstVisibleItemPosition()
parent.findViewHolderForAdapterPosition(position)?.let {
@@ -169,8 +168,8 @@ class PhenomenonRightGroupHeaderDecoration(context: Context) : ItemDecoration()
parent: RecyclerView,
state: RecyclerView.State
) {
- if (parent.adapter is PhenomenonRightGroupHeaderAdapter) {
- val adapter = parent.adapter as PhenomenonRightGroupHeaderAdapter
+ if (parent.adapter is RightGroupHeaderAdapter) {
+ val adapter = parent.adapter as RightGroupHeaderAdapter
//获取当前view在整个列表中的位置
val position = parent.getChildLayoutPosition(view)
//是不是改组的第一个
@@ -180,7 +179,7 @@ class PhenomenonRightGroupHeaderDecoration(context: Context) : ItemDecoration()
if (adapter.isLastGroupTitle(position)) {
lastGroupView = view
}
- } else if (position == (parent.adapter as PhenomenonRightGroupHeaderAdapter).itemCount - 1) {
+ } else if (position == (parent.adapter as RightGroupHeaderAdapter).itemCount - 1) {
//判断这条是不是最后一条
//如果是最后一个,找到他所在组的第一个
lastGroupView?.let {
diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt
index d96f9b67..c9a14726 100644
--- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt
+++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt
@@ -71,15 +71,16 @@ class PersonalCenterViewModel @Inject constructor(
val list = mutableListOf()
for (i in 1 until rowCount) {
val row: Row = it.getRow(i) // 获取行
- val cellCount: Int = row.physicalNumberOfCells // 获取列数
- if (cellCount == 3) {
- val bean = ScProblemTypeBean()
- bean.classType = row.getCell(0).stringCellValue
- bean.problemType = row.getCell(1).stringCellValue
- bean.phenomenon = row.getCell(2).stringCellValue
- list.add(bean)
- Log.e("jingo", bean.toString())
- }
+// val cellCount: Int = row.physicalNumberOfCells // 获取列数
+ val bean = ScProblemTypeBean(
+ elementType = row.getCell(0).stringCellValue,
+ elementCode = row.getCell(1).numericCellValue.toString(),
+ classType = row.getCell(2).stringCellValue,
+ problemType = row.getCell(3).stringCellValue,
+ phenomenon = row.getCell(4).stringCellValue
+ )
+ list.add(bean)
+ Log.e("jingo", bean.toString())
}
roomAppDatabase.getScProblemTypeDao().insertOrUpdateList(list)
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f15ff59a..7193cd33 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -98,10 +98,9 @@
diff --git a/app/src/main/res/layout/fragment_evaluation_result.xml b/app/src/main/res/layout/fragment_evaluation_result.xml
index c9829571..dca0534c 100644
--- a/app/src/main/res/layout/fragment_evaluation_result.xml
+++ b/app/src/main/res/layout/fragment_evaluation_result.xml
@@ -1,97 +1,120 @@
-
+ xmlns:tools="http://schemas.android.com/tools">
-
+
+
+
+
+
+ android:layout_height="match_parent"
+ android:background="@color/white"
+ tools:context=".ui.fragment.evaluationresult.EvaluationResultFragment">
-
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent">
-
-
-
-
-
-
-
-
-
+ android:layout_height="?attr/actionBarSize"
+ android:background="@color/default_blue"
+ app:menu="@menu/evaluation_bar_mean"
+ app:navigationIcon="@drawable/btn_back_xml"
+ app:title="测评结果" />
-
+
+
+
+
+ android:layout_height="match_parent"
+ android:orientation="vertical">
-
+
-
+
-
+
-
-
-
-
-
+
-
-
-
-
-
-
-
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/right_fragment_nav_graph.xml b/app/src/main/res/navigation/right_fragment_nav_graph.xml
index 25383197..a8b5714f 100644
--- a/app/src/main/res/navigation/right_fragment_nav_graph.xml
+++ b/app/src/main/res/navigation/right_fragment_nav_graph.xml
@@ -15,5 +15,10 @@
android:id="@+id/EvaluationResultFragment"
android:name="com.navinfo.omqs.ui.fragment.evaluationresult.EvaluationResultFragment"
android:label="评测页面"
- tools:layout="@layout/fragment_evaluation_result">
+ tools:layout="@layout/fragment_evaluation_result">
+
+
\ No newline at end of file
diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt
index 550239e2..30491286 100644
--- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt
+++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/QsRecordBean.kt
@@ -36,7 +36,7 @@ open class QsRecordBean @JvmOverloads constructor(
/**
* 问题类型
*/
- var type: String = "",
+ var problemType: String = "",
/**
* 问题现象
diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerItem.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerItem.kt
index f466c4f1..9e13f496 100644
--- a/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerItem.kt
+++ b/collect-library/src/main/java/com/navinfo/collect/library/map/cluster/ClusterMarkerItem.kt
@@ -10,15 +10,7 @@ import org.oscim.layers.marker.MarkerItem
*10:51
*说明()
*/
-class ClusterMarkerItem(uid: Any?, title: String?, description: String?, geoPoint: GeoPoint?) :
+class ClusterMarkerItem(uid: Any, title: String?, description: String?, geoPoint: GeoPoint) :
MarkerItem(uid, title, description, geoPoint) {
var clusterList: List = ArrayList()
-
- constructor(title: String?, description: String?, geoPoint: GeoPoint?) : this(
- null,
- title,
- description,
- geoPoint
- ) {
- }
}
\ No newline at end of file
diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt
index 6e6e65fb..7e68eaa0 100644
--- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt
+++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LayerManagerHandler.kt
@@ -34,10 +34,12 @@ import org.oscim.layers.marker.*
import org.oscim.layers.tile.buildings.BuildingLayer
import org.oscim.layers.tile.vector.VectorTileLayer
import org.oscim.layers.tile.vector.labeling.LabelLayer
+import org.oscim.map.Map.UpdateListener
import org.oscim.tiling.source.OkHttpEngine.OkHttpFactory
import org.oscim.tiling.source.mapfile.MapFileTileSource
import java.io.File
import java.util.*
+import java.util.stream.Collectors
/**
* Layer 操作
@@ -62,7 +64,8 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
private lateinit var canvas: org.oscim.backend.canvas.Canvas
private lateinit var itemizedLayer: MyItemizedLayer
private lateinit var markerRendererFactory: MarkerRendererFactory
- private val markerItemsNames = mutableListOf()
+ private var resId = R.mipmap.map_icon_point_add
+ private var itemListener: OnQsRecordItemClickListener? = null
/**
* 文字大小
@@ -79,11 +82,16 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
private fun initMap() {
loadBaseMap()
- mMapView.switchTileVectorLayerTheme(NIMapView.MAP_THEME.DEFAULT)
//初始化之间数据图层
initQsRecordDataLayer()
- mMapView.vtmMap.updateMap()
+ mMapView.updateMap()
// initMapLifeSource()
+ // 设置矢量图层均在12级以上才显示
+ mMapView.vtmMap.events.bind(UpdateListener { e, mapPosition ->
+ if (e == org.oscim.map.Map.SCALE_EVENT) {
+ itemizedLayer.isEnabled = mapPosition.getZoomLevel() >= 12
+ }
+ })
}
@@ -144,7 +152,45 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
for (layer in it.layers) {
addLayer(layer, NIMapView.LAYER_GROUPS.BASE)
}
- mMapView.updateMap()
+ }
+ }
+ mMapView.switchTileVectorLayerTheme(NIMapView.MAP_THEME.DEFAULT)
+ mMapView.updateMap()
+ }
+
+ fun setOnQsRecordItemClickListener(listener: OnQsRecordItemClickListener?) {
+ itemListener = listener
+ }
+
+ /**
+ * 增加或更新marker
+ */
+ suspend fun addOrUpdateQsRecordMark(data: QsRecordBean) {
+ for (item in itemizedLayer.itemList) {
+ if (item is MarkerItem) {
+ if (item.title == data.id) {
+ itemizedLayer.itemList.remove(item)
+ break
+ }
+ }
+ }
+ createMarkerItem(data)
+ withContext(Dispatchers.Main) {
+ mMapView.updateMap(true)
+ }
+ }
+
+ /**
+ * 删除marker
+ */
+ suspend fun deleteQsRecordMark(data: QsRecordBean) {
+ for (item in itemizedLayer.itemList) {
+ if (item is MarkerItem) {
+ if (item.title == data.id) {
+ itemizedLayer.itemList.remove(item)
+ mMapView.updateMap()
+ return
+ }
}
}
}
@@ -153,6 +199,7 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
* 初始话质检数据图层
*/
private fun initQsRecordDataLayer() {
+
canvas = CanvasAdapter.newCanvas()
paint = CanvasAdapter.newPaint()
paint.setTypeface(Paint.FontFamily.DEFAULT, Paint.FontStyle.NORMAL)
@@ -182,50 +229,67 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
}
}
- var resId = R.mipmap.map_icon_point_add
+ itemizedLayer =
+ MyItemizedLayer(
+ mMapView.vtmMap,
+ mutableListOf(),
+ markerRendererFactory,
+ object : MyItemizedLayer.OnItemGestureListener {
+ override fun onItemSingleTapUp(
+ list: MutableList,
+ nearest: Int
+ ): Boolean {
+ itemListener?.let {
+ val idList = mutableListOf()
+ if (list.size == 0) {
+ } else {
+ for (i in list) {
+ val markerInterface: MarkerInterface =
+ itemizedLayer.itemList[i]
+ if (markerInterface is MarkerItem) {
+ idList.add(markerInterface.title)
+ }
+ }
+ it.onQsRecordList(idList.distinct().toMutableList())
+ }
+ }
+ return true
+ }
+ override fun onItemLongPress(
+ list: MutableList?,
+ nearest: Int
+ ): Boolean {
+ return true
+ }
+ })
+ addLayer(itemizedLayer, NIMapView.LAYER_GROUPS.OPERATE)
mContext.lifecycleScope.launch(Dispatchers.IO) {
var list = mutableListOf()
val realm = Realm.getDefaultInstance()
realm.executeTransaction {
- val objects =realm.where().findAll()
+ val objects = realm.where().findAll()
list = realm.copyFromRealm(objects)
}
realm.close()
- itemizedLayer =
- MyItemizedLayer(
- mMapView.vtmMap,
- mutableListOf(),
- markerRendererFactory,
- object : MyItemizedLayer.OnItemGestureListener {
- override fun onItemSingleTapUp(
- layer: MyItemizedLayer?,
- list: MutableList?,
- nearest: Int
- ): Boolean {
- return true
- }
-
- override fun onItemLongPress(
- layer: MyItemizedLayer?,
- list: MutableList?,
- nearest: Int
- ): Boolean {
- return true
- }
- })
-
for (item in list) {
- val bitmap: Bitmap = createTextMarkerBitmap(mContext, item.description, resId)
- if (item.t_lifecycle != 2) {
- val geometry: Geometry? = GeometryTools.createGeometry(item.geometry)
- if (geometry != null) {
- var geoPoint: GeoPoint? = null
- if (geometry.geometryType != null) {
- when (geometry.geometryType.uppercase(Locale.getDefault())) {
- "POINT" -> geoPoint =
- GeoPoint(geometry.coordinate.y, geometry.coordinate.x)
+ createMarkerItem(item)
+ }
+ }
+
+ }
+
+ private suspend fun createMarkerItem(item: QsRecordBean) {
+ val bitmap: Bitmap = createTextMarkerBitmap(mContext, item.description, resId)
+ if (item.t_lifecycle != 2) {
+ val geometry: Geometry? = GeometryTools.createGeometry(item.geometry)
+ if (geometry != null) {
+ var geoPoint: GeoPoint? = null
+ if (geometry.geometryType != null) {
+ when (geometry.geometryType.uppercase(Locale.getDefault())) {
+ "POINT" -> geoPoint =
+ GeoPoint(geometry.coordinate.y, geometry.coordinate.x)
// "LINESTRING" -> {
// val lineString = geometry as LineString
// if (lineString != null && lineString.coordinates.size > 0) {
@@ -254,14 +318,14 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
// dataVectorLayer.add(drawablePolygon)
// }
// }
- }
- }
- if (geoPoint != null) {
- var geoMarkerItem: MarkerItem
+ }
+ }
+ if (geoPoint != null) {
+ var geoMarkerItem: MarkerItem
// if (item.getType() === 1) {
- geoMarkerItem = ClusterMarkerItem(
- 1, item.id, item.description, geoPoint
- )
+ geoMarkerItem = ClusterMarkerItem(
+ 1, item.id, item.description, geoPoint
+ )
// } else {
// geoMarkerItem = MarkerItem(
// ePointTemp.getType(),
@@ -270,22 +334,21 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
// geoPoint
// )
// }
- markerItemsNames.add(geoMarkerItem)
- val markerSymbol =
- MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.CENTER)
- geoMarkerItem.marker = markerSymbol
- }
- }
+ val markerSymbol =
+ MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.CENTER)
+ geoMarkerItem.marker = markerSymbol
+ itemizedLayer.itemList.add(geoMarkerItem)
}
}
- itemizedLayer.addItems(markerItemsNames)
- addLayer(itemizedLayer, NIMapView.LAYER_GROUPS.OPERATE)
- withContext(Dispatchers.Main) {
- itemizedLayer.map().updateMap(true)
- }
}
+ withContext(Dispatchers.Main) {
+ itemizedLayer.update()
+ }
+
+ itemizedLayer.populate()
}
+
/**
* 文字和图片拼装,文字换行
*
@@ -498,6 +561,9 @@ open class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView) :
}
+interface OnQsRecordItemClickListener {
+ fun onQsRecordList(list: MutableList)
+}
/**
* 基础
diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/layers/MyItemizedLayer.java b/collect-library/src/main/java/com/navinfo/collect/library/map/layers/MyItemizedLayer.java
index 0452ab8c..cae265b8 100644
--- a/collect-library/src/main/java/com/navinfo/collect/library/map/layers/MyItemizedLayer.java
+++ b/collect-library/src/main/java/com/navinfo/collect/library/map/layers/MyItemizedLayer.java
@@ -50,7 +50,7 @@ public class MyItemizedLayer extends ItemizedLayer {
public boolean run(List list1, int nearest) {
if (mOnItemGestureListener != null) {
- return mOnItemGestureListener.onItemSingleTapUp(MyItemizedLayer.this, list1, nearest);
+ return mOnItemGestureListener.onItemSingleTapUp(list1, nearest);
}
return false;
}
@@ -62,7 +62,7 @@ public class MyItemizedLayer extends ItemizedLayer {
public boolean run(List list1, int nearest) {
if (mOnItemGestureListener != null) {
- return mOnItemGestureListener.onItemLongPress(MyItemizedLayer.this, list1, nearest);
+ return mOnItemGestureListener.onItemLongPress(list1, nearest);
}
return false;
}
@@ -155,8 +155,8 @@ public class MyItemizedLayer extends ItemizedLayer {
}
public interface OnItemGestureListener {
- boolean onItemSingleTapUp(MyItemizedLayer layer, List list, int nearest);
+ boolean onItemSingleTapUp(List list, int nearest);
- boolean onItemLongPress(MyItemizedLayer layer, List list, int nearest);
+ boolean onItemLongPress(List list, int nearest);
}
}