Skip to content

Commit

Permalink
googlemaps#138 sample project
Browse files Browse the repository at this point in the history
  • Loading branch information
polivmi1 committed Jun 26, 2022
1 parent ff55775 commit e98d458
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 27 deletions.
2 changes: 2 additions & 0 deletions app/build.gradle
Expand Up @@ -45,6 +45,8 @@ dependencies {
implementation 'com.google.maps.android:maps-ktx:3.3.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.maps.android:android-maps-utils:2.3.0'
def nav_version = "2.4.2"
implementation "androidx.navigation:navigation-compose:$nav_version"

androidTestImplementation "androidx.test:core:$androidx_test_version"
androidTestImplementation "androidx.test:rules:$androidx_test_version"
Expand Down
Expand Up @@ -15,7 +15,10 @@
package com.google.maps.android.compose

import android.os.Bundle
import android.provider.ContactsContract
import android.telecom.Call
import android.util.Log
import android.widget.ZoomControls
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.animation.AnimatedVisibility
Expand All @@ -31,6 +34,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.unit.dp
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.model.BitmapDescriptorFactory
import com.google.android.gms.maps.model.CameraPosition
Expand All @@ -50,35 +57,64 @@ class BasicMapActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
var isMapLoaded by remember { mutableStateOf(false) }
// Observing and controlling the camera's state can be done with a CameraPositionState
val cameraPositionState = rememberCameraPositionState {
position = defaultCameraPosition
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "map") {
composable("map") {
MapView(
navController = navController
)
}
composable("details") {
DetailsView(
navController = navController
)
}
}
}
}
}

@Composable
fun DetailsView(
navController: NavHostController
) {
Button(onClick = { navController.popBackStack() }) {
Text("BACK")
}
}

Box(Modifier.fillMaxSize()) {
GoogleMapView(
modifier = Modifier.matchParentSize(),
cameraPositionState = cameraPositionState,
onMapLoaded = {
isMapLoaded = true
},
@Composable
fun MapView(
navController: NavHostController
) {
var isMapLoaded by remember { mutableStateOf(false) }
// Observing and controlling the camera's state can be done with a CameraPositionState
val cameraPositionState = rememberCameraPositionState {
position = defaultCameraPosition
}

Box(Modifier.fillMaxSize()) {
GoogleMapView(
modifier = Modifier.matchParentSize(),
cameraPositionState = cameraPositionState,
onMapLoaded = {
isMapLoaded = true
},
navController = navController
)
if (!isMapLoaded) {
AnimatedVisibility(
modifier = Modifier
.matchParentSize(),
visible = !isMapLoaded,
enter = EnterTransition.None,
exit = fadeOut()
) {
CircularProgressIndicator(
modifier = Modifier
.background(MaterialTheme.colors.background)
.wrapContentSize()
)
if (!isMapLoaded) {
AnimatedVisibility(
modifier = Modifier
.matchParentSize(),
visible = !isMapLoaded,
enter = EnterTransition.None,
exit = fadeOut()
) {
CircularProgressIndicator(
modifier = Modifier
.background(MaterialTheme.colors.background)
.wrapContentSize()
)
}
}
}
}
}
Expand All @@ -89,7 +125,8 @@ fun GoogleMapView(
modifier: Modifier,
cameraPositionState: CameraPositionState,
onMapLoaded: () -> Unit,
content: @Composable () -> Unit = {}
content: @Composable () -> Unit = {},
navController: NavHostController
) {
val singaporeState = rememberMarkerState(position = singapore)
val singapore2State = rememberMarkerState(position = singapore2)
Expand Down Expand Up @@ -124,6 +161,7 @@ fun GoogleMapView(
cameraPositionState.projection?.let { projection ->
Log.d(TAG, "The current projection is: $projection")
}
navController.navigate("details")
false
}
MarkerInfoWindowContent(
Expand Down

0 comments on commit e98d458

Please sign in to comment.