From 78db9ad9a2b7cdaeba9dcf8ded3b52a2c9e409b0 Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 13 Jun 2024 15:23:45 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0][overlay]=20marker=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/map/overlay/point/Point.kt | 18 ++++++++++++++++++ .../src/main/java/com/mogo/map/AMapWrapper.kt | 9 +++++++++ 2 files changed, 27 insertions(+) diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/point/Point.kt b/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/point/Point.kt index aef3754434..994a9efbc0 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/point/Point.kt +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/overlay/point/Point.kt @@ -6,6 +6,7 @@ import android.view.* import androidx.annotation.* import com.mogo.map.overlay.core.* import com.mogo.map.overlay.proxy.point.* +import java.lang.ref.WeakReference import java.util.* data class Point(val id: String, val owner: String, val level: Level, val option: Options) { @@ -149,6 +150,11 @@ data class Point(val id: String, val owner: String, val level: Level, val option * 是否切换到当前marker所在的视角 */ val moveToCenter: Boolean = builder.moveToCenter + + /** + * marker点击事件处理 + */ + val onClickHandler: WeakReference<((id:String) -> Unit)>? = builder.onMarkerClickListener fun builder(): Builder { return builder @@ -280,6 +286,11 @@ data class Point(val id: String, val owner: String, val level: Level, val option */ internal var moveToCenter: Boolean = true + /** + * Marker点击事件回调 + */ + internal var onMarkerClickListener:WeakReference<((id: String) -> Unit)>? = null + fun setId(id: String) = apply { this.id = id } @@ -411,6 +422,13 @@ data class Point(val id: String, val owner: String, val level: Level, val option this.moveToCenter = flag } + /** + * marker点击事件监听 + */ + fun onClick(listener: ((id: String) -> Unit)) = apply { + this.onMarkerClickListener = WeakReference(listener) + } + /** * 构建Options对象 */ diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.kt b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.kt index 2c0ad6dcc6..4d7c0a0c29 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.kt @@ -12,7 +12,9 @@ import com.mogo.map.overlay.wrapper.point.AMapPointWrapper import com.mogo.map.uicontroller.IMogoMapUIController import com.mogo.map.utils.ObjectUtils import com.zhidaoauto.map.sdk.open.renders.marker.BatchMarkerOptions +import com.zhidaoauto.map.sdk.open.renders.marker.Marker import com.zhidaoauto.map.sdk.open.renders.marker.MarkerSimpleData +import com.zhidaoauto.map.sdk.open.renders.marker.OnMarkClickListener import com.zhidaoauto.map.sdk.open.view.MapAutoView import com.zhidaoauto.map.sdk.open.view.MapAutoViewHelper import mogo.telematics.pad.MessagePad.TrackedObject @@ -54,6 +56,13 @@ class AMapWrapper(map: MapAutoViewHelper?, mapView: MapAutoView, controller: IMo return null } val delegate = mAMap!!.addMarker(markerOptions) ?: return null + options.onClickHandler?.get()?.also { + delegate.setOnMarkClickListener(object : OnMarkClickListener { + override fun onMarkClick(marker: Marker) { + it.invoke(marker.getId() ?: "") + } + }) + } return AMapPointWrapper(options.id, delegate, mMapView) }