diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/MainActivity.kt index 346a04a1..94061fbc 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/MainActivity.kt @@ -23,10 +23,23 @@ class MainActivity : BaseActivity() { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) + //关联生命周期 binding.lifecycleOwner = this - viewModel.initMap(this, binding.mainActivityMap) + //给xml转递对象 + binding.mainActivity = this + //给xml传递viewModel对象 + binding.viewModel = viewModel + //初始化地图 + viewModel.initMap(this, binding.mapView.mainActivityMap) + //让viewModel监听activity生命周期 lifecycle.addObserver(viewModel) -// val navController = findNavController(R.id.nav_host_fragment_content_main) + } + + /** + * 打开个人中菜单 + */ + fun openMenu() { + binding.mainActivityDrawer.open() } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/MainViewModel.kt index 9be9fa04..a9695657 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/MainViewModel.kt @@ -8,8 +8,14 @@ import com.navinfo.collect.library.map.NIMapController import com.navinfo.collect.library.map.NIMapView class MainViewModel : ViewModel(), DefaultLifecycleObserver { + /** + * 地图控制器 + */ private lateinit var mapController: NIMapController + /** + * 初始化地图 + */ fun initMap(context: Context, mapView: NIMapView) { mapController = NIMapController(context = context, mapView = mapView) @@ -17,6 +23,7 @@ class MainViewModel : ViewModel(), DefaultLifecycleObserver { override fun onStart(owner: LifecycleOwner) { super.onStart(owner) + //开启定位 mapController.locationLayerHandler.startLocation() } @@ -26,6 +33,7 @@ class MainViewModel : ViewModel(), DefaultLifecycleObserver { override fun onDestroy(owner: LifecycleOwner) { mapController.mMapView.onDestroy() + //结束定位 mapController.locationLayerHandler.stopLocation() } @@ -33,4 +41,11 @@ class MainViewModel : ViewModel(), DefaultLifecycleObserver { mapController.mMapView.onResume() } + /** + * 点击我的位置,回到我的位置 + */ + fun onClickLocationButton() { + mapController.locationLayerHandler.animateToCurrentPosition() + } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/baseline_my_location_24.xml b/app/src/main/res/drawable/baseline_my_location_24.xml new file mode 100644 index 00000000..5747dc82 --- /dev/null +++ b/app/src/main/res/drawable/baseline_my_location_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/baseline_person_24.xml b/app/src/main/res/drawable/baseline_person_24.xml new file mode 100644 index 00000000..f96a32ae --- /dev/null +++ b/app/src/main/res/drawable/baseline_person_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index cc8c603f..f42901d3 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,7 +1,8 @@ + xmlns:tools="http://schemas.android.com/tools" + tools:context=".ui.activity.LoginActivity"> @@ -17,7 +18,7 @@ + > + xmlns:tools="http://schemas.android.com/tools" + tools:context=".ui.activity.MainActivity"> + + + - + android:fitsSystemWindows="true"> - + android:layout_height="match_parent" + app:mainActivity="@{mainActivity}" + app:viewModel="@{viewModel}"/> - + + \ No newline at end of file diff --git a/app/src/main/res/layout/map_view.xml b/app/src/main/res/layout/map_view.xml new file mode 100644 index 00000000..a61eb647 --- /dev/null +++ b/app/src/main/res/layout/map_view.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/nav_header_main.xml b/app/src/main/res/layout/nav_header_main.xml new file mode 100644 index 00000000..30935119 --- /dev/null +++ b/app/src/main/res/layout/nav_header_main.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml new file mode 100644 index 00000000..b80a9585 --- /dev/null +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 125df871..0124e0d2 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,3 +1,8 @@ 16dp + + 16dp + 16dp + 8dp + 176dp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 93087049..7987a657 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -48,4 +48,13 @@ 登录 注册 imageDescription + Open navigation drawer + Close navigation drawer + Android Studio + android.studio@android.com + Navigation header + + Home + Gallery + Slideshow \ No newline at end of file diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt index 1fd4a146..7ca739be 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt @@ -16,12 +16,14 @@ class LocationLayerHandler(context: Context, mapView: NIMapView) : BaseHandler(context, mapView) { private var mCurrentLocation: BDLocation? = null - + private var bFirst = true private val mLocationLayer: LocationLayer = LocationLayer(mMapView.vtmMap) private lateinit var locationClient: LocationClient init { + ///添加定位图层到地图,[NIMapView.LAYER_GROUPS.NAVIGATION] 是最上层layer组 addLayer(mLocationLayer, NIMapView.LAYER_GROUPS.NAVIGATION) + //初始化定位 initLocationOption() } @@ -57,6 +59,10 @@ class LocationLayerHandler(context: Context, mapView: NIMapView) : it.longitude, it.radius ) + //第一次定位成功显示当前位置 + if (this.bFirst) { + animateToCurrentPosition() + } } //注册监听函数 @@ -102,7 +108,9 @@ class LocationLayerHandler(context: Context, mapView: NIMapView) : } } - + /** + * 开启定位 + */ fun startLocation() { //开始定位 if (!locationClient.isStarted) { @@ -110,11 +118,26 @@ class LocationLayerHandler(context: Context, mapView: NIMapView) : } } + /** + * 停止定位 + */ fun stopLocation() { if (locationClient.isStarted) { locationClient.stop() } } + + /** + * 回到当前位置 + */ + fun animateToCurrentPosition() + { + mCurrentLocation?.run { + val mapPosition = mMapView.vtmMap.mapPosition; + mapPosition.setPosition(this.latitude, this.longitude); + mMapView.vtmMap.animator().animateTo(300, mapPosition); + } + } } /**