import
android.content.*
import
android.graphics.Bitmap
import
android.graphics.Canvas
import
android.os.Bundle
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.background
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.Composable
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.viewinterop.AndroidView
import
androidx.core.content.ContextCompat
import
com.example.newcanaryproject.ui.theme.NewCanaryProjectTheme
import
com.example.newcanaryproject.ui.theme.greenColor
import
com.google.android.libraries.maps.CameraUpdateFactory
import
com.google.android.libraries.maps.model.BitmapDescriptor
import
com.google.android.libraries.maps.model.BitmapDescriptorFactory
import
com.google.android.libraries.maps.model.LatLng
import
com.google.android.libraries.maps.model.MarkerOptions
import
com.google.maps.android.ktx.awaitMap
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
class
MainActivity : ComponentActivity() {
var message =
""
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"GFG"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
mapUI(LocalContext.current)
}
}
}
}
}
}
@Composable
fun mapUI(context: Context) {
val mapView = rememberMapViewWithLifecycle()
Column(
modifier = Modifier.fillMaxHeight().fillMaxWidth().background(Color.White)) {
AndroidView({ mapView }) { mapView ->
CoroutineScope(Dispatchers.Main).launch {
val map = mapView.awaitMap()
map.uiSettings.isZoomControlsEnabled =
true
val sydney = LatLng(-
35.016
,
143.321
)
val markerOptions = MarkerOptions()
.title(
"Sydney"
)
.position(sydney).icon(BitmapFromVector(context, R.drawable.ic_flag))
map.addMarker(markerOptions)
map.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}
}
}
}
private
fun BitmapFromVector(context: Context, vectorResId: Int): BitmapDescriptor? {
val vectorDrawable = ContextCompat.getDrawable(context, vectorResId)
vectorDrawable!!.setBounds(
0
,
0
, vectorDrawable.intrinsicWidth, vectorDrawable.intrinsicHeight)
val bitmap = Bitmap.createBitmap(
vectorDrawable.intrinsicWidth,
vectorDrawable.intrinsicHeight,
Bitmap.Config.ARGB_8888
)
val canvas = Canvas(bitmap)
vectorDrawable.draw(canvas)
return
BitmapDescriptorFactory.fromBitmap(bitmap)
}