package com.casic.smarttube.view import android.animation.AnimatorSet import android.animation.ObjectAnimator import android.content.Intent import android.graphics.Color import android.location.Location import android.os.Bundle import android.util.Log import android.view.animation.LinearInterpolator import com.amap.api.maps.AMap 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.Marker import com.amap.api.maps.model.MarkerOptions import com.amap.api.maps.model.MyLocationStyle import com.amap.api.maps.model.animation.RotateAnimation import com.casic.smarttube.R 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() { private val kTag = "SelectLocationActivity" private lateinit var aMap: AMap private lateinit var location: Location 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))//改变地图的缩放级别 } private var markerOption = MarkerOptions() private fun markerAnimation() { val animation = RotateAnimation(markerOption.rotateAngle, markerOption.rotateAngle + 180, 0F, 0F, 0F) val duration = 1000L animation.setDuration(duration) animation.setInterpolator(LinearInterpolator()) // marker.setAnimation(animation) // marker.startAnimation() } private lateinit var animatorSet: AnimatorSet private fun animTranslate() { animatorSet = AnimatorSet() animatorSet.playTogether( // ObjectAnimator.ofFloat(ivLocation, "scaleX", 1, 0.5f, 1).setDuration(300), // ObjectAnimator.ofFloat(ivLocation, "scaleY", 1, 0.5f, 1).setDuration(300) ) animatorSet.start() } override fun initEvent() { aMap.setOnCameraChangeListener(object : AMap.OnCameraChangeListener { override fun onCameraChange(p0: CameraPosition?) { } override fun onCameraChangeFinish(cameraPosition: CameraPosition?) { Log.d(kTag, cameraPosition.toString()) animTranslate() } }) //marker拖拽 aMap.setOnMarkerDragListener(object : AMap.OnMarkerDragListener { override fun onMarkerDragStart(p0: Marker?) { } override fun onMarkerDrag(p0: Marker?) { } override fun onMarkerDragEnd(p0: Marker?) { Log.d(kTag, "onMarkerDragEnd: " + p0!!.position.toString()) } }) //定位之后就会触发此监听获取经纬度信息 aMap.setOnMyLocationChangeListener { if (it != null) { location = it Log.d(kTag, "[${location.longitude},${location.latitude}]") } } rightOperateView.setOnClickListener { val intent = Intent() intent.putExtra("longitude", location.longitude.toString()) intent.putExtra("latitude", location.latitude.toString()) setResult(RESULT_OK, intent) finish() } } /**地图相关*********/ 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() { mapView.onDestroy() super.onDestroy() } override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) mapView.onSaveInstanceState(outState) } }