diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index b32b7b3793..8891300245 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -11,6 +11,7 @@ import android.view.MotionEvent import android.view.View import android.widget.RelativeLayout import android.widget.TextView +import androidx.annotation.MainThread import ch.hsr.geohash.GeoHash import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdate @@ -71,7 +72,7 @@ class OverMapView @JvmOverloads constructor( private val zoomLevel = 15 private var mCameraUpdate: CameraUpdate? = null private var mContext: Context? = null - private val mTilt = 60f + private var mTilt = 0f private var overLayerView: TextView? = null // 全局路径规划中的GeoHash网格 @@ -99,6 +100,7 @@ class OverMapView @JvmOverloads constructor( private var isFirstLocation = true var mCustomMapStyleOptions: CustomMapStyleOptions? = null var currMarkerList: ArrayList? = null + var siteMarkerList: ArrayList? = null companion object { const val TAG = "OverMapView" @@ -155,18 +157,56 @@ class OverMapView @JvmOverloads constructor( } // =================必须通知高德地图生命周期的变化================= + /** + * 隐藏右下角的重置View + */ fun hideResetView() { overLayerView?.visibility = View.GONE } + /** + * siteLatLngs: 高德坐标集合 + * bitmap: Marker对应的图片 + * (anchorX,anchorY)为锚点坐标,各自取值范围为[0,1],默认值为(0.5,1) + */ + @MainThread + fun drawSiteMarkers(siteLatLngs: List?, bitmap: Bitmap, anchorX: Float, anchorY: Float) { + if (siteLatLngs.isNullOrEmpty()) return + clearSiteMarkers() + val markerOptionsList = ArrayList() + for (latLng in siteLatLngs) { + val markerOption = MarkerOptions() + markerOption.position(latLng) + markerOption.anchor(anchorX, anchorY) + markerOption.icon( + BitmapDescriptorFactory.fromBitmap(bitmap) + ) + markerOptionsList.add(markerOption) + } + siteMarkerList = mAMap!!.addMarkers(markerOptionsList, false) + } + + @MainThread + fun clearSiteMarkers() { + if (siteMarkerList != null) { + for (marker in siteMarkerList!!) { + marker.destroy() + } + siteMarkerList = null + } + } + private fun initView(context: Context) { mContext = context val smpView = LayoutInflater.from(context).inflate(R.layout.module_overview_map_view, this) mMapView = smpView.findViewById(R.id.aMapView) overLayerView = findViewById(R.id.overLayer) - overLayerView?.background = resources.getDrawable(if (resetDrawable != -1) resetDrawable else R.drawable.amap_reset) - arrivedBitmap = BitmapDescriptorFactory.fromResource(if (arrivedDrawable != -1) arrivedDrawable else R.drawable.taxi_map_arrow_arrived) - unArrivedBitmap = BitmapDescriptorFactory.fromResource(if (unArrivedDrawable != -1) unArrivedDrawable else R.drawable.taxi_map_arrow_un_arrive) + overLayerView?.background = + resources.getDrawable(if (resetDrawable != -1) resetDrawable else R.drawable.amap_reset) + arrivedBitmap = + BitmapDescriptorFactory.fromResource(if (arrivedDrawable != -1) arrivedDrawable else R.drawable.taxi_map_arrow_arrived) + unArrivedBitmap = + BitmapDescriptorFactory.fromResource(if (unArrivedDrawable != -1) unArrivedDrawable else R.drawable.taxi_map_arrow_un_arrive) CallerPlanningRottingListenerManager.addListener(TAG, this) initAMapView(context) // 注册定位监听 @@ -177,6 +217,7 @@ class OverMapView @JvmOverloads constructor( private fun initAMapView(context: Context) { Log.d(TAG, "initAMapView") + mTilt = 30f mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel.toFloat()) mAMap = mMapView!!.map mCustomMapStyleOptions = CustomMapStyleOptions() @@ -197,6 +238,8 @@ class OverMapView @JvmOverloads constructor( } // 实时路况图层关闭,必须添加在loaded结束之后,其他位置不生效 mAMap?.isTrafficEnabled = false + mAMap?.showBuildings(true) + mAMap?.animateCamera(CameraUpdateFactory.changeTilt(mTilt)) } setUpMap() customOptions() @@ -350,7 +393,7 @@ class OverMapView @JvmOverloads constructor( return bitmap } - fun clearV2XMarkers() { + private fun clearV2XMarkers() { if (currMarkerList != null) { for (marker in currMarkerList!!) { marker.destroy() @@ -428,6 +471,7 @@ class OverMapView @JvmOverloads constructor( bitmap ) ) + markerOption.anchor(0.18f, 0.98f) markerOption.zIndex(2f) posInfMap[latLng] = structureList markerOptionsList.add(markerOption) @@ -448,8 +492,8 @@ class OverMapView @JvmOverloads constructor( val marker = MakerWithCount(context) marker.setCount(count) marker.measure( - MeasureSpec.makeMeasureSpec(116, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(116, MeasureSpec.EXACTLY) + MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(mContext, 116f), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(mContext, 116f), MeasureSpec.EXACTLY) ) marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) val bitmap = Bitmap.createBitmap(marker.width, marker.height, Bitmap.Config.ARGB_8888) @@ -486,7 +530,7 @@ class OverMapView @JvmOverloads constructor( } else { //设置希望展示的地图缩放级别 val cameraPosition = CameraPosition.Builder() - .target(mCarMarker!!.position).tilt(0f).zoom(zoomLevel.toFloat()).build() + .target(mCarMarker!!.position).tilt(mTilt).zoom(zoomLevel.toFloat()).build() mAMap!!.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)) } }