package com.casic.smarttube.view import android.content.Intent import android.graphics.Color import android.location.Location import android.os.Bundle import com.amap.api.maps.AMap import com.amap.api.maps.AMap.OnCameraChangeListener import com.amap.api.maps.AMap.OnMapLoadedListener import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory 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.utils.CenterMarkerView import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import kotlinx.android.synthetic.main.activity_select_location.* class SelectLocationActivity : KotlinBaseActivity(), AMap.OnMyLocationChangeListener, OnMapLoadedListener, OnCameraChangeListener { private val kTag = "SelectLocationActivity" private lateinit var latLng: LatLng private lateinit var aMap: AMap private lateinit var centerMarkerView: CenterMarkerView override fun initLayoutView(): Int = R.layout.activity_select_location override fun setupTopBarLayout() { ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) titleView.text = "手动选点" leftBackView.setOnClickListener { finish() } } override fun initData() { aMap = 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 = 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) centerMarkerView.initInfoWindowsView(aMap) } override fun initEvent() { aMap.setOnMyLocationChangeListener(this) aMap.setOnMapLoadedListener(this) aMap.setOnCameraChangeListener(this) rightOperateView.setOnClickListener { val intent = Intent() intent.putExtra("longitude", latLng.longitude.toString()) intent.putExtra("latitude", latLng.latitude.toString()) setResult(RESULT_OK, intent) finish() } } override fun onMyLocationChange(location: Location?) { if (location == null) { return } this.latLng = LatLng(location.latitude, location.longitude) } override fun onMapLoaded() { centerMarkerView.addCenterMarker(aMap) } override fun onCameraChange(cameraPosition: CameraPosition?) { //隐藏中心点marker的InfoWindow centerMarkerView.hideCenterMarkerInfoWindow() } override fun onCameraChangeFinish(cameraPosition: CameraPosition) { this.latLng = cameraPosition.target //显示infoWindow centerMarkerView.showInfoWindow(latLng) } /**地图相关*********/ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mapView.onCreate(savedInstanceState) } override fun onResume() { super.onResume() mapView.onResume() } override fun onPause() { super.onPause() mapView.onPause() } override fun onDestroy() { centerMarkerView.destroy() mapView.onDestroy() super.onDestroy() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) mapView.onSaveInstanceState(outState) } }