package com.casic.smarttube.view import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.model.BitmapDescriptorFactory import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MarkerOptions import com.casic.smarttube.R import com.casic.smarttube.utils.DialogHelper import com.casic.smarttube.vm.AuthenticateViewModel import com.casic.smarttube.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_well_detail.* import kotlinx.android.synthetic.main.include_base_title.* class WellDetailActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener { private lateinit var wellViewModel: WellViewModel private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var wellId: String private lateinit var aMap: AMap private var latLng: LatLng? = null override fun initLayoutView(): Int = R.layout.activity_well_detail override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } titleView.text = "井详情" } override fun initData() { wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) aMap = wellMapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 //地图加载成功之后调用 aMap.addOnMapLoadedListener(this) } override fun onMapLoaded() { if (latLng == null) { "该闸井经纬度异常,无法在地图显示".show(this) return } /** * 参数1---要移动到的经纬度 * 参数2---地图的放缩级别zoom * 参数3---地图倾斜度 * 参数4---地图的旋转角度 * */ val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) aMap.animateCamera(newCameraPosition, 3000, object : AMap.CancelableCallback { override fun onFinish() { //添加Marker val markerOptions = MarkerOptions() .position(latLng) .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) .draggable(true) aMap.addMarker(markerOptions) } override fun onCancel() { } }) } override fun initEvent() { wellViewModel.obtainWellDetail(wellId) wellViewModel.detailModel.observe(this, { if (it.code == 200) { val wellDetail = it.data!! wellNameView.text = wellDetail.wellName wellTypeView.text = wellDetail.wellTypeName wellCodeView.text = wellDetail.wellCode ownerShipView.text = wellDetail.deptName wellStateView.text = wellDetail.bfztName wellDepthView.text = wellDetail.deep.toString() //绑定窨井位置 if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) { wellLocationView.text = wellDetail.position return@observe } this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()) authenticateViewModel.obtainAreaByDept(wellDetail.deptid) authenticateViewModel.areaModel.observe(this, { areaModel -> if (areaModel.code == 200) { authenticateViewModel.obtainDistrict(areaModel.data.area) } }) authenticateViewModel.districtModel.observe(this, { districtModel -> if (districtModel.code == 200) { districtModel.data.forEach { area -> if (area.id == wellDetail.qu) { authenticateViewModel.obtainStreet(area.id) authenticateViewModel.streetModel.observe(this, { street -> if (street.code == 200) { street.data.forEach { streetData -> if (streetData.id == wellDetail.area) { wellLocationView.text = String.format("${area.name}${streetData.name}-${wellDetail.position}") } } } }) } } } }) } }) wellViewModel.loadState.observe(this, { when (it) { is LoadState.Loading -> { DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") } else -> { DialogHelper.dismissLoadingDialog() } } }) } /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) wellMapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() wellMapView.onResume() } override fun onPause() { super.onPause() wellMapView.onPause() } override fun onDestroy() { wellMapView.onDestroy() super.onDestroy() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) wellMapView.onSaveInstanceState(outState) } }