افزودن چندضلعی به نقشه

انتخاب پلاتفرم: Android iOS

چندضلعی‌ها در نقشه سه‌بعدی

نمونه کد زیر نحوه افزودن چندضلعی سه‌بعدی و موقعیت‌یابی آن را در فضای سه‌بعدی با فراخوانی روش addPolygon نشان می‌دهد. برای استفاده از این نمونه کد، دستورالعمل‌های موجود در راه‌اندازی و افزودن نقشه سه‌بعدی به برنامه را دنبال کنید تا پروژه Android Studio خود را با نقشه سه‌بعدی پایه راه‌اندازی کنید. سپس، کد زیر را به فایل MainActivity.kt اضافه کنید:

// Add imports and define variables
import com.google.android.gms.maps3d.model.LatLngAltitude
import com.google.android.gms.maps3d.model.Map3DMode
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.setMapMode(Map3DMode.HYBRID)
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()
    }
}

توجه داشته باشید که گرداننده کلیک در رشته «اصلی» (یا میانای کاربر) اجرا نمی‌شود. اگر می‌خواهید تغییراتی در واسط کاربر ایجاد کنید (مثلاً نمایش پیام Toast)، باید به رشته اصلی بروید. برای Kotlin، می‌توانید این کار را بااستفاده از lifecycleScope.launch(Dispatchers.Main) انجام دهید.