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);
+ }
+ }
}
/**