package com.casic.smarttube.view import android.content.Intent import android.graphics.Color import android.os.Bundle import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.UiSettings import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.MyLocationStyle import com.casic.smarttube.R import com.casic.smarttube.databinding.ActivitySelectLocationBinding import com.casic.smarttube.extensions.initImmersionBar import com.casic.smarttube.utils.CenterMarkerView import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.utils.ActivityStackManager class SelectLocationActivity : KotlinBaseActivity<ActivitySelectLocationBinding>(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener { private val kTag = "SelectLocationActivity" private lateinit var latLng: LatLng private lateinit var aMap: AMap private lateinit var centerMarkerView: CenterMarkerView override fun initViewBinding(): ActivitySelectLocationBinding { return ActivitySelectLocationBinding.inflate(layoutInflater) } override fun setupTopBarLayout() { binding.rootView.initImmersionBar(this, false, R.color.mainThemeColor) binding.titleView.text = "手动选点" binding.leftBackView.setOnClickListener { finish() } } override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) binding.mapView.onCreate(savedInstanceState) aMap = binding.mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val locationStyle = MyLocationStyle() //定位一次,且将视角移动到地图中心点 locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) //设置是否显示定位小蓝点 locationStyle.showMyLocation(true) locationStyle.strokeColor(Color.TRANSPARENT) locationStyle.strokeWidth(0f) locationStyle.radiusFillColor(Color.TRANSPARENT) aMap.myLocationStyle = locationStyle aMap.isMyLocationEnabled = true val uiSettings: UiSettings = aMap.uiSettings uiSettings.isCompassEnabled = true uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER //不许地图随手势倾斜角度 uiSettings.isTiltGesturesEnabled = false //不允许地图旋转 uiSettings.isRotateGesturesEnabled = false //设置默认定位按钮是否显示 uiSettings.isMyLocationButtonEnabled = true //改变地图的缩放级别 aMap.moveCamera(CameraUpdateFactory.zoomTo(15f)) centerMarkerView = CenterMarkerView(this, aMap) aMap.setOnMapLoadedListener(this) aMap.setOnCameraChangeListener(this) } override fun observeRequestState() { } override fun initEvent() { binding.rightOperateView.setOnClickListener { val intent = Intent() intent.putExtra("longitude", latLng.longitude.toString()) intent.putExtra("latitude", latLng.latitude.toString()) setResult(RESULT_OK, intent) finish() } } override fun onMapLoaded() { centerMarkerView.addCenterMarker() } override fun onCameraChange(cameraPosition: CameraPosition?) { //隐藏中心点marker的InfoWindow centerMarkerView.hideCenterMarkerInfoWindow() } override fun onCameraChangeFinish(cameraPosition: CameraPosition) { latLng = cameraPosition.target //显示infoWindow centerMarkerView.showInfoWindow(latLng) } /**地图相关*********/ override fun onResume() { super.onResume() binding.mapView.onResume() } override fun onPause() { super.onPause() binding.mapView.onPause() } override fun onDestroy() { centerMarkerView.destroy() binding.mapView.onDestroy() super.onDestroy() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) binding.mapView.onSaveInstanceState(outState) } }