Skip to content

Commit 5c1cb5d

Browse files
authored
fix: metric ScaleBar text not rendering correctly (#527) (#563)
Co-authored-by: dkhawk <dkhawk@google.com>
1 parent 298dbef commit 5c1cb5d

File tree

2 files changed

+47
-18
lines changed
  • app/src/main/java/com/google/maps/android/compose
  • maps-compose-widgets/src/main/java/com/google/maps/android/compose/widgets

2 files changed

+47
-18
lines changed

app/src/main/java/com/google/maps/android/compose/ScaleBarActivity.kt

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ import androidx.activity.compose.setContent
2020
import androidx.compose.animation.AnimatedVisibility
2121
import androidx.compose.animation.EnterTransition
2222
import androidx.compose.animation.fadeOut
23+
import androidx.compose.foundation.BorderStroke
2324
import androidx.compose.foundation.background
25+
import androidx.compose.foundation.border
2426
import androidx.compose.foundation.layout.Box
2527
import androidx.compose.foundation.layout.fillMaxSize
2628
import androidx.compose.foundation.layout.padding
@@ -34,15 +36,10 @@ import androidx.compose.runtime.setValue
3436
import androidx.compose.ui.Alignment
3537
import androidx.compose.ui.Modifier
3638
import androidx.compose.ui.unit.dp
37-
import com.google.android.gms.maps.model.CameraPosition
38-
import com.google.android.gms.maps.model.LatLng
39+
import com.google.maps.android.compose.widgets.DarkGray
3940
import com.google.maps.android.compose.widgets.DisappearingScaleBar
4041
import com.google.maps.android.compose.widgets.ScaleBar
4142

42-
private const val TAG = "ScaleBarActivity"
43-
44-
private const val zoom = 8f
45-
4643
class ScaleBarActivity : ComponentActivity() {
4744

4845
override fun onCreate(savedInstanceState: Bundle?) {
@@ -56,6 +53,9 @@ class ScaleBarActivity : ComponentActivity() {
5653
position = defaultCameraPosition
5754
}
5855

56+
val scaleBackground = MaterialTheme.colors.background.copy(alpha = 0.4f)
57+
val scaleBorderStroke = BorderStroke(width = 1.dp, DarkGray.copy(alpha = 0.2f))
58+
5959
Box(Modifier.fillMaxSize()) {
6060
GoogleMap(
6161
modifier = Modifier.matchParentSize(),
@@ -64,18 +64,45 @@ class ScaleBarActivity : ComponentActivity() {
6464
isMapLoaded = true
6565
}
6666
)
67-
DisappearingScaleBar(
67+
68+
Box(
6869
modifier = Modifier
69-
.padding(top = 5.dp, start = 10.dp)
70-
.align(Alignment.TopStart),
71-
cameraPositionState = cameraPositionState
72-
)
73-
ScaleBar(
70+
.padding(top = 5.dp, start = 5.dp)
71+
.align(Alignment.TopStart)
72+
.background(
73+
scaleBackground,
74+
shape = MaterialTheme.shapes.medium
75+
)
76+
.border(
77+
scaleBorderStroke,
78+
shape = MaterialTheme.shapes.medium
79+
),
80+
) {
81+
DisappearingScaleBar(
82+
modifier = Modifier.padding(end = 4.dp),
83+
cameraPositionState = cameraPositionState
84+
)
85+
}
86+
87+
Box(
7488
modifier = Modifier
75-
.padding(top = 5.dp, end = 15.dp)
76-
.align(Alignment.TopEnd),
77-
cameraPositionState = cameraPositionState
78-
)
89+
.padding(top = 5.dp, end = 5.dp)
90+
.align(Alignment.TopEnd)
91+
.background(
92+
scaleBackground,
93+
shape = MaterialTheme.shapes.medium,
94+
)
95+
.border(
96+
scaleBorderStroke,
97+
shape = MaterialTheme.shapes.medium
98+
),
99+
) {
100+
ScaleBar(
101+
modifier = Modifier.padding(end = 4.dp),
102+
cameraPositionState = cameraPositionState
103+
)
104+
105+
}
79106
if (!isMapLoaded) {
80107
AnimatedVisibility(
81108
modifier = Modifier

maps-compose-widgets/src/main/java/com/google/maps/android/compose/widgets/ScaleBar.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import androidx.compose.material.Text
3232
import androidx.compose.runtime.Composable
3333
import androidx.compose.runtime.LaunchedEffect
3434
import androidx.compose.runtime.getValue
35-
import androidx.compose.runtime.mutableStateOf
35+
import androidx.compose.runtime.mutableIntStateOf
3636
import androidx.compose.runtime.remember
3737
import androidx.compose.runtime.setValue
3838
import androidx.compose.ui.Alignment.Companion.End
@@ -44,6 +44,7 @@ import androidx.compose.ui.graphics.StrokeCap
4444
import androidx.compose.ui.text.style.TextAlign
4545
import androidx.compose.ui.unit.Dp
4646
import androidx.compose.ui.unit.dp
47+
import androidx.compose.ui.unit.em
4748
import androidx.compose.ui.unit.sp
4849
import com.google.android.gms.maps.model.LatLng
4950
import com.google.maps.android.compose.CameraPositionState
@@ -76,7 +77,7 @@ public fun ScaleBar(
7677
.size(width = width, height = height)
7778
) {
7879
var horizontalLineWidthMeters by remember {
79-
mutableStateOf(0)
80+
mutableIntStateOf(0)
8081
}
8182

8283
Canvas(
@@ -249,6 +250,7 @@ private fun ScaleText(
249250
fontSize = 12.sp,
250251
color = textColor,
251252
textAlign = TextAlign.End,
253+
lineHeight = 1.em,
252254
modifier = modifier,
253255
style = MaterialTheme.typography.h4.copy(
254256
shadow = Shadow(

0 commit comments

Comments
 (0)