En el siguiente ejemplo de código, se muestra cómo agregar un polígono 3D y posicionarlo en el espacio 3D llamando al método addPolygon. Para usar este ejemplo de código, sigue las instrucciones en Configuración y Agrega un mapa en 3D a tu app para configurar tu proyecto de Android Studio con un mapa básico en 3D. Luego, agrega el siguiente código al archivo MainActivity.kt:
// Add imports and define variables import com.google.android.gms.maps3d.model.LatLngAltitude import com.google.android.gms.maps3d.model.polygonOptions val zooOutline = """ 39.7508987, -104.9565381 39.7502883, -104.9565489 39.7501976, -104.9563557 39.7501481, -104.955594 39.7499171, -104.9553043 39.7495872, -104.9551648 39.7492407, -104.954961 39.7489685, -104.9548859 39.7484488, -104.9548966 39.7481189, -104.9548859 39.7479539, -104.9547679 39.7479209, -104.9544567 39.7476487, -104.9535341 39.7475085, -104.9525792 39.7474095, -104.9519247 39.747525, -104.9513776 39.7476734, -104.9511844 39.7478137, -104.9506265 39.7477559, -104.9496395 39.7477477, -104.9486203 39.7478467, -104.9475796 39.7482344, -104.9465818 39.7486138, -104.9457878 39.7491005, -104.9454874 39.7495789, -104.945938 39.7500491, -104.9466998 39.7503213, -104.9474615 39.7505358, -104.9486954 39.7505111, -104.950648 39.7511215, -104.9506587 39.7511173, -104.9527187 39.7511091, -104.9546445 39.7508987, -104.9565381""".trimIndent() .split("\n") .map { line -> line.split(",").map { it.trim().toDouble() } } .map { coords -> latLngAltitude { latitude = coords[0] longitude = coords[1] altitude = 0.0 } } val zooPolygonOptions = polygonOptions { outerCoordinates = zooOutline fillColor = Color.argb(70, 255, 255, 0) strokeColor = Color.GREEN strokeWidth = 3.0 altitudeMode = AltitudeMode.CLAMP_TO_GROUND } val zooPolygon = googleMap3D.addPolygon(zooPolygonOptions) ... // Add to the onMap3DViewReady method, after the googleMap3D object has been initialized googleMap3D.setCamera( camera { center = latLngAltitude { latitude = 39.748477 longitude = -104.947575 altitude = 1610.0 } heading = 290.0 tilt = 47.0 range = 2251.0 } )
Cómo detectar eventos de clic en polígonos
Para escuchar los eventos de clic en un polígono, llama a setClickListener en el objeto del polígono. En el siguiente ejemplo, se muestra cómo establecer un objeto de escucha de clics en un polígono:
polygon.setClickListener { lifecycleScope.launch(Dispatchers.Main) { Toast.makeText(this@PolygonsActivity, "Check out the Museum!", Toast.LENGTH_SHORT).show() } }
Ten en cuenta que el controlador de clics no se ejecuta en el subproceso principal (o de IU). Si deseas realizar cambios en la IU (por ejemplo, mostrar un mensaje Toast), debes cambiar al subproceso principal. En Kotlin, puedes hacerlo con lifecycleScope.launch(Dispatchers.Main).