
The following code sample demonstrates how to add a polyline and position it in
3D space by calling the addPolyline
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
import
com.google.android.gms.maps3d.model.latLngAltitude
...
// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D
.
setCamera
(
camera
{
center
=
latLngAltitude
{
latitude
=
40.029349
longitude
=
-
105.300354
altitude
=
1833.9
}
heading
=
326.0
tilt
=
75.0
range
=
3757.0
}
)
internal
val
trailLocations
=
"""
40.0201040, -105.2976640
40.0201080, -105.2976450
40.0201640, -105.2975120
40.0202200, -105.2973740
40.0202500, -105.2972760
40.0202960, -105.2971410
40.0203080, -105.2970990
40.0203320, -105.2970070
40.0203640, -105.2969400
40.0203710, -105.2969250
40.0203770, -105.2969220
40.0203910, -105.2969130
40.0203940, -105.2969120
40.0204200, -105.2969130
40.0204630, -105.2968910
40.0205270, -105.2968280
40.0206030, -105.2967570
40.0206590, -105.2966100
40.0206990, -105.2964870
"""
.
trimIndent
().
split
(
"\n"
).
map
{
val
(
lat
,
lng
)
=
it
.
split
(
","
)
latLngAltitude
{
latitude
=
lat
.
toDouble
()
longitude
=
lng
.
toDouble
()
altitude
=
0.0
// The trail will be clamped to the ground
}
}
val
trailPolylineOptions
=
polylineOptions
{
coordinates
=
trailLocations
strokeColor
=
Color
.
RED
strokeWidth
=
7.0
altitudeMode
=
AltitudeMode
.
CLAMP_TO_GROUND
zIndex
=
5
drawsOccludedSegments
=
true
}
googleMap3D
.
addPolyline
(
trailPolylineOptions
)
Listen for polyline click events
To listen for click events on a polyline, call setClickListener
on
the polyline object. The following example shows how to set a click listener on
a polyline:
polyline
.
setClickListener
{
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
Toast
.
makeText
(
this
@PolylinesActivity
,
"Hiking time!"
,
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)
.

