[6.5.0][overlay] marker添加点击事件处理

This commit is contained in:
renwj
2024-06-13 15:23:45 +08:00
parent 2dc0ac8868
commit 78db9ad9a2
2 changed files with 27 additions and 0 deletions

View File

@@ -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对象
*/

View File

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