diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index a7755a9..3c2c370 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -36,7 +36,6 @@ import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.ProjectGroupViewModel import com.casic.smarttube.widgets.GaoDeClusterMarkerView -import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -44,15 +43,14 @@ import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet -import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* -class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, +class HomePageFragment : Fragment(), AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" - private val geocoderSearch by lazy { GeocodeSearch(context) } + private val geocoderSearch by lazy { GeocodeSearch(requireContext()) } private lateinit var homeView: View private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap @@ -83,6 +81,11 @@ * */ private var deviceModels: MutableList = ArrayList() + /** + * 保存地图缩放等级 + * */ + private var mapZooms = ArrayList() + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { @@ -115,7 +118,8 @@ //默认数据 groupViewModel.obtainProGroupList() - //地图初始化 + //地图初始化,默认地图缩放13级 + mapZooms.add(13f) initMap(savedInstanceState) homeView.addDeviceButton.setOnClickListener { @@ -130,7 +134,7 @@ } val latitudeList: MutableList = ArrayList() val longitudeList: MutableList = ArrayList() - if (deviceModels.size != 0) { + if (deviceModels.isNotEmpty()) { deviceModels.clear() } it.data.forEach { device -> @@ -167,7 +171,6 @@ isRefresh -> { dataBeans.clear() dataBeans = dataRows!! - groupDeviceLayout.finishRefresh() isRefresh = false } else -> { @@ -254,8 +257,6 @@ uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) // 地图缩放监听 aMap.addOnCameraChangeListener(this) // marker 点击事件监听 @@ -274,17 +275,16 @@ aMap.animateCamera(cameraUpdate, 1500, null) } - override fun onMapLoaded() { - //地图加载成功之后显示聚合点数据 - initClustersMarkers() - } - - override fun onCameraChange(p0: CameraPosition?) { + override fun onCameraChange(cameraPosition: CameraPosition?) { } //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker - override fun onCameraChangeFinish(p0: CameraPosition?) { + override fun onCameraChangeFinish(cameraPosition: CameraPosition?) { + if (mapZooms.last() != cameraPosition?.zoom) { + aMap.clear() + mapZooms.add(cameraPosition?.zoom!!) + } //地图缩放之后显示聚合点数据 initClustersMarkers() } @@ -338,7 +338,6 @@ clustersMarkers.forEach { it.setPositionAndIcon() } - aMap.clear() // 重新添加 marker clustersMarkers.forEach { aMap.addMarker(it.options) @@ -470,7 +469,7 @@ } override fun onCancelClick() { - + p0.destroy() } }).build().show() }