diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt index ea0536e19b..e5c73749d6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/map/MapContainerLayout.kt @@ -11,6 +11,8 @@ import android.view.animation.AccelerateDecelerateInterpolator import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import com.mogo.eagle.core.data.map.MogoLatLng +import com.mogo.eagle.core.function.api.order.IOrderListener +import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.util.ConstraintUtil import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener @@ -25,8 +27,9 @@ class MapContainerLayout @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr), IMogoMapListener { +) : ConstraintLayout(context, attrs, defStyleAttr), IMogoMapListener, IOrderListener { + @Volatile private var isScaled = false private var isPlayingAnim = false private var constraintUtil: ConstraintUtil? = null @@ -71,6 +74,7 @@ class MapContainerLayout @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener("${TAG}${this.hashCode()}",this) + CallerOrderListenerManager.addListener("${TAG}${this.hashCode()}", this) } override fun onDetachedFromWindow() { @@ -90,6 +94,15 @@ class MapContainerLayout @JvmOverloads constructor( super.onMapClick(latLng) } + override fun onUpdateOrderStatus(inOrder: Boolean) { + super.onUpdateOrderStatus(inOrder) + if (!inOrder) {// 订单结束 + if (isScaled) {// 行程总览地图 + overMapView.clearAllMarkersAndPolyline() + } + } + } + private fun swapViewsWithAnim() { if (isPlayingAnim) return if (constraintUtil == null) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml index c3a269ef50..1b9d9f084e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_map_container.xml @@ -26,6 +26,7 @@ app:bottomPadding="160" app:carDrawable="@drawable/taxt_u_p_map_car" app:compassDrawable="@drawable/taxt_u_p_map_car_light" + app:startPointDrawable="@drawable/taxi_overmap_startpoint" app:endPointDrawable="@drawable/taxi_overmap_endpoint" app:globalPathColor="#39BA90" app:layout_constraintBottom_toBottomOf="parent" diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt index 2a8a24a822..c074825a1b 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt @@ -226,7 +226,7 @@ class TravelRealityView @JvmOverloads constructor( */ @Volatile private var isSmallMap: Boolean = true - private var iconRes = R.drawable.map_car_icon + private var iconRes = R.drawable.small_map_car private var globalPathResp: MessagePad.GlobalPathResp? = null private val mCoordinatesLatLng: MutableList = ArrayList() private var mSmallCarMarker: Marker? = null @@ -394,13 +394,6 @@ class TravelRealityView @JvmOverloads constructor( mAMap?.isTrafficEnabled = false // 设置 锚点 图标 if (isInit) { - iconRes = if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) { - R.drawable.map_bus_icon - } else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode) || AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)) { - R.drawable.map_m2_icon - } else { - R.drawable.map_car_icon - } mSmallCarMarker = mAMap?.addMarker( MarkerOptions() .icon(BitmapDescriptorFactory.fromResource(iconRes)) @@ -408,11 +401,11 @@ class TravelRealityView @JvmOverloads constructor( ) mSmallStartMarker = mAMap?.addMarker( MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.module_small_map_view_dir_start)) + .icon(BitmapDescriptorFactory.fromResource(R.drawable.small_map_start)) ) mSmallEndMarker = mAMap?.addMarker( MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.module_small_map_view_dir_end)) + .icon(BitmapDescriptorFactory.fromResource(R.drawable.small_map_end)) ) // 加载自定义样式 val customMapStyleOptions = CustomMapStyleOptions() @@ -671,7 +664,16 @@ class TravelRealityView @JvmOverloads constructor( // roadWidth = maxRoadWidth // globalWidth = maxGlobalWidth // } - + val optionList = ArrayList() + optionList.add( + MarkerOptions().apply { + icon(BitmapDescriptorFactory.fromResource(startPointDrawable)) + position(coordinateConverterWgsToGcj( + globalData[0].lat, + globalData[0].lon + )) + } + ) val endOption = MarkerOptions() endOption.icon(BitmapDescriptorFactory.fromResource(endPointDrawable)) endOption.position( @@ -680,8 +682,9 @@ class TravelRealityView @JvmOverloads constructor( globalData[globalData.size - 1].lon ) ) - // 绘制终点 - drawEndMarker(endOption) + optionList.add(endOption) + // 绘制起终点 + drawStartEndMarker(optionList) // 绘制全局轨迹 drawPolyline(DRAW_POLY_LINE, globalOptions) } @@ -1315,7 +1318,7 @@ class TravelRealityView @JvmOverloads constructor( } } - private fun drawEndMarker(options: MarkerOptions) { + private fun drawStartEndMarker(options: List) { Message.obtain().apply { what = DRAW_END_MARKER obj = options @@ -1493,6 +1496,11 @@ class TravelRealityView @JvmOverloads constructor( 30 ) ) + mPolyline = mAMap!!.addPolyline( + PolylineOptions() + .color(Color.argb(255, 77, 212, 100))// 255, 31, 127, 255 + .width(12f) + ) // 绘制线 mPolyline?.points = mCoordinatesLatLng CallerLogger.d( @@ -1766,7 +1774,7 @@ class TravelRealityView @JvmOverloads constructor( DRAW_END_MARKER -> { removeMessages(DRAW_END_MARKER) if (isMapDestroyed) return - realDrawEndMarker(msg.obj as MarkerOptions) + realDrawEndMarker(msg.obj as ArrayList) } UPDATE_VIDEO_MARKER -> { @@ -1975,13 +1983,22 @@ class TravelRealityView @JvmOverloads constructor( } } - private fun realDrawEndMarker(options: MarkerOptions) { + private fun realDrawEndMarker(options: List) { Log.d(TAG, "realDrawEndMarker") + mStartMarker?.destroy() + mStartMarker = null mEndMarker?.destroy() mEndMarker = null + if (options.size < 2) return + if (startPointDrawable != -1) { + mStartMarker = mAMap?.addMarker( + options[0] + ) + mStartMarker?.isClickable = false + } if (endPointDrawable != -1) { mEndMarker = mAMap?.addMarker( - options + options[1] ) mEndMarker?.isClickable = false } @@ -1994,6 +2011,8 @@ class TravelRealityView @JvmOverloads constructor( private fun realClearAllMarkersAndPolyline() { Log.d(TAG, "realClearAllMarkersAndPolyline") // 清除终点 + mStartMarker?.destroy() + mStartMarker = null mEndMarker?.destroy() mEndMarker = null // 清除道路事件icon diff --git a/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/small_map_end.png b/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/small_map_end.png new file mode 100644 index 0000000000..9b7e68b1ca Binary files /dev/null and b/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/small_map_end.png differ diff --git a/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/small_map_start.png b/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/small_map_start.png new file mode 100644 index 0000000000..7dbd7e2cf0 Binary files /dev/null and b/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/small_map_start.png differ diff --git a/core/mogo-core-res/src/main/res/drawable-nodpi/taxi_overmap_endpoint.png b/core/mogo-core-res/src/main/res/drawable-nodpi/taxi_overmap_endpoint.png index 61527f37c1..45071228a2 100644 Binary files a/core/mogo-core-res/src/main/res/drawable-nodpi/taxi_overmap_endpoint.png and b/core/mogo-core-res/src/main/res/drawable-nodpi/taxi_overmap_endpoint.png differ diff --git a/core/mogo-core-res/src/main/res/drawable-nodpi/taxi_overmap_startpoint.png b/core/mogo-core-res/src/main/res/drawable-nodpi/taxi_overmap_startpoint.png new file mode 100644 index 0000000000..baca87f72f Binary files /dev/null and b/core/mogo-core-res/src/main/res/drawable-nodpi/taxi_overmap_startpoint.png differ diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/small_map_car.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/small_map_car.png new file mode 100644 index 0000000000..8d48f01092 Binary files /dev/null and b/core/mogo-core-res/src/main/res/drawable-xhdpi/small_map_car.png differ