在 Kotlin 上为 Google 地图 Api 创建动态标记并通过变量访问

Creating dinamicaly Markers and accessing by variables for Google Maps Api on Kotlin

我正在制作一个项目,我需要在其中添加和删除一些动态创建的标记。我正在以这种方式创建我的标记:

 private fun AddMarkerFromArray(name:String, adrs:String,cod:String,imgSrc:String){

    val info = MarkerDataNormal(name, adrs,
        cod )
    val markerOptions = MarkerOptions()
    markerOptions.position(LatLng(0.0,0.0))
        .title("Location Details")
        .snippet("I am custom Location Marker.")
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)
            )
    val customInfoWindow = CustomInfoWindowGoogleMap(this)
    mMap.setInfoWindowAdapter(customInfoWindow)
    val spot: Marker = mMap.addMarker(markerOptions)
    spot.tag = info
   // spot.showInfoWindow()
}

这是剩余的代码:

   data class MarkerDataNormal(val mLocatioName: String,
                        val mLocationAddres: String,
                        val mLocationCood: String)

   class CustomInfoWindowGoogleMap(val context: Context) : GoogleMap.InfoWindowAdapter {

   override fun getInfoContents(p0: Marker?): View {

    var mInfoView = (context as Activity).layoutInflater.inflate(R.layout.markernormal, null)
    var mInfoWindow: MarkerDataNormal? = p0?.tag as MarkerDataNormal?
    mInfoView.txtNombre.text = mInfoWindow?.mLocatioName
    mInfoView.txtDireccion.text = mInfoWindow?.mLocationAddres
    mInfoView.txtCoordenadas.text = mInfoWindow?.mLocationCood
    return mInfoView
}

override fun getInfoWindow(p0: Marker): View? {
    return null
   }
}

所以我正在使用该功能来显示我需要的所有标记,它们显示正确,但我不能 clear() 只有一个,因为每个标记都是 "spot"

如何更改变量的名称或为每个变量分配一个 ID 以供以后访问?

我认为您应该将对标记对象的引用存储在 List<Marker> 中。这样您以后就可以访问这些参考资料了。