import
android.content.Context
import
android.location.Address
import
android.location.Geocoder
import
android.os.Bundle
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.Image
import
androidx.compose.foundation.background
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.Composable
import
androidx.compose.runtime.mutableStateOf
import
androidx.compose.runtime.remember
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.res.painterResource
import
androidx.compose.ui.text.TextStyle
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.dp
import
androidx.compose.ui.unit.sp
import
androidx.compose.ui.viewinterop.AndroidView
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.MapView
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
import
java.io.IOException
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
getMapLocation(mapView)
}
}
}
}
private
fun getMapLocation(mapView: MapView) {
mapView.getMapAsync {
val TamWorth = LatLng(-
31.083332
,
150.916672
)
val NewCastle = LatLng(-
32.916668
,
151.750000
)
val Brisbane = LatLng(-
27.470125
,
153.021072
)
val locationArrayList: ArrayList<LatLng?> = ArrayList()
locationArrayList.add(TamWorth)
locationArrayList.add(NewCastle)
locationArrayList.add(Brisbane)
for
(i in locationArrayList.indices) {
it.addMarker(MarkerOptions().position(locationArrayList[i]!!).title(
"Marker"
))
it.animateCamera(CameraUpdateFactory.zoomTo(
18
.0f))
it.moveCamera(CameraUpdateFactory.newLatLng(locationArrayList[i]))
}
}
}