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) }