From f40f1a1881d4cba8135ee5eb38a0d32402fb13b4 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 12 Sep 2023 17:18:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A010S=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D=E5=8F=8A=E6=8C=87=E5=8C=97=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/navinfo/omqs/Constant.kt | 5 ++ .../omqs/ui/activity/map/MainActivity.kt | 16 +++- .../omqs/ui/activity/map/MainViewModel.kt | 44 ++++++++-- .../personalcenter/PersonalCenterFragment.kt | 81 +++++++++++++----- .../drawable-xxhdpi/icon_location_north.png | Bin 0 -> 1797 bytes .../drawable-xxhdpi/icon_location_reset.png | Bin 0 -> 4665 bytes app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/layout/fragment_note.xml | 2 +- .../main/res/menu/personal_center_menu.xml | 24 +++--- .../library/map/handler/LineHandler.kt | 2 +- 10 files changed, 130 insertions(+), 48 deletions(-) create mode 100644 app/src/main/res/drawable-xxhdpi/icon_location_north.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_location_reset.png diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index a3b1c92f..11424dff 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -103,6 +103,11 @@ class Constant { */ var AUTO_LOCATION = false + /** + * 地图视角是否锁定 + */ + var MapRotateEnable = false + var IS_VIDEO_SPEED by kotlin.properties.Delegates.notNull() const val message_status_late = "预约,待发送" 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 b6213b70..1b1b8038 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 @@ -325,12 +325,18 @@ class MainActivity : BaseActivity() { 7, RoundingMode.HALF_UP ) },${BigDecimal(it.latitude).setScale(7, RoundingMode.HALF_UP)}" + viewModel.startAutoLocationTimer() + binding.mainActivityLocation.setImageResource(R.drawable.icon_location) } } catch (e: Exception) { Log.e("qj", "异常 $e") } } - + viewModel.liveDataAutoLocation.observe(this){ + if(it==true){ + onClickLocation() + } + } viewModel.liveDataSignMoreInfo.observe(this) { val fragment = supportFragmentManager.findFragmentById(R.id.main_activity_sign_more_info_fragment) @@ -1129,6 +1135,14 @@ class MainActivity : BaseActivity() { rightController.navigate(R.id.NoteFragment) } + /** + * 点击定位按钮 + */ + fun onClickLocation() { + binding.mainActivityLocation.setImageResource(R.drawable.icon_location_north) + viewModel.onClickLocationButton() + } + /** * 新增评测link */ 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 384e994f..0b93dcc6 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 @@ -51,7 +51,6 @@ import io.realm.RealmSet import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch @@ -132,6 +131,11 @@ class MainViewModel @Inject constructor( */ val liveDataCenterPoint = MutableLiveData() + /** + * 是否自动定位 + */ + val liveDataAutoLocation = MutableLiveData() + // var testPoint = GeoPoint(0, 0) //uuid标识,用于记录轨迹组 @@ -209,6 +213,11 @@ class MainViewModel @Inject constructor( private var timer: Timer? = null + //自动定位 + private var autoLocationTimer: Timer? = null + + private var disAutoLocationTime: Long = 10000 + private var disTime: Long = 1000 private var currentMapZoomLevel: Int = 0 @@ -227,6 +236,7 @@ class MainViewModel @Inject constructor( when (e) { Map.SCALE_EVENT, Map.MOVE_EVENT, Map.ROTATE_EVENT -> liveDataCenterPoint.value = mapPosition + //Map.CLEAR_EVENT->startAutoLocationTimer() } currentMapZoomLevel = mapController.mMapView.vtmMap.mapPosition.zoomLevel @@ -652,12 +662,6 @@ class MainViewModel @Inject constructor( ) ) } - withContext(Dispatchers.Main) { - if (Constant.AUTO_LOCATION) { - mapController.mMapView.vtmMap.animator() - .animateTo(GeoPoint(location.latitude, location.longitude)) - } - } } } //显示轨迹图层 @@ -674,7 +678,7 @@ class MainViewModel @Inject constructor( point.longitude, point.latitude ), - buffer = 2.0, catchAll = false, + buffer = 2.4, catchAll = false, ) //增加道路线过滤原则 val filterResult = itemList.filter { @@ -887,6 +891,9 @@ class MainViewModel @Inject constructor( * 点击我的位置,回到我的位置 */ fun onClickLocationButton() { + val mapPosition: MapPosition = mapController.mMapView.vtmMap.getMapPosition() + mapPosition.setBearing(0f) // 锁定角度,自动将地图旋转到正北方向 + mapController.mMapView.vtmMap.setMapPosition(mapPosition) mapController.locationLayerHandler.animateToCurrentPosition() } @@ -1390,6 +1397,27 @@ class MainViewModel @Inject constructor( } + /** + * 开启自动定位 + */ + fun startAutoLocationTimer(){ + if (autoLocationTimer != null) { + cancelAutoLocation() + } + autoLocationTimer = fixedRateTimer("", false, disAutoLocationTime, disAutoLocationTime) { + liveDataAutoLocation.postValue(true) + Log.e("qj","自动定位开始执行") + startAutoLocationTimer() + } + } + + /** + * 结束自动定位 + */ + fun cancelAutoLocation() { + autoLocationTimer?.cancel() + } + /** * 开启测量工具 */ diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index 90fa5f37..d5ae7409 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -10,6 +10,8 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.annotation.RequiresApi +import androidx.core.view.forEach +import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.blankj.utilcode.util.ToastUtils @@ -26,24 +28,28 @@ import com.navinfo.omqs.databinding.FragmentPersonalCenterBinding import com.navinfo.omqs.db.ImportOMDBHelper import com.navinfo.omqs.hilt.ImportOMDBHiltFactory import com.navinfo.omqs.tools.CoroutineUtils -import com.navinfo.omqs.ui.fragment.BaseFragment +import com.navinfo.omqs.ui.activity.map.MainViewModel import com.navinfo.omqs.ui.activity.scan.QrCodeActivity +import com.navinfo.omqs.ui.fragment.BaseFragment import com.permissionx.guolindev.PermissionX import dagger.hilt.android.AndroidEntryPoint import org.oscim.core.GeoPoint +import org.oscim.core.MapPosition import javax.inject.Inject /** * 个人中心 */ @AndroidEntryPoint -class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?)? = null) : BaseFragment(), +class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?)? = null) : + BaseFragment(), FSAFActivityCallbacks { private var _binding: FragmentPersonalCenterBinding? = null private val binding get() = _binding!! private val fileChooser by lazy { FileChooser(requireContext()) } private val viewModel by lazy { viewModels().value } + private val viewMainModel by activityViewModels() @Inject lateinit var importOMDBHiltFactory: ImportOMDBHiltFactory @@ -66,6 +72,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? when (it.itemId) { R.id.personal_center_menu_offline_map -> findNavController().navigate(R.id.OfflineMapFragment) + R.id.personal_center_menu_obtain_data -> { // 生成数据,根据sqlite文件生成对应的zip文件 fileChooser.openChooseFileDialog(object : FileChooserCallback() { override fun onCancel(reason: String) { @@ -90,6 +97,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? } }) } + R.id.personal_center_menu_import_data -> { // 导入zip数据 fileChooser.openChooseFileDialog(object : FileChooserCallback() { override fun onCancel(reason: String) { @@ -106,6 +114,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? } }) } + R.id.personal_center_menu_import_yuan_data -> { // 用户选中导入数据,打开文件选择器,用户选择导入的数据文件目录 fileChooser.openChooseFileDialog(object : FileChooserCallback() { @@ -117,49 +126,59 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? } }) } + R.id.personal_center_menu_open_auto_location -> { - Constant.AUTO_LOCATION = true + Constant.AUTO_LOCATION = !Constant.AUTO_LOCATION + if (Constant.AUTO_LOCATION) { + it.title = "关闭自动定位" + viewMainModel.startAutoLocationTimer() + } else { + it.title = "开启10S自动定位" + viewMainModel.cancelAutoLocation() + } } - R.id.personal_center_menu_close_auto_location -> { - Constant.AUTO_LOCATION = false + + R.id.personal_center_menu_rotate_over_look -> { + niMapController.mMapView.vtmMap.eventLayer.enableTilt(Constant.MapRotateEnable) + niMapController.mMapView.vtmMap.eventLayer.enableRotation(Constant.MapRotateEnable) + Constant.MapRotateEnable = !Constant.MapRotateEnable + if (Constant.MapRotateEnable) { + val mapPosition: MapPosition = + niMapController.mMapView.vtmMap.getMapPosition() + mapPosition.setBearing(0f) // 锁定角度,自动将地图旋转到正北方向 + niMapController.mMapView.vtmMap.setMapPosition(mapPosition) + it.title = "开启地图旋转及视角" + } else { + it.title = "锁定地图旋转及视角" + } } + R.id.personal_center_menu_test -> { viewModel.readRealmData() //116.25017070328308 40.061730653134696 // 定位到指定位置 niMapController.mMapView.vtmMap.animator() // .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 )) - .animateTo(GeoPoint(40.51850916836801,115.78801387178642)) + .animateTo(GeoPoint(40.51850916836801, 115.78801387178642)) } + R.id.personal_center_menu_open_all_layer -> { MapParamUtils.setDataLayerEnum(DataLayerEnum.SHOW_ALL_LAYERS) niMapController.layerManagerHandler.updateOMDBVectorTileLayer() viewModel.realmOperateHelper.updateRealmDefaultInstance() } + R.id.personal_center_menu_close_hide_layer -> { MapParamUtils.setDataLayerEnum(DataLayerEnum.ONLY_ENABLE_LAYERS) niMapController.layerManagerHandler.updateOMDBVectorTileLayer() viewModel.realmOperateHelper.updateRealmDefaultInstance() } -// R.id.personal_center_menu_task_list -> { -// findNavController().navigate(R.id.TaskManagerFragment) -// } -// R.id.personal_center_menu_qs_record_list -> { -// findNavController().navigate(R.id.QsRecordListFragment) -// } -// R.id.personal_center_menu_layer_manager -> { // 图层管理 -// findNavController().navigate(R.id.QsLayerManagerFragment) -// } -/* R.id.personal_center_menu_qs_record_list -> { - findNavController().navigate(R.id.QsRecordListFragment) - } - R.id.personal_center_menu_layer_manager -> { // 图层管理 - findNavController().navigate(R.id.QsLayerManagerFragment) - }*/ + R.id.personal_center_menu_scan_qr_code -> { //跳转二维码扫描界面 checkPermission() } + R.id.personal_center_menu_scan_indoor_data -> { indoorDataListener?.invoke(true) } @@ -171,6 +190,24 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? ToastUtils.showShort(it) } fileChooser.setCallbacks(this@PersonalCenterFragment) + binding.root.menu.forEach { + when (it.itemId) { + R.id.personal_center_menu_open_auto_location -> { + if (Constant.AUTO_LOCATION) { + it.title = "关闭自动定位" + } else { + it.title = "开启10S自动定位" + } + } + R.id.personal_center_menu_rotate_over_look -> { + if (Constant.MapRotateEnable) { + it.title = "开启地图旋转及视角" + } else { + it.title = "锁定地图旋转及视角" + } + } + } + } } private fun intentTOQRCode() { @@ -198,7 +235,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? .request { allGranted, grantedList, deniedList -> if (allGranted) { //所有权限已经授权 - Toast.makeText(context,"授权成功",Toast.LENGTH_LONG).show() + Toast.makeText(context, "授权成功", Toast.LENGTH_LONG).show() intentTOQRCode() } else { Toast.makeText(context, "拒绝权限: $deniedList", Toast.LENGTH_LONG).show() diff --git a/app/src/main/res/drawable-xxhdpi/icon_location_north.png b/app/src/main/res/drawable-xxhdpi/icon_location_north.png new file mode 100644 index 0000000000000000000000000000000000000000..a68efa1a128ff7eed36df543bc92a44c41ea8676 GIT binary patch literal 1797 zcmaJ?c~BE)6puoMV6}*%Kyh3GRS-6NWD_<4lt>~;B_0qJt5!Cf4J?psNEQ?D0P#dC zhmKlMp-#1mjM{=A6&0#Z6}28%DFRlRs{q1|Za&^%uFRJ)lVQz#bDQHiuELeO1XCje-DgkZi{ z18dAtR1&Sqv`}%GGqq%93MthKrcMFE?J~}QkzxtJZcH^48ry$FQyPz*Mp1`HSB0*Ips zIXdT^P8t+(?djOQoel2rcDg7NH&PaEcDCn81GteKqgKeZ_Lk0tnoZXuy-Gqh<&+2l zH)J+<-rO|Gt>oBz&!ftJzRa5DeDXkG`RjyWw@mj`&$^Re*LM23ypDV_>F%FDOgVC@ z(7n}IT-2c7;%!gb8Pj;`%8A=WnY~XJu`5ztL(dwvZ3@5gygQz;Cn&OCHZ;{enOk+7 zU)&M;E?oi>wPb9YYo|`fxx;Ans|J5k` zq#~@Oa_Q0S&K_N!W@2sWhL)JqPItb@&B$LBYz%0h7@bq$)9ZuZp6GGDsq_&2;BMHd zA(L7ohi1IAtyO)0xvF%PzhrAU?5XKZF zSo-L2zcCLAB!%u3y(Rs&t)ymHsrv?D(qQGY9%c4Mau=5KW~rK=Rw!LJ?{xB%wA~sH;u@;k%i45HJ2zze(Bn4)#4SmR-s^iEKPI(ursD9lgq;5X-ZilQ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/icon_location_reset.png b/app/src/main/res/drawable-xxhdpi/icon_location_reset.png new file mode 100644 index 0000000000000000000000000000000000000000..25244ad01f4f9250343715a772372a02345a65d6 GIT binary patch literal 4665 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 Z29WO{V8xnQJHLMBSX(%l*O~ey{2vkf1abfX literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 81439ebf..95e1f5b9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -284,8 +284,8 @@ android:id="@+id/main_activity_location" style="@style/zoom_btns_style" android:layout_marginBottom="12dp" - android:onClick="@{()->viewModel.onClickLocationButton()}" - android:src="@drawable/icon_location" + android:onClick="@{()->mainActivity.onClickLocation()}" + android:src="@drawable/icon_location_north" app:layout_constraintBottom_toTopOf="@id/main_activity_map_update" app:layout_constraintRight_toRightOf="@id/main_activity_map_update" /> diff --git a/app/src/main/res/layout/fragment_note.xml b/app/src/main/res/layout/fragment_note.xml index 121d4b04..d45bdfba 100644 --- a/app/src/main/res/layout/fragment_note.xml +++ b/app/src/main/res/layout/fragment_note.xml @@ -41,7 +41,7 @@ android:layout_marginRight="5dp" android:background="@color/transparent" android:src="@drawable/icon_delete" - app:layout_constraintRight_toLeftOf="@id/note_bar_cancel" + app:layout_constraintRight_toLeftOf="@id/note_bar_save" app:layout_constraintTop_toTopOf="@id/note_bar_save" /> + + + android:title="版本:23QE4_V1.5.0_20230904_A" /> - - - -