
The following code sample demonstrates how to add a 3D polygon and position
it in 3D space by calling the addPolygon
method. To use this code sample, follow the instructions in Setup
and Add a 3D map to your app
to set up your Android Studio project with a basic 3D map. Then, add the following code to the MainActivity.kt
file:
// 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
}
)
Listen for polygon click events
To listen for click events on a polygon, call setClickListener
on
the polygon object. The following example shows how to set a click listener on
a polygon:
polygon
.
setClickListener
{
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
Toast
.
makeText
(
this
@PolygonsActivity
,
"Check out the Museum!"
,
Toast
.
LENGTH_SHORT
).
show
()
}
}
Note that the click handler does not run on the Main (or UI) thread. If you
want to make changes to the UI (such as showing a Toast message), you must
switch to the Main thread. For Kotlin, you can do this using lifecycleScope.launch(Dispatchers.Main)
.

