有两种可能的方式,两种方式,您只需要保持一个对象对着标记。这两种方法的主要区别在于,如果要使用添加和删除标记,则需要使标记对象可变。
-
使用可见性
marker?.isVisible = true/false
-
使用添加和删除:
var marker = mMap?.addMarker(MarkerOptions().position(Location))
marker?.remove()
// To add again
marker = mMap?.addMarker(MarkerOptions().position(marker!!.position))
编辑1:看完你的评论,需要修改第二种方法
根据文档:标签属性可用于存储任何数据,并且它永远不会被地图读取/写入,因此它可用于存储数据模型的 ID
使用以下数据类
data class MarkerData(val id: String, val title: String, var icon: BitmapDescriptor?, val position: LatLng)
您可以根据需要添加/删除变量。
在你的类中复制以下函数
private fun getMarkerOption(model: MarkerData? = null,marker: Marker? = null): Pair<String,MarkerOptions>{
check(!(model == null && marker == null)) { "Both options can't be null" }
var m = model ?: array.first { it.id == marker!!.id }
val markerOptions = MarkerOptions().position(m.position).icon(m.icon).title(m.title)
return Pair(m.id,markerOptions)
}
根据您的要求自定义第三行val markerOptions
请注意,数组是指您的列表,您将在其中存储标记的所有数据。
使用方法(带型号):
var options = getMarkerOption(array.first())
var marker = mMap?.addMarker(options.second)
marker?.tag = options.first
使用方法(带标记):
options = getMarkerOption(marker = marker)
marker = mMap?.addMarker(options.second)
marker?.tag = options.first