
نمونه کد زیر نحوه اضافه کردن یک چندضلعی سهبعدی و قرار دادن آن در فضای سهبعدی را با فراخوانی متد addPolygon نشان میدهد. برای استفاده از این نمونه کد، دستورالعملهای موجود در Setup و Add a 3D map to your app را دنبال کنید تا پروژه اندروید استودیو خود را با یک نقشه سهبعدی اولیه راهاندازی کنید. سپس، کد زیر را به فایل 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
}
)
به رویدادهای کلیک چندضلعی گوش دهید
برای گوش دادن به رویدادهای کلیک روی یک چندضلعی، setClickListener را روی شیء چندضلعی فراخوانی کنید. مثال زیر نحوه تنظیم یک شنونده کلیک روی یک چندضلعی را نشان میدهد:
polygon.setClickListener {
lifecycleScope.launch(Dispatchers.Main) {
Toast.makeText(this@PolygonsActivity, "Check out the Museum!", Toast.LENGTH_SHORT).show()
}
}
توجه داشته باشید که click handler روی نخ اصلی (یا UI) اجرا نمیشود. اگر میخواهید تغییراتی در رابط کاربری ایجاد کنید (مانند نمایش یک پیام Toast)، باید به نخ اصلی بروید. برای کاتلین، میتوانید این کار را با استفاده از lifecycleScope.launch(Dispatchers.Main) انجام دهید.