使用 Google 地图 API 时,clear() 不适用于擦除标记

clear() does not work for erasing markers while using Google Maps API

我在 Kotlin 中使用 Google 地图 API 并且我试图在创建我自己的标记之前从中清除所有准备好的生成标记,但它没有似乎有效。

代码如下:

        val mapFragment:SupportMapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    override fun onMapReady(mapaCreado: GoogleMap) {
        mapaCreado.apply{
            mapaCreado.clear()

            val coordenadas = LatLng(37.37410286896958, -5.969290673333865)
            addMarker(
                MarkerOptions()
                    .position(coordenadas)
                    .title("IES NERVION")
            )
        }
        map = mapaCreado
    }

代码不工作的主要原因是 Google 地图 class 中的 .clear 不是指它默认具有的实际标记,而是指您创建的标记就可以了。

Google 地图的标记默认称为标签,必须通过样式删除,使用 Google 地图云样式(显然不是免费的)或创建您自己的样式使用 JSON 样式并设置它。

[
  {
    "featureType": "poi",
    "elementType": "labels",
    "stylers": [
      {
        "visibility": "off"
      }
    ]
  }
]

然后在你的代码中。

setMapStyle(MapStyleOptions.loadRawResourceStyle(this@MainActivity, R.raw.map_style));

其中 R.raw.map_styles 指的是您之前创建的 JSON 文件。