From d926a147f340ab0756b28f8b660a5bbefa78de8a Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Fri, 5 May 2023 10:58:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=9B=BE?= =?UTF-8?q?=E5=B1=82=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/navinfo/omqs/Constant.kt | 6 +- .../omqs/ui/activity/map/MainActivity.kt | 24 +++++- .../omqs/ui/activity/map/MainViewModel.kt | 4 +- .../LayerManagerExpandableListAdapter.kt | 29 +++++--- .../layermanager/LayerManagerViewModel.kt | 13 +++- .../layermanager/LayermanagerFragment.kt | 26 ++++++- .../com/navinfo/omqs/util/FlowEventBus.kt | 73 +++++++++++++++++++ ...r_default_text_color_white_enable_gray.xml | 4 +- .../res/drawable/ic_baseline_check_24.xml | 5 ++ .../ic_baseline_keyboard_arrow_down_24.xml | 5 ++ .../ic_baseline_keyboard_arrow_left_24.xml | 5 ++ .../ic_baseline_keyboard_arrow_right_24.xml | 5 ++ .../res/drawable/selector_bg_round_button.xml | 8 ++ .../main/res/drawable/selector_img_expand.xml | 6 ++ .../res/drawable/shape_card_bg_default.xml | 11 +++ .../res/drawable/shape_round_btn_normal.xml | 5 ++ .../res/drawable/shape_round_btn_press.xml | 5 ++ .../res/layout/fragment_layer_manager.xml | 70 +++++++++++++++--- .../layout/layer_manager_checked_child.xml | 19 ++++- .../layout/layer_manager_checked_parent.xml | 31 ++++++-- app/src/main/res/values/colors.xml | 3 +- app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/styles.xml | 21 +++++- .../map/handler/LayerManagerHandler.kt | 3 +- .../map/source/OMDBTileDataSource.java | 16 ++-- 25 files changed, 348 insertions(+), 50 deletions(-) create mode 100644 app/src/main/java/com/navinfo/omqs/util/FlowEventBus.kt create mode 100644 app/src/main/res/drawable/ic_baseline_check_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_keyboard_arrow_down_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_keyboard_arrow_left_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_keyboard_arrow_right_24.xml create mode 100644 app/src/main/res/drawable/selector_bg_round_button.xml create mode 100644 app/src/main/res/drawable/selector_img_expand.xml create mode 100644 app/src/main/res/drawable/shape_card_bg_default.xml create mode 100644 app/src/main/res/drawable/shape_round_btn_normal.xml create mode 100644 app/src/main/res/drawable/shape_round_btn_press.xml diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index b3bd4539..0df2e6d9 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -62,8 +62,6 @@ class Constant { const val MESSAGE_PAGE_SIZE = 30 //消息列表一页最多数量 - lateinit var realm: Realm - //选择相机默认或者外设 const val SELECT_CAMERA_STATE = "select_camera_state" @@ -86,6 +84,10 @@ class Constant { const val OMDB_CONFIG = "omdb.config" const val OTHER_CONFIG = "other.config" const val LAYER_MANAGER_CONFIG = "LAYER_MANAGER_CONFIG" // 图层管理界面缓存的key + + val OMDB_LAYER_VISIBLE_LIST: MutableList = mutableListOf() // 记录OMDB数据显示的图层名称列表 + + const val EVENT_LAYER_MANAGER_CHANGE = "EVENT_LAYER_MANAGER_CHANGE" // 图层管理中的配置修改 } 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 620a0ece..73e3ec2b 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 @@ -9,17 +9,18 @@ import androidx.activity.viewModels import androidx.annotation.RequiresApi import androidx.core.view.WindowCompat import androidx.databinding.DataBindingUtil -import androidx.navigation.findNavController +import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager -import com.blankj.utilcode.util.ToastUtils import com.navinfo.collect.library.map.NIMapController -import com.navinfo.collect.library.map.handler.NiLocationListener import com.navinfo.omqs.Constant import com.navinfo.omqs.R +import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.databinding.ActivityMainBinding import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager import com.navinfo.omqs.ui.activity.BaseActivity +import com.navinfo.omqs.util.FlowEventBus import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch import javax.inject.Inject /** @@ -88,6 +89,23 @@ class MainActivity : BaseActivity() { viewModel.liveDataSignList.observe(this) { signAdapter.refreshData(it) } + + lifecycleScope.launch { + // 初始化地图图层控制接收器 + FlowEventBus.subscribe>(lifecycle, Constant.EVENT_LAYER_MANAGER_CHANGE) { + // 根据获取到的配置信息,筛选未勾选的图层名称 + val omdbVisibleList = it.filter { importConfig-> + importConfig.tableGroupName == "OMDB数据" + }.first().tables.filter { tableInfo -> + !tableInfo.checked + }.map { + tableInfo -> tableInfo.table + }.toList() + com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY = omdbVisibleList.toTypedArray() + // 刷新地图 + mapController.mMapView.vtmMap.clearMap() + } + } } override fun onStart() { 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 39a9f952..21201bf5 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 @@ -29,15 +29,18 @@ import com.navinfo.collect.library.utils.GeometryTools 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.db.RealmOperateHelper import com.navinfo.omqs.ui.dialog.CommonDialog import com.navinfo.omqs.ui.manager.TakePhotoManager import com.navinfo.omqs.util.DateTimeUtil +import com.navinfo.omqs.util.FlowEventBus import com.navinfo.omqs.util.SoundMeter import com.navinfo.omqs.util.SpeakMode import dagger.hilt.android.lifecycle.HiltViewModel import io.realm.RealmSet import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import org.oscim.core.GeoPoint @@ -88,7 +91,6 @@ class MainViewModel @Inject constructor( testPoint = it } } - } private fun initLocation() { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerExpandableListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerExpandableListAdapter.kt index aeacc1b4..9e6c267a 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerExpandableListAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerExpandableListAdapter.kt @@ -4,13 +4,12 @@ import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.BaseExpandableListAdapter -import android.widget.CheckBox +import android.widget.* import com.navinfo.omqs.R import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.bean.TableInfo -class LayerManagerExpandableListAdapter(private val context: Context, private val parentItems: List) : +class LayerManagerExpandableListAdapter(private val context: Context, val parentItems: List) : BaseExpandableListAdapter() { override fun getGroupCount(): Int { @@ -30,7 +29,6 @@ class LayerManagerExpandableListAdapter(private val context: Context, private va return parentItems[groupPosition].tables[childPosition] } - override fun getGroupId(groupPosition: Int): Long = groupPosition.toLong() override fun getChildId(groupPosition: Int, childPosition: Int): Long = childPosition.toLong() @@ -56,14 +54,18 @@ class LayerManagerExpandableListAdapter(private val context: Context, private va } val parentItem = getGroup(groupPosition) as ImportConfig - viewHolder.parentCheckBox.text = parentItem.tableGroupName + viewHolder.parentName.text = parentItem.tableGroupName viewHolder.parentCheckBox.isChecked = parentItem.checked - viewHolder.parentCheckBox.setOnCheckedChangeListener { _, isChecked -> - parentItem.checked = isChecked - parentItem.tables.forEach { it.checked = isChecked } + viewHolder.parentCheckBox.setOnClickListener { + parentItem.checked = !parentItem.checked + parentItem.tables.forEach { it.checked = parentItem.checked } notifyDataSetChanged() } - + if (isExpanded) { + viewHolder.imgGroupIndicator.setImageResource(R.drawable.ic_baseline_keyboard_arrow_down_24) + } else { + viewHolder.imgGroupIndicator.setImageResource(R.drawable.ic_baseline_keyboard_arrow_right_24) + } return view!! } @@ -87,10 +89,10 @@ class LayerManagerExpandableListAdapter(private val context: Context, private va } val childItem = getChild(groupPosition, childPosition) as TableInfo - viewHolder.childCheckBox.text = childItem.name + viewHolder.childName.text = childItem.name viewHolder.childCheckBox.isChecked = childItem.checked - viewHolder.childCheckBox.setOnCheckedChangeListener { _, isChecked -> - childItem.checked = isChecked + viewHolder.childCheckBox.setOnClickListener { + childItem.checked = !childItem.checked parentItems[groupPosition].checked = parentItems[groupPosition].tables.all { it.checked } notifyDataSetChanged() } @@ -102,9 +104,12 @@ class LayerManagerExpandableListAdapter(private val context: Context, private va internal class ParentViewHolder(view: View) { val parentCheckBox: CheckBox = view.findViewById(R.id.chk_layermanager_parent) + val parentName: TextView = view.findViewById(R.id.tv_layermanager_parent_name) + val imgGroupIndicator: ImageView = view.findViewById(R.id.img_group_indicator) } internal class ChildViewHolder(view: View) { val childCheckBox: CheckBox = view.findViewById(R.id.chk_layermanager_child) + val childName: TextView = view.findViewById(R.id.tv_layermanager_child_name) } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt index c73ccc2e..6f0ae558 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt @@ -1,12 +1,15 @@ package com.navinfo.omqs.ui.fragment.layermanager import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import com.blankj.utilcode.util.FileIOUtils import com.blankj.utilcode.util.SPStaticUtils import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.navinfo.omqs.Constant import com.navinfo.omqs.bean.ImportConfig +import com.navinfo.omqs.util.FlowEventBus +import kotlinx.coroutines.launch import java.io.File class LayerManagerViewModel(): ViewModel() { @@ -16,7 +19,7 @@ class LayerManagerViewModel(): ViewModel() { fun getLayerConfigList(): List { // 首先读取Shared文件,如果存在则直接返回,否则读取config文件 - val importConfigList = with(SPStaticUtils.getString(Constant.LAYER_MANAGER_CONFIG, null)) { + val importConfigList: List? = SPStaticUtils.getString(Constant.LAYER_MANAGER_CONFIG, null).run { if (this!=null) { gson.fromJson(this, object : TypeToken>(){}.type) } else { @@ -30,6 +33,14 @@ class LayerManagerViewModel(): ViewModel() { } } + fun saveLayerConfigList(listData: List) { + SPStaticUtils.put(Constant.EVENT_LAYER_MANAGER_CHANGE, gson.toJson(listData)) + // 发送新的配置数据 + viewModelScope.launch { + FlowEventBus.post(Constant.EVENT_LAYER_MANAGER_CHANGE, listData) + } + } + private fun getLayerConfigListFromAssetsFile(): List { val resultList = mutableListOf() if (omdbConfigFile.exists()) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt index b49e1b39..ba11a236 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt @@ -6,11 +6,15 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels +import androidx.navigation.fragment.findNavController +import com.blankj.utilcode.util.SPStaticUtils +import com.navinfo.omqs.Constant import com.navinfo.omqs.databinding.FragmentEmptyBinding import com.navinfo.omqs.databinding.FragmentLayerManagerBinding +import com.navinfo.omqs.ui.fragment.BaseFragment import com.navinfo.omqs.ui.fragment.offlinemap.OfflineMapCityListViewModel -class LayermanagerFragment :Fragment(){ +class LayermanagerFragment : BaseFragment(){ private var _binding: FragmentLayerManagerBinding? = null private val binding get() = _binding!! @@ -28,6 +32,26 @@ class LayermanagerFragment :Fragment(){ super.onViewCreated(view, savedInstanceState) val adapter = LayerManagerExpandableListAdapter(requireContext(), viewModel.getLayerConfigList()) binding.elvLayerManager.setAdapter(adapter) + // 默认显示第一个父项下的子类 + binding.elvLayerManager.expandGroup(0) + binding.elvLayerManager.setGroupIndicator(null) + binding.elvLayerManager.setOnGroupClickListener { expandableListView, view, groupPosition, l -> + if (expandableListView.isGroupExpanded(groupPosition)) { + binding.elvLayerManager.collapseGroup(groupPosition) + } else { + binding.elvLayerManager.expandGroup(groupPosition) + } + } + + binding.imgBack.setOnClickListener { + findNavController().navigateUp() + } + + binding.tvTitle.text = findNavController().currentDestination?.label + + binding.imgConfirm.setOnClickListener { // 用户点击确认,重新设置当前的图层显隐控制 + viewModel.saveLayerConfigList(adapter.parentItems) + } } override fun onDestroyView() { diff --git a/app/src/main/java/com/navinfo/omqs/util/FlowEventBus.kt b/app/src/main/java/com/navinfo/omqs/util/FlowEventBus.kt new file mode 100644 index 00000000..1353aeb9 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/util/FlowEventBus.kt @@ -0,0 +1,73 @@ +package com.navinfo.omqs.util + +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.repeatOnLifecycle +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow + +object FlowEventBus { + private val bus: HashMap> = hashMapOf() + + private fun with(key: String): MutableSharedFlow { + if (!bus.containsKey(key)) { + val flow = MutableSharedFlow() + bus[key] = flow + } + return bus[key] as MutableSharedFlow + } + + /** + * 对外只暴露SharedFlow + * @param action String + * @return SharedFlow + */ + fun getFlow(action: String): SharedFlow { + return with(action) + } + + + /** + * 挂起函数 + * @param action String + * @param data T + */ + suspend fun post(action: String, data: T) { + with(action).emit(data) + } + + /** + * 详见tryEmit和emit的区别 + * @param action String + * @param data T + * @return Boolean + */ + fun tryPost(action: String, data: T): Boolean { + return with(action).tryEmit(data) + } + + /** + * sharedFlow会长久持有,所以要加声明周期限定,不然会出现内存溢出 + * @param lifecycle Lifecycle + * @param action String + * @param block Function1 + */ + suspend fun subscribe(lifecycle: Lifecycle, action: String, block: (T) -> Unit) { + lifecycle.repeatOnLifecycle(Lifecycle.State.CREATED) { + with(action).collect { + block(it) + } + } + } + + /** + * 注意,使用这个方法需要将协程在合适的时候取消,否则会导致内存溢出 + * @param action String + * @param block Function1 + */ + suspend fun subscribe(action: String, block: (T) -> Unit) { + with(action).collect { + block(it) + } + } + +} \ No newline at end of file diff --git a/app/src/main/res/color/selector_default_text_color_white_enable_gray.xml b/app/src/main/res/color/selector_default_text_color_white_enable_gray.xml index 18707d36..f3d0a646 100644 --- a/app/src/main/res/color/selector_default_text_color_white_enable_gray.xml +++ b/app/src/main/res/color/selector_default_text_color_white_enable_gray.xml @@ -1,6 +1,8 @@ + + + - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_baseline_check_24.xml b/app/src/main/res/drawable/ic_baseline_check_24.xml new file mode 100644 index 00000000..a95c8560 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_check_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_keyboard_arrow_down_24.xml b/app/src/main/res/drawable/ic_baseline_keyboard_arrow_down_24.xml new file mode 100644 index 00000000..000b1a11 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_keyboard_arrow_down_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_keyboard_arrow_left_24.xml b/app/src/main/res/drawable/ic_baseline_keyboard_arrow_left_24.xml new file mode 100644 index 00000000..5b5b57c0 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_keyboard_arrow_left_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_keyboard_arrow_right_24.xml b/app/src/main/res/drawable/ic_baseline_keyboard_arrow_right_24.xml new file mode 100644 index 00000000..44f9953c --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_keyboard_arrow_right_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/selector_bg_round_button.xml b/app/src/main/res/drawable/selector_bg_round_button.xml new file mode 100644 index 00000000..bb411691 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_round_button.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/selector_img_expand.xml b/app/src/main/res/drawable/selector_img_expand.xml new file mode 100644 index 00000000..c9788a8f --- /dev/null +++ b/app/src/main/res/drawable/selector_img_expand.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/app/src/main/res/drawable/shape_card_bg_default.xml b/app/src/main/res/drawable/shape_card_bg_default.xml new file mode 100644 index 00000000..8abc0e3e --- /dev/null +++ b/app/src/main/res/drawable/shape_card_bg_default.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_round_btn_normal.xml b/app/src/main/res/drawable/shape_round_btn_normal.xml new file mode 100644 index 00000000..40cff95d --- /dev/null +++ b/app/src/main/res/drawable/shape_round_btn_normal.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_round_btn_press.xml b/app/src/main/res/drawable/shape_round_btn_press.xml new file mode 100644 index 00000000..e11e679f --- /dev/null +++ b/app/src/main/res/drawable/shape_round_btn_press.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_layer_manager.xml b/app/src/main/res/layout/fragment_layer_manager.xml index cd8f3149..44d94c43 100644 --- a/app/src/main/res/layout/fragment_layer_manager.xml +++ b/app/src/main/res/layout/fragment_layer_manager.xml @@ -1,12 +1,64 @@ - - - + - \ No newline at end of file + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + style="@style/left_pannel_title_layout"> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layer_manager_checked_child.xml b/app/src/main/res/layout/layer_manager_checked_child.xml index 99cd89f9..158d2140 100644 --- a/app/src/main/res/layout/layer_manager_checked_child.xml +++ b/app/src/main/res/layout/layer_manager_checked_child.xml @@ -1,10 +1,21 @@ - + + + android:paddingVertical="0dp" + android:paddingHorizontal="@dimen/default_widget_padding" + android:checked="true"> + + \ No newline at end of file diff --git a/app/src/main/res/layout/layer_manager_checked_parent.xml b/app/src/main/res/layout/layer_manager_checked_parent.xml index 66756e88..2c5c4a52 100644 --- a/app/src/main/res/layout/layer_manager_checked_parent.xml +++ b/app/src/main/res/layout/layer_manager_checked_parent.xml @@ -1,11 +1,32 @@ - + android:layout_height="wrap_content" + android:orientation="horizontal"> - \ No newline at end of file + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 7f540798..7eea917c 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,11 +2,12 @@ #00000000 #dadade + #f4f4fc #6c14c4 #4c54ec #c42cd4 #FFFFFF - #4263EB + #3c3c44 #aa342c4c #FFFFFF #e74c3c diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 7785420d..4ad74c4a 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -6,6 +6,7 @@ 8dp 176dp 10dp + 22sp 15sp 13sp 10sp diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d74b2586..101bdcfd 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -76,7 +76,7 @@ + + + + + + + + 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 085a7766..ba22bce1 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 @@ -47,6 +47,8 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView,tracePa private lateinit var omdbVectorTileLayer: VectorTileLayer private lateinit var omdbLabelLayer: LabelLayer + private val omdbTileSource by lazy { OMDBTileSource() } + init { initMap() } @@ -97,7 +99,6 @@ class LayerManagerHandler(context: AppCompatActivity, mapView: NIMapView,tracePa } private fun initOMDBVectorTileLayer() { - val omdbTileSource: OMDBTileSource = OMDBTileSource() omdbVectorTileLayer = VectorTileLayer(mMapView.vtmMap, omdbTileSource) omdbLabelLayer = LabelLayer(mMapView.vtmMap, omdbVectorTileLayer, LabelTileLoaderHook(), Constant.OMDB_MIN_ZOOM) if(omdbVectorTileLayer!=null){ diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java index 31f2291a..277c6f3c 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBTileDataSource.java @@ -41,14 +41,14 @@ public class OMDBTileDataSource implements ITileDataSource { RealmQuery realmQuery = Realm.getDefaultInstance().where(RenderEntity.class) .rawPredicate("tileX>="+xStart+" and tileX<="+xEnd+" and tileY>="+yStart+" and tileY<="+yEnd); -// // 筛选不显示的数据 -// if (Constant.HAD_LAYER_INVISIABLE_ARRAY!=null&&Constant.HAD_LAYER_INVISIABLE_ARRAY.length>0) { -// realmQuery.beginGroup(); -// for (String type: Constant.HAD_LAYER_INVISIABLE_ARRAY) { -// realmQuery.notEqualTo("name", type); -// } -// realmQuery.endGroup(); -// } + // 筛选不显示的数据 + if (Constant.HAD_LAYER_INVISIABLE_ARRAY!=null&&Constant.HAD_LAYER_INVISIABLE_ARRAY.length>0) { + realmQuery.beginGroup(); + for (String type: Constant.HAD_LAYER_INVISIABLE_ARRAY) { + realmQuery.notEqualTo("table", type); + } + realmQuery.endGroup(); + } List listResult = realmQuery/*.distinct("id")*/.findAll(); if (!listResult.isEmpty()) { mThreadLocalDecoders.get().decode(tile, mapDataSink, listResult); From 464ca815c47dfb8d5f78bdeadd7700fff18c72e9 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Fri, 5 May 2023 14:12:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=9B=BE=E5=B1=82?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/navinfo/omqs/Constant.kt | 1 - app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index 0df2e6d9..87db6dfd 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -83,7 +83,6 @@ class Constant { const val OMDB_CONFIG = "omdb.config" const val OTHER_CONFIG = "other.config" - const val LAYER_MANAGER_CONFIG = "LAYER_MANAGER_CONFIG" // 图层管理界面缓存的key val OMDB_LAYER_VISIBLE_LIST: MutableList = mutableListOf() // 记录OMDB数据显示的图层名称列表 diff --git a/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt b/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt index 2349f384..41a96486 100644 --- a/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt +++ b/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt @@ -16,7 +16,7 @@ class LayerConfigUtils { fun getLayerConfigList(): List { // 首先读取Shared文件,如果存在则直接返回,否则读取config文件 - return SPStaticUtils.getString(Constant.LAYER_MANAGER_CONFIG, null).let { + return SPStaticUtils.getString(Constant.EVENT_LAYER_MANAGER_CHANGE, null).let { if (this!=null) { val result: List = gson.fromJson(it, object : TypeToken>(){}.type) result @@ -26,7 +26,7 @@ class LayerConfigUtils { } } - fun getLayerConfigListFromAssetsFile(): List { + private fun getLayerConfigListFromAssetsFile(): List { val resultList = mutableListOf() if (omdbConfigFile.exists()) { val omdbConfiStr = FileIOUtils.readFile2String(omdbConfigFile)