From 3883c934fcc65614f6420e1d5633ddf71e105993 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Fri, 14 Jul 2023 16:40:14 +0800 Subject: [PATCH 1/4] merge code --- .../omqs/ui/activity/map/MainViewModel.kt | 15 +++++++-------- .../{mipmap-xxhdpi => mipmap-hdpi}/icon_gps.png | Bin .../icon_gps_1.png | Bin .../icon_nilocation.png | Bin .../icon_nilocation_1.png | Bin 5 files changed, 7 insertions(+), 8 deletions(-) rename collect-library/src/main/res/{mipmap-xxhdpi => mipmap-hdpi}/icon_gps.png (100%) rename collect-library/src/main/res/{mipmap-xxhdpi => mipmap-hdpi}/icon_gps_1.png (100%) rename collect-library/src/main/res/{mipmap-xxhdpi => mipmap-hdpi}/icon_nilocation.png (100%) rename collect-library/src/main/res/{mipmap-xxhdpi => mipmap-hdpi}/icon_nilocation_1.png (100%) 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 427a2321..47c105fc 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 @@ -266,23 +266,22 @@ class MainViewModel @Inject constructor( location.taskId = id.toString() //增加间距判断 if (lastNiLocaion != null) { - val disance = GeometryTools.distanceToDouble( - GeoPoint(location.latitude, location.longitude), GeoPoint( - lastNiLocaion!!.latitude, lastNiLocaion!!.longitude - ) - ) - //相距差距大于0.5米以上进行存储 - if (disance > 0.5) { + val disance = GeometryTools.getDistance( + location.latitude, location.longitude, + lastNiLocaion!!.latitude, lastNiLocaion!!.longitude) + //相距差距大于2.5米以上进行存储 + if (disance > 2.5) { traceDataBase.niLocationDao.insert(location) mapController.markerHandle.addNiLocationMarkerItem(location) + mapController.mMapView.vtmMap.updateMap(true) } } else { traceDataBase.niLocationDao.insert(location) mapController.markerHandle.addNiLocationMarkerItem(location) + mapController.mMapView.vtmMap.updateMap(true) } lastNiLocaion = location - //mapController.mMapView.vtmMap.updateMap(true) } } //用于定位点捕捉道路 diff --git a/collect-library/src/main/res/mipmap-xxhdpi/icon_gps.png b/collect-library/src/main/res/mipmap-hdpi/icon_gps.png similarity index 100% rename from collect-library/src/main/res/mipmap-xxhdpi/icon_gps.png rename to collect-library/src/main/res/mipmap-hdpi/icon_gps.png diff --git a/collect-library/src/main/res/mipmap-xxhdpi/icon_gps_1.png b/collect-library/src/main/res/mipmap-hdpi/icon_gps_1.png similarity index 100% rename from collect-library/src/main/res/mipmap-xxhdpi/icon_gps_1.png rename to collect-library/src/main/res/mipmap-hdpi/icon_gps_1.png diff --git a/collect-library/src/main/res/mipmap-xxhdpi/icon_nilocation.png b/collect-library/src/main/res/mipmap-hdpi/icon_nilocation.png similarity index 100% rename from collect-library/src/main/res/mipmap-xxhdpi/icon_nilocation.png rename to collect-library/src/main/res/mipmap-hdpi/icon_nilocation.png diff --git a/collect-library/src/main/res/mipmap-xxhdpi/icon_nilocation_1.png b/collect-library/src/main/res/mipmap-hdpi/icon_nilocation_1.png similarity index 100% rename from collect-library/src/main/res/mipmap-xxhdpi/icon_nilocation_1.png rename to collect-library/src/main/res/mipmap-hdpi/icon_nilocation_1.png From 6210f41b691a06aba981972565f1a0b4e138d36e Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Mon, 17 Jul 2023 14:49:21 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=A4=E5=86=85?= =?UTF-8?q?=E6=95=B4=E7=90=86=E5=B7=A5=E5=85=B7=E6=9B=B4=E6=96=B0=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/navinfo/omqs/bean/QRCodeBean.kt | 2 +- .../navinfo/omqs/http/NetworkServiceImpl.kt | 11 +- .../omqs/http/RetrofitNetworkServiceAPI.kt | 4 +- .../omqs/http/taskupload/TaskUploadScope.kt | 19 ++- .../omqs/ui/activity/map/MainActivity.kt | 7 + .../omqs/ui/activity/scan/QRCodeViewModel.kt | 32 +++-- .../ui/fragment/console/ConsoleFragment.kt | 19 ++- .../personalcenter/PersonalCenterFragment.kt | 8 +- .../ui/fragment/tasklink/TaskLinkViewModel.kt | 4 +- .../ui/fragment/tasklist/TaskListAdapter.kt | 3 +- app/src/main/res/layout/activity_main.xml | 128 +++++++++--------- .../main/res/layout/connect_out_camera.xml | 1 + app/src/main/res/layout/console_off.xml | 2 +- .../main/res/menu/personal_center_menu.xml | 12 +- vtm | 2 +- 15 files changed, 155 insertions(+), 99 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/bean/QRCodeBean.kt b/app/src/main/java/com/navinfo/omqs/bean/QRCodeBean.kt index 4790dd17..2438f705 100644 --- a/app/src/main/java/com/navinfo/omqs/bean/QRCodeBean.kt +++ b/app/src/main/java/com/navinfo/omqs/bean/QRCodeBean.kt @@ -2,5 +2,5 @@ package com.navinfo.omqs.bean data class QRCodeBean( var errcode: Int = -1, - var msg: String = "" + var errmsg: String = "" ) \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt index 5bcd2782..e2ce3a7e 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt @@ -101,7 +101,16 @@ class NetworkServiceImpl @Inject constructor( //在IO线程中运行 withContext(Dispatchers.IO) { return@withContext try { - val result = netApi.retrofitUpdateServerInfo(url,indoorConnectionInfoBean) + val map: MutableMap = HashMap() + map["username"] = indoorConnectionInfoBean.username + map["uname"] = indoorConnectionInfoBean.uname + map["userid"] = indoorConnectionInfoBean.userid + map["plate"] = indoorConnectionInfoBean.plate + map["token"] = indoorConnectionInfoBean.token + map["baseurl"] = indoorConnectionInfoBean.baseurl + map["platform"] = indoorConnectionInfoBean.platform + + val result = netApi.retrofitUpdateServerInfo(url,map) if (result.isSuccessful) { if (result.code() == 200) { NetResult.Success(result.body()) diff --git a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt index 2f56bbab..640c0e21 100644 --- a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt +++ b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt @@ -78,9 +78,9 @@ interface RetrofitNetworkServiceAPI { /** * 登录接口 */ - @Headers("Content-Type: application/json") + @FormUrlEncoded @POST - suspend fun retrofitUpdateServerInfo(@Url url: String,@Body indoorConnectionInfoBean: IndoorConnectionInfoBean): Response + suspend fun retrofitUpdateServerInfo(@Url url: String,@FieldMap map: Map): Response @Headers("Content-Type: application/json") @POST("/devcp/uploadSceneProblem") diff --git a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt index 2de99031..19e28738 100644 --- a/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt +++ b/app/src/main/java/com/navinfo/omqs/http/taskupload/TaskUploadScope.kt @@ -176,6 +176,19 @@ class TaskUploadScope( } else if (it.problemType == "遗漏") { problemType = 2 } + + var roadClassfcation = 0 + + var roadFunctionGrade = 0 + + var dataLevel = 0 + + if(hadLinkDvoBean.linkInfo!=null){ + roadClassfcation = hadLinkDvoBean.linkInfo!!.kind + roadFunctionGrade = hadLinkDvoBean.linkInfo!!.functionLevel + dataLevel = hadLinkDvoBean.linkInfo!!.dataLevel + } + var evaluationWay = 2 val evaluationInfo = EvaluationInfo( evaluationTaskId = taskBean.id.toString(), @@ -193,11 +206,11 @@ class TaskUploadScope( evaluatorName = it.checkUserId, evaluationDate = it.checkTime, evaluationWay = evaluationWay, - roadClassfcation = 1, - roadFunctionGrade = 3, + roadClassfcation = roadClassfcation, + roadFunctionGrade = roadFunctionGrade, noEvaluationreason = "", linkLength = s.toDouble(), - dataLevel = 3, + dataLevel = dataLevel, linstringLength = 0.0, ) 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 b84b5b45..9602f8d2 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 @@ -601,6 +601,13 @@ class MainActivity : BaseActivity() { } } + /** + * 显示轨迹回放布局 + */ + fun showIndoorDataLayout() { + binding.mainActivityMenuIndoorGroup.visibility = View.VISIBLE + } + /** * 路径规划 */ diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt index 36921971..1e82d3c7 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt @@ -9,14 +9,10 @@ import androidx.lifecycle.viewModelScope import com.navinfo.omqs.Constant import com.navinfo.omqs.bean.IndoorConnectionInfoBean import com.navinfo.omqs.bean.QRCodeBean -import com.navinfo.omqs.bean.SysUserBean -import com.navinfo.omqs.http.DefaultResponse import com.navinfo.omqs.http.NetResult import com.navinfo.omqs.http.NetworkService -import com.navinfo.omqs.ui.activity.login.LoginStatus import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.io.IOException @@ -99,11 +95,14 @@ class QrCodeViewModel @Inject constructor( Toast.LENGTH_LONG ).show() } + + updateServerInfo(context) + } else { withContext(Dispatchers.Main) { Toast.makeText( context, - "${defaultUserResponse.msg}", + "${defaultUserResponse.errmsg}", Toast.LENGTH_SHORT ) .show() @@ -165,17 +164,20 @@ class QrCodeViewModel @Inject constructor( viewModelScope.launch(Dispatchers.Default) { val url = "http://${Constant.INDOOR_IP}:8080/sensor/service/connection" + + + val indoorConnectionInfoBean = IndoorConnectionInfoBean( + Constant.USER_ID, + Constant.USER_ID, + Constant.USER_ID, + "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2ODk2MjI5MjQsInVzZXJJZCI6IjEwNCIsImlhdCI6MTY4OTU3MjUyNCwidXNlcm5hbWUiOiJ3ZWl3ZWlsaW4wMDEwNCJ9.9WUqOhme8Yi_2xRBKMMe0ihb_yR1uwTqWTdZfZ7dMtE", + "http://fastmap.navinfo.com/onemap", + Constant.USER_ID, + "Android" + ) when (val result = networkService.updateServerInfo( url = url, - indoorConnectionInfoBean = IndoorConnectionInfoBean( - Constant.USER_ID, - Constant.USER_ID, - Constant.USER_ID, - Constant.USER_ID, - com.navinfo.collect.library.system.Constant.SERVER_ADDRESS, - Constant.USER_ID, - "Android" - ) + indoorConnectionInfoBean = indoorConnectionInfoBean )) { is NetResult.Success<*> -> { @@ -198,7 +200,7 @@ class QrCodeViewModel @Inject constructor( withContext(Dispatchers.Main) { Toast.makeText( context, - "${defaultUserResponse.msg}", + "${defaultUserResponse.errmsg}", Toast.LENGTH_SHORT ) .show() diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt index 3318c4c6..3cb56387 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/console/ConsoleFragment.kt @@ -193,14 +193,29 @@ class ConsoleFragment : BaseFragment(), OnClickListener { R.id.console_personal_center_bg, R.id.console_personal_center_icon_bg -> { if (sceneFlag) { mFragment = PersonalCenterFragment { - TransitionManager.go(aScene, aTransition) + if(it){ + activity?.let { a -> + a.supportFragmentManager.beginTransaction().remove(this).commit() + (a as MainActivity).showIndoorDataLayout() + } + }else{ + TransitionManager.go(aScene, aTransition) + } + } sceneFlag = false TransitionManager.go(bScene, bTransition) } else { if (mFragment !is PersonalCenterFragment) { mFragment = PersonalCenterFragment { - TransitionManager.go(aScene, aTransition) + if(it){ + activity?.let { a -> + a.supportFragmentManager.beginTransaction().remove(this).commit() + (a as MainActivity).showIndoorDataLayout() + } + }else{ + TransitionManager.go(aScene, aTransition) + } } childFragmentManager.beginTransaction().replace(fragmentId, mFragment!!) .commit() 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 8ca20c4a..81eef41b 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 @@ -15,14 +15,17 @@ import com.blankj.utilcode.util.UriUtils import com.github.k1rakishou.fsaf.FileChooser import com.github.k1rakishou.fsaf.callback.FSAFActivityCallbacks import com.github.k1rakishou.fsaf.callback.FileChooserCallback +import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.collect.library.map.NIMapController import com.navinfo.omqs.R 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.activity.map.MainActivity import com.navinfo.omqs.ui.fragment.BaseFragment import com.navinfo.omqs.ui.activity.scan.QrCodeActivity +import com.navinfo.omqs.ui.fragment.console.ConsoleFragment import com.permissionx.guolindev.PermissionX import dagger.hilt.android.AndroidEntryPoint import org.oscim.core.GeoPoint @@ -32,7 +35,7 @@ import javax.inject.Inject * 个人中心 */ @AndroidEntryPoint -class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) : BaseFragment(), +class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?)? = null) : BaseFragment(), FSAFActivityCallbacks { private var _binding: FragmentPersonalCenterBinding? = null @@ -137,6 +140,9 @@ class PersonalCenterFragment(private var backListener: (() -> Unit?)? = null) : //跳转二维码扫描界面 checkPermission() } + R.id.personal_center_menu_scan_indoor_data -> { + indoorDataListener?.invoke(true) + } } true } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt index 17cfbf74..7eeb625a 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklink/TaskLinkViewModel.kt @@ -193,8 +193,8 @@ class TaskLinkViewModel @Inject constructor( kind = liveDataSelectKind.value!!.type, functionLevel = liveDataSelectFunctionLevel.value!!.type, dataLevel = liveDataSelectDataLevel.value!!.type, - length = mapController.measureLayerHandler.lineLengthLiveData.value!!, - ) + ), + length = mapController.measureLayerHandler.lineLengthLiveData.value!!, ) val task: TaskBean = liveDataTaskBean.value!! task.hadLinkDvoList.add(linkBean) diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt index ab16a1cc..f7f7e3a8 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/tasklist/TaskListAdapter.kt @@ -241,8 +241,9 @@ class TaskListAdapter( FileUploadStatus.DONE -> { binding.taskUploadBtn.stopAnimator() binding.taskUploadBtn.setText("已上传") + binding.taskUploadBtn.isEnabled = false binding.taskUploadBtn.setProgress(0) - binding.taskUploadBtn.setBackgroundColor(binding.root.resources.getColor(R.color.ripple_end_color)) + binding.taskUploadBtn.setBackgroundColor(binding.root.resources.getColor(R.color.gray_121)) } FileUploadStatus.ERROR -> { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d6c4333f..a0c3c0ee 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -165,72 +165,6 @@ android:onClick="@{()->mainActivity.onClickMenu()}" /> - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + android:title="扫码连电脑" /> + + android:title="版本:ONE_QE_V1.2.0_20230707_A" /> diff --git a/vtm b/vtm index 1ee201a4..dd13e533 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 1ee201a41f78f169873848209a3f3bdac36f185a +Subproject commit dd13e533c38b5738ab404c2737d7ccadeff01323 From 694ad106d7f8e1e18afcd377a889681210cf4196 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 18 Jul 2023 10:11:34 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E5=8D=A1=E9=A1=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/navinfo/omqs/Constant.kt | 2 +- .../omqs/ui/activity/map/MainActivity.kt | 104 +++++- .../omqs/ui/activity/map/MainViewModel.kt | 341 +++++++++++------- app/src/main/res/layout/activity_main.xml | 17 +- .../collect/library/utils/GeometryTools.java | 4 +- 5 files changed, 313 insertions(+), 155 deletions(-) diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index 27fb6278..f67ca0a6 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -55,7 +55,7 @@ class Constant { /** * 室内整理工具IP */ - lateinit var INDOOR_IP: String + var INDOOR_IP: String = "" const val DEBUG = true 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 9602f8d2..f2e296c2 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 @@ -106,6 +106,7 @@ class MainActivity : BaseActivity() { } //点击详细信息 + @RequiresApi(Build.VERSION_CODES.N) override fun onMoreInfoClick(selectTag: String, tag: String, signBean: SignBean) { viewModel.showSignMoreInfo(signBean.renderEntity) val fragment = @@ -146,7 +147,7 @@ class MainActivity : BaseActivity() { } - @RequiresApi(Build.VERSION_CODES.M) + @RequiresApi(Build.VERSION_CODES.N) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -175,7 +176,7 @@ class MainActivity : BaseActivity() { //给xml传递viewModel对象 binding.viewModel = viewModel - binding.mainActivityVoice.setOnTouchListener { v, event -> + binding.mainActivityVoice.setOnTouchListener { v, event -> when (event?.action) { MotionEvent.ACTION_DOWN -> { voiceOnTouchStart()//Do Something @@ -225,7 +226,9 @@ class MainActivity : BaseActivity() { //捕捉列表变化回调 viewModel.liveDataNILocationList.observe(this) { - Toast.makeText(this,"轨迹被点击了",Toast.LENGTH_LONG).show() + if(viewModel.isSelectTrace()){ + Toast.makeText(this,"轨迹被点击了",Toast.LENGTH_LONG).show() + } } //右上角菜单是否被点击 @@ -372,7 +375,7 @@ class MainActivity : BaseActivity() { mapController.mMapView.onPause() } - @RequiresApi(Build.VERSION_CODES.M) + @RequiresApi(Build.VERSION_CODES.N) override fun onDestroy() { super.onDestroy() viewModel.speakMode?.shutdown() @@ -403,7 +406,7 @@ class MainActivity : BaseActivity() { /** * 打开相机预览 */ - @RequiresApi(Build.VERSION_CODES.M) + @RequiresApi(Build.VERSION_CODES.N) fun openCamera() { //显示轨迹图层 viewModel.onClickCameraButton(this) @@ -412,7 +415,7 @@ class MainActivity : BaseActivity() { /** * 开关菜单 */ - @RequiresApi(Build.VERSION_CODES.M) + @RequiresApi(Build.VERSION_CODES.N) fun onClickMenu() { //显示菜单图层 viewModel.onClickMenu() @@ -520,11 +523,82 @@ class MainActivity : BaseActivity() { /** * 点击线选择 */ + @RequiresApi(Build.VERSION_CODES.N) fun selectLineOnclick() { viewModel.setSelectRoad(!viewModel.isSelectRoad()) binding.mainActivitySelectLine.isSelected = viewModel.isSelectRoad() } + /** + * 点击线选择 + */ + @RequiresApi(Build.VERSION_CODES.N) + fun tracePointsOnclick() { + viewModel.setSelectTrace(!viewModel.isSelectTrace()) + if(viewModel.isSelectTrace()){ + Toast.makeText(this,"请选择轨迹点!",Toast.LENGTH_LONG).show() + } + binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() + } + + /** + * 点击结束轨迹操作 + */ + @RequiresApi(Build.VERSION_CODES.N) + fun finishTraceOnclick() { + setIndoorGroupEnable(false) + viewModel.setSelectTrace(false) + viewModel.setMediaFlag(false) + viewModel.setSelectPauseTrace(false) + binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() + binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag() + binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() + } + + /** + * 点击结束轨迹操作 + */ + @RequiresApi(Build.VERSION_CODES.N) + fun mediaFlagOnclick() { + viewModel.setMediaFlag(!viewModel.isMediaFlag()) + binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag() + } + + /** + * 点击上一个轨迹点播放操作 + */ + @RequiresApi(Build.VERSION_CODES.N) + fun rewindTraceOnclick() { + pasePlayTrace() + } + + /** + * 点击暂停播放轨迹操作 + */ + @RequiresApi(Build.VERSION_CODES.N) + fun pauseTraceOnclick() { + viewModel.setSelectPauseTrace(!viewModel.isSelectPauseTrace()) + binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() + viewModel.setSelectTrace(false) + binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() + } + + /** + * 点击下一个轨迹点 + */ + @RequiresApi(Build.VERSION_CODES.N) + fun nextTraceOnclick() { + pasePlayTrace() + } + + @RequiresApi(Build.VERSION_CODES.N) + fun pasePlayTrace() { + viewModel.setSelectTrace(false) + binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() + viewModel.setSelectPauseTrace(false) + binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() + } + /** * 打开或关闭底部导航栏 @@ -548,7 +622,7 @@ class MainActivity : BaseActivity() { .animateTo(GeoPoint( mapController.mMapView.vtmMap.mapPosition.geoPoint.latitude,mapController.mMapView.vtmMap.mapPosition.geoPoint.longitude)) } - @RequiresApi(Build.VERSION_CODES.M) + @RequiresApi(Build.VERSION_CODES.N) private fun voiceOnTouchStart() { viewModel.startSoundMetter(this, binding.mainActivityVoice) } @@ -606,6 +680,20 @@ class MainActivity : BaseActivity() { */ fun showIndoorDataLayout() { binding.mainActivityMenuIndoorGroup.visibility = View.VISIBLE + if(Constant.INDOOR_IP.isNotEmpty()){ + setIndoorGroupEnable(true) + }else{ + setIndoorGroupEnable(false) + } + } + + private fun setIndoorGroupEnable(enable: Boolean){ + binding.mainActivitySnapshotFinish.isEnabled = enable + binding.mainActivityTraceSnapshotPoints.isEnabled = enable + binding.mainActivitySnapshotMediaFlag.isEnabled = enable + binding.mainActivitySnapshotRewind.isEnabled = enable + binding.mainActivitySnapshotPause.isEnabled = enable + binding.mainActivitySnapshotNext.isEnabled = enable } /** @@ -638,7 +726,7 @@ class MainActivity : BaseActivity() { /** * 打开道路名称属性看板,选择的道路在viewmodel里记录,不用 */ - @RequiresApi(Build.VERSION_CODES.M) + @RequiresApi(Build.VERSION_CODES.N) fun openRoadNameFragment() { if (viewModel.liveDataRoadName.value != null) { viewModel.showSignMoreInfo(viewModel.liveDataRoadName.value!!) 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 7ceac270..39421580 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 @@ -63,6 +63,7 @@ import javax.inject.Inject * 创建Activity全局viewmode */ +@RequiresApi(Build.VERSION_CODES.N) @HiltViewModel class MainViewModel @Inject constructor( private val mapController: NIMapController, @@ -113,6 +114,7 @@ class MainViewModel @Inject constructor( var menuState: Boolean = false + var captureLinkState: Boolean = false val liveDataMenuState = MutableLiveData() @@ -123,6 +125,21 @@ class MainViewModel @Inject constructor( */ private var bSelectRoad = false + /** + * 是不是选择轨迹点 + */ + private var bSelectTrace = false + + /** + * 是不是选择标题标识 + */ + private var isMediaFlag = false + + /** + * 是不是暂停 + */ + private var bSelectPauseTrace = false + private var linkIdCache = "" private var lastNiLocaion: NiLocation? = null @@ -158,11 +175,11 @@ class MainViewModel @Inject constructor( mapController.onMapClickFlow.collectLatest { // testPoint = it //线选择状态 - if (bSelectRoad) { +/* if (bSelectRoad) { captureLink(it) } else { captureItem(it) - } + }*/ } } viewModelScope.launch(Dispatchers.IO) { @@ -235,59 +252,64 @@ class MainViewModel @Inject constructor( /** * 初始化定位信息 */ + @RequiresApi(Build.VERSION_CODES.N) private fun initLocation() { //用于定位点存储到数据库 viewModelScope.launch(Dispatchers.Default) { mapController.locationLayerHandler.niLocationFlow.collect { location -> - val geometry = GeometryTools.createGeometry( - GeoPoint( - location.latitude, location.longitude + + //过滤掉无效点 + if(!GeometryTools.isCheckError(location.longitude,location.latitude)){ + val geometry = GeometryTools.createGeometry( + GeoPoint( + location.latitude, location.longitude + ) ) - ) - val tileX = RealmSet() - GeometryToolsKt.getTileXByGeometry(geometry.toString(), tileX) - val tileY = RealmSet() - GeometryToolsKt.getTileYByGeometry(geometry.toString(), tileY) + val tileX = RealmSet() + GeometryToolsKt.getTileXByGeometry(geometry.toString(), tileX) + val tileY = RealmSet() + GeometryToolsKt.getTileYByGeometry(geometry.toString(), tileY) - //遍历存储tile对应的x与y的值 - tileX.forEach { x -> - tileY.forEach { y -> - location.tilex = x - location.tiley = y + //遍历存储tile对应的x与y的值 + tileX.forEach { x -> + tileY.forEach { y -> + location.tilex = x + location.tiley = y + } } - } - location.groupId = uuid - try { - location.timeStamp = DateTimeUtil.getTime(location.time).toString() - } catch (e: Exception) { + location.groupId = uuid + try { + location.timeStamp = DateTimeUtil.getTime(location.time).toString() + } catch (e: Exception) { - } - val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1) - location.taskId = id.toString() - //增加间距判断 - if (lastNiLocaion != null) { - val disance = GeometryTools.getDistance( - location.latitude, location.longitude, - lastNiLocaion!!.latitude, lastNiLocaion!!.longitude) - //相距差距大于2.5米以上进行存储 - if (disance > 2.5) { + } + val id = sharedPreferences.getInt(Constant.SELECT_TASK_ID, -1) + location.taskId = id.toString() + //增加间距判断 + if (lastNiLocaion != null) { + val disance = GeometryTools.getDistance( + location.latitude, location.longitude, + lastNiLocaion!!.latitude, lastNiLocaion!!.longitude) + //相距差距大于2.5米以上进行存储 + if (disance > 2.5) { + traceDataBase.niLocationDao.insert(location) +/* mapController.markerHandle.addNiLocationMarkerItem(location) + mapController.mMapView.vtmMap.updateMap(true)*/ + lastNiLocaion = location + } + } else { traceDataBase.niLocationDao.insert(location) - mapController.markerHandle.addNiLocationMarkerItem(location) - mapController.mMapView.vtmMap.updateMap(true) +/* mapController.markerHandle.addNiLocationMarkerItem(location) + mapController.mMapView.vtmMap.updateMap(true)*/ + lastNiLocaion = location } - } else { - traceDataBase.niLocationDao.insert(location) - mapController.markerHandle.addNiLocationMarkerItem(location) - mapController.mMapView.vtmMap.updateMap(true) } - - lastNiLocaion = location } } //用于定位点捕捉道路 viewModelScope.launch(Dispatchers.Default) { mapController.locationLayerHandler.niLocationFlow.collectLatest { location -> - if (!isSelectRoad()) captureLink( + if (!isSelectRoad()&&!GeometryTools.isCheckError(location.longitude,location.latitude)) captureLink( GeoPoint( location.latitude, location.longitude @@ -311,101 +333,114 @@ class MainViewModel @Inject constructor( /** * 捕获道路和面板 */ + @RequiresApi(Build.VERSION_CODES.N) private suspend fun captureLink(point: GeoPoint) { - - val linkList = realmOperateHelper.queryLink( - point = point, - ) - var hisRoadName = false - if (linkList.isNotEmpty()) { - //看板数据 - val signList = mutableListOf() - val topSignList = mutableListOf() - mapController.lineHandler.linksLayer.clear() - - val link = linkList[0] - - val linkId = link.properties[RenderEntity.Companion.LinkTable.linkPid] - - if (linkIdCache != linkId) { - - mapController.lineHandler.showLine(link.geometry) - linkId?.let { - var elementList = realmOperateHelper.queryLinkByLinkPid(it) - for (element in elementList) { - - if (element.code == 2011) { - hisRoadName = true - liveDataRoadName.postValue(element) - continue - } - - val distance = GeometryTools.distanceToDouble( - point, GeometryTools.createGeoPoint(element.geometry) - ) - - val signBean = SignBean( - iconId = SignUtil.getSignIcon(element), - iconText = SignUtil.getSignIconText(element), - distance = distance.toInt(), - linkId = linkId, - name = SignUtil.getSignNameText(element), - bottomRightText = SignUtil.getSignBottomRightText(element), - renderEntity = element, - isMoreInfo = SignUtil.isMoreInfo(element), - index = SignUtil.getRoadInfoIndex(element) - ) - Log.e("jingo", "捕捉到的数据code ${element.code}") - when (element.code) { - //车道数,种别,功能等级,线限速,道路方向 - 2041, 2008, 2002, 2019, 2010 -> topSignList.add( - signBean - ) - - 4002, 4003, 4004, 4010, 4022, 4601 -> signList.add( - signBean - ) - } - - } - - val realm = Realm.getDefaultInstance() - val entity = realm.where(RenderEntity::class.java) - .equalTo("table", "OMDB_RESTRICTION").and().equalTo( - "properties['linkIn']", it - ).findFirst() - if (entity != null) { - val outLink = entity.properties["linkOut"] - val linkOutEntity = realm.where(RenderEntity::class.java) - .equalTo("table", "OMDB_RD_LINK").and().equalTo( - "properties['${RenderEntity.Companion.LinkTable.linkPid}']", - outLink - ).findFirst() - if (linkOutEntity != null) { - mapController.lineHandler.linksLayer.addLine( - linkOutEntity.geometry, 0x7DFF0000 - ) - } - } - } - - liveDataTopSignList.postValue(topSignList.distinctBy { it.name } - .sortedBy { it.index }) - - liveDataSignList.postValue(signList.sortedBy { it.distance }) - val speechText = SignUtil.getRoadSpeechText(topSignList) - withContext(Dispatchers.Main) { - speakMode?.speakText(speechText) - } - linkIdCache = linkId ?: "" - } - } else { - mapController.lineHandler.removeLine() - linkIdCache = "" + if(captureLinkState){ + return } - //如果没有捕捉到道路名 - if (!hisRoadName) { - liveDataRoadName.postValue(null) + + try{ + captureLinkState = true + + val linkList = realmOperateHelper.queryLink( + point = point, + ) + var hisRoadName = false + if (linkList.isNotEmpty()) { + //看板数据 + val signList = mutableListOf() + val topSignList = mutableListOf() + mapController.lineHandler.linksLayer.clear() + + val link = linkList[0] + + val linkId = link.properties[RenderEntity.Companion.LinkTable.linkPid] + + if (linkIdCache != linkId) { + + mapController.lineHandler.showLine(link.geometry) + linkId?.let { + var elementList = realmOperateHelper.queryLinkByLinkPid(it) + for (element in elementList) { + + if (element.code == 2011) { + hisRoadName = true + liveDataRoadName.postValue(element) + continue + } + + val distance = GeometryTools.distanceToDouble( + point, GeometryTools.createGeoPoint(element.geometry) + ) + + val signBean = SignBean( + iconId = SignUtil.getSignIcon(element), + iconText = SignUtil.getSignIconText(element), + distance = distance.toInt(), + linkId = linkId, + name = SignUtil.getSignNameText(element), + bottomRightText = SignUtil.getSignBottomRightText(element), + renderEntity = element, + isMoreInfo = SignUtil.isMoreInfo(element), + index = SignUtil.getRoadInfoIndex(element) + ) + Log.e("jingo", "捕捉到的数据code ${element.code}") + when (element.code) { + //车道数,种别,功能等级,线限速,道路方向 + 2041, 2008, 2002, 2019, 2010 -> topSignList.add( + signBean + ) + + 4002, 4003, 4004, 4010, 4022, 4601 -> signList.add( + signBean + ) + } + + } + + val realm = Realm.getDefaultInstance() + val entity = realm.where(RenderEntity::class.java) + .equalTo("table", "OMDB_RESTRICTION").and().equalTo( + "properties['linkIn']", it + ).findFirst() + if (entity != null) { + val outLink = entity.properties["linkOut"] + val linkOutEntity = realm.where(RenderEntity::class.java) + .equalTo("table", "OMDB_RD_LINK").and().equalTo( + "properties['${RenderEntity.Companion.LinkTable.linkPid}']", + outLink + ).findFirst() + if (linkOutEntity != null) { + mapController.lineHandler.linksLayer.addLine( + linkOutEntity.geometry, 0x7DFF0000 + ) + } + } + } + + liveDataTopSignList.postValue(topSignList.distinctBy { it.name } + .sortedBy { it.index }) + + liveDataSignList.postValue(signList.sortedBy { it.distance }) + val speechText = SignUtil.getRoadSpeechText(topSignList) + withContext(Dispatchers.Main) { + speakMode?.speakText(speechText) + } + linkIdCache = linkId ?: "" + } + } else { + mapController.lineHandler.removeLine() + linkIdCache = "" + } + //如果没有捕捉到道路名 + if (!hisRoadName) { + liveDataRoadName.postValue(null) + } + + }catch (e:Exception){ + + }finally { + captureLinkState = false } } @@ -588,6 +623,48 @@ class MainViewModel @Inject constructor( return bSelectRoad } + /** + * 开启轨迹选择 + */ + fun setSelectTrace(select: Boolean) { + bSelectTrace = select + } + + /** + * 是否开启了轨迹选择 + */ + fun isSelectTrace(): Boolean { + return bSelectTrace + } + + /** + * 开启媒体标识 + */ + fun setMediaFlag(select: Boolean) { + isMediaFlag = select + } + + /** + * 是否开启了媒体标识 + */ + fun isMediaFlag(): Boolean { + return isMediaFlag + } + + /** + * 开启轨迹选择 + */ + fun setSelectPauseTrace(select: Boolean) { + bSelectPauseTrace = select + } + + /** + * 是否开启了轨迹选择 + */ + fun isSelectPauseTrace(): Boolean { + return bSelectPauseTrace + } + /** * 要展示的要素详细信息 */ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a0c3c0ee..cdc5c529 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -350,43 +350,36 @@ 180 || lon < -180 || lat > 90 || lat < -90) { return true; From dfbea188eab834fdd6c81d1f267b7e405ae3bb3c Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 18 Jul 2023 10:43:41 +0800 Subject: [PATCH 4/4] merge code --- .../omqs/ui/activity/map/MainViewModel.kt | 10 +++--- .../library/map/handler/MarkHandler.kt | 35 ++++++------------- 2 files changed, 15 insertions(+), 30 deletions(-) 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 39421580..6a0b84ab 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 @@ -81,7 +81,7 @@ class MainViewModel @Inject constructor( val liveDataNoteIdList = MutableLiveData>() //地图点击捕捉到的轨迹列表 - val liveDataNILocationList = MutableLiveData>() + val liveDataNILocationList = MutableLiveData() //左侧看板数据 val liveDataSignList = MutableLiveData>() @@ -163,8 +163,8 @@ class MainViewModel @Inject constructor( liveDataNoteIdList.value = list } - override fun onNiLocationList(list: MutableList) { - liveDataNILocationList.value = list + override fun onNiLocation(item: NiLocation) { + liveDataNILocationList.value = item } }) @@ -293,8 +293,8 @@ class MainViewModel @Inject constructor( //相距差距大于2.5米以上进行存储 if (disance > 2.5) { traceDataBase.niLocationDao.insert(location) -/* mapController.markerHandle.addNiLocationMarkerItem(location) - mapController.mMapView.vtmMap.updateMap(true)*/ + mapController.markerHandle.addNiLocationMarkerItem(location) + mapController.mMapView.vtmMap.updateMap(true) lastNiLocaion = location } } else { diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt index 26c97517..d82d9b52 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/MarkHandler.kt @@ -157,7 +157,7 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : /** * 评测数据marker 图层 */ - private val niLocationItemizedLayer: MyItemizedLayer by lazy { + private val niLocationItemizedLayer: ItemizedLayer by lazy { niLocationBitmap = AndroidBitmap(BitmapFactory.decodeResource(context.resources, R.mipmap.icon_gps)) @@ -172,39 +172,24 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : ) ) - val layer = MyItemizedLayer( - mMapView.vtmMap, + val layer = ItemizedLayer( + mapView.vtmMap, mutableListOf(), markerRendererFactory, - object : MyItemizedLayer.OnItemGestureListener { - override fun onItemSingleTapUp( - list: MutableList, - nearest: Int - ): Boolean { + object : OnItemGestureListener { + override fun onItemSingleTapUp(index: Int, item: MarkerInterface?): Boolean { itemListener?.let { - val idList = mutableListOf() - if (list.size == 0) { - } else { - for (i in list) { - val markerInterface: MarkerInterface = - niLocationItemizedLayer.itemList[i] - if (markerInterface is MarkerItem) { - idList.add(markerInterface.uid as NiLocation) - } - } - it.onNiLocationList(idList.distinct().toMutableList()) - } + it.onNiLocation((niLocationItemizedLayer.itemList[index] as MarkerItem).uid as NiLocation) } return true } - override fun onItemLongPress( - list: MutableList?, - nearest: Int - ): Boolean { + override fun onItemLongPress(index: Int, item: MarkerInterface?): Boolean { return true } + }) + addLayer(layer, NIMapView.LAYER_GROUPS.OPERATE_MARKER) layer } @@ -814,5 +799,5 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) : interface OnQsRecordItemClickListener { fun onQsRecordList(list: MutableList) fun onNoteList(list: MutableList) - fun onNiLocationList(list: MutableList) + fun onNiLocation(it: NiLocation) }