From d96170e45bc9302797a9bf778829e09092f2fe28 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Fri, 17 Feb 2023 14:41:23 +0800 Subject: [PATCH] =?UTF-8?q?[Opt]=E5=85=A8=E8=A7=88=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=B8=85=E9=99=A4=E5=B7=B2=E8=B5=B0=E8=BF=87?= =?UTF-8?q?=E7=9A=84=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/view/OverMapView.kt | 50 ++++++++++++++++--- .../src/main/res/values/attrs.xml | 6 +++ 2 files changed, 48 insertions(+), 8 deletions(-) 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 880661cafd..f26b486ee8 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 @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.view +import android.annotation.SuppressLint import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas @@ -12,6 +13,7 @@ import android.view.View import android.widget.RelativeLayout import android.widget.TextView import androidx.annotation.MainThread +import androidx.core.graphics.drawable.toBitmap import ch.hsr.geohash.GeoHash import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdate @@ -66,6 +68,9 @@ class OverMapView @JvmOverloads constructor( private var arrivedDrawable: Int = -1 private var unArrivedDrawable: Int = -1 private var resetDrawable: Int = -1 + private var resetDrawableMarginRight: Int = -1 + private var resetDrawableMarginBottom: Int = -1 + private var isClearArrived: Boolean = false private var mMapView: TextureMapView? = null private var mAMap: AMap? = null @@ -92,6 +97,7 @@ class OverMapView @JvmOverloads constructor( // 计算索引并设置对应的Bitmap var arrivedBitmap: BitmapDescriptor? = null var unArrivedBitmap: BitmapDescriptor? = null + var transparentBitmap: BitmapDescriptor? = null // 绘制轨迹线的集合 private val textureList: MutableList = ArrayList() @@ -121,6 +127,15 @@ class OverMapView @JvmOverloads constructor( unArrivedDrawable = typedArray.getResourceId(R.styleable.OverMapView_unArrivedDrawable, -1) resetDrawable = typedArray.getResourceId(R.styleable.OverMapView_resetDrawable, -1) + resetDrawableMarginRight = typedArray.getResourceId( + R.styleable.OverMapView_resetDrawableMarginRight, + AutoSizeUtils.dp2px(context, 40f) + ) + resetDrawableMarginBottom = typedArray.getResourceId( + R.styleable.OverMapView_resetDrawableMarginBottom, + AutoSizeUtils.dp2px(context, 40f) + ) + isClearArrived = typedArray.getBoolean(R.styleable.OverMapView_isClearArrived, false) typedArray.recycle() initView(context) } catch (e: Exception) { @@ -170,7 +185,12 @@ class OverMapView @JvmOverloads constructor( * (anchorX,anchorY)为锚点坐标,各自取值范围为[0,1],默认值为(0.5,1) */ @MainThread - fun drawSiteMarkers(siteLatLngs: List?, bitmap: Bitmap, anchorX: Float, anchorY: Float) { + fun drawSiteMarkers( + siteLatLngs: List?, + bitmap: Bitmap, + anchorX: Float, + anchorY: Float + ) { if (siteLatLngs.isNullOrEmpty()) return clearSiteMarkers() val markerOptionsList = ArrayList() @@ -210,6 +230,7 @@ class OverMapView @JvmOverloads constructor( mEndMarker?.isVisible = false } + @SuppressLint("UseCompatLoadingForDrawables") private fun initView(context: Context) { mContext = context val smpView = LayoutInflater.from(context).inflate(R.layout.module_overview_map_view, this) @@ -221,12 +242,25 @@ class OverMapView @JvmOverloads constructor( 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) + transparentBitmap = BitmapDescriptorFactory.fromBitmap( + resources.getDrawable(R.drawable.transparent_background, null) + .toBitmap(AutoSizeUtils.dp2px(context, 32f), AutoSizeUtils.dp2px(context, 230f)) + ) CallerPlanningRottingListenerManager.addListener(TAG, this) initAMapView(context) // 注册定位监听 CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this) //设置全览模式 overLayerView?.setOnClickListener { displayCustomOverView() } + overLayerView?.let { + it.background = + resources.getDrawable(if (resetDrawable != -1) resetDrawable else R.drawable.amap_reset) + val layoutParams = it.layoutParams + layoutParams as RelativeLayout.LayoutParams + layoutParams.rightMargin = resetDrawableMarginRight + layoutParams.bottomMargin = resetDrawableMarginBottom + it.layoutParams = layoutParams + } } private fun initAMapView(context: Context) { @@ -511,7 +545,7 @@ class OverMapView @JvmOverloads constructor( */ private fun displayCustomOverView() { val linePointsLatLng = planningPoints - if (linePointsLatLng.size > 1) { + if (linePointsLatLng.size > 1 && mLocation != null) { //圈定地图显示范围 //存放经纬度 val boundsBuilder = LatLngBounds.Builder() @@ -595,15 +629,15 @@ class OverMapView @JvmOverloads constructor( } for (i in coordinates.indices) { if (i <= locIndex) { - // 已走过的置灰 - arrivedBitmap?.let { - textureList.add(it) + if (isClearArrived) { + textureList.add(transparentBitmap) + } else { + // 已走过的置灰 + textureList.add(arrivedBitmap) } } else { // 未走过的纹理 - unArrivedBitmap?.let { - textureList.add(it) - } + textureList.add(unArrivedBitmap) } texIndexList.add(i) } diff --git a/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml b/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml index 8fd1ef1348..0d3349fc35 100644 --- a/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml +++ b/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml @@ -18,5 +18,11 @@ + + + + + + \ No newline at end of file