Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import com.google.android.gms.maps.model.BitmapDescriptorFactory
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.LatLngBounds
import com.google.maps.android.compose.GoogleMapComposable
import com.google.maps.android.compose.GroundOverlay
import com.google.maps.android.compose.GroundOverlayPosition
import com.google.maps.android.compose.Marker
import com.google.maps.android.compose.Polyline
import com.google.maps.android.compose.rememberMarkerState
Expand All @@ -25,6 +28,7 @@ import com.what3words.components.compose.maps.state.MarkerStatus
import com.what3words.components.compose.maps.state.W3WMapState
import com.what3words.components.compose.maps.state.isExistInOtherList
import com.what3words.components.compose.maps.state.isMarkerInSavedList
import com.what3words.components.compose.maps.utils.getFillGridMarkerBitmap
import com.what3words.components.compose.maps.utils.getMarkerBitmap
import com.what3words.components.compose.maps.utils.getPinBitmap
import com.what3words.map.components.compose.R
Expand Down Expand Up @@ -64,6 +68,17 @@ fun W3WGoogleMapDrawer(
)
}

if (state.listMakers.isNotEmpty()) {
//Draw the markers
W3WGoogleMapDrawMarkers(
zoomLevel = cameraState.getZoomLevel(),
zoomSwitchLevel = mapConfig.gridLineConfig.zoomSwitchLevel,
selectedMarkerID = if (markerStatus != MarkerStatus.NotSaved) state.selectedAddress?.id else null,
listMarkers = state.listMakers,
onMarkerClicked = onMarkerClicked
)
}

if (state.selectedAddress != null) {
//Draw the selected address
W3WGoogleMapDrawSelectedAddress(
Expand All @@ -74,18 +89,6 @@ fun W3WGoogleMapDrawer(
),
)
}


if(state.listMakers.isNotEmpty()) {
//Draw the markers
W3WGoogleMapDrawMarkers(
zoomLevel = cameraState.getZoomLevel(),
zoomSwitchLevel = mapConfig.gridLineConfig.zoomSwitchLevel,
selectedMarkerID = if(markerStatus != MarkerStatus.NotSaved) state.selectedAddress?.id else null,
listMarkers = state.listMakers,
onMarkerClicked = onMarkerClicked
)
}
}
}

Expand Down Expand Up @@ -249,7 +252,34 @@ private fun DrawZoomInMarkers(
listMarkers: ImmutableMap<String, ImmutableList<W3WMarker>>,
onMarkerClicked: ((W3WMarker) -> Unit)? = null,
) {
//TODO: GroundOverlay for list markers bitmap square
val context = LocalContext.current
val density = LocalDensity.current.density

listMarkers.forEach { markers ->
markers.value.forEach { marker ->
val bitmap = BitmapDescriptorFactory.fromBitmap(
getFillGridMarkerBitmap(
context,
density,
marker.color
)
)
val square = marker.square

GroundOverlay(
position = GroundOverlayPosition.create(
LatLngBounds(
LatLng(
square.southwest.lat,
square.southwest.lng
),
LatLng(square.northeast.lat, square.northeast.lng)
)
),
image = bitmap,
)
}
}
}

@Composable
Expand All @@ -272,7 +302,13 @@ private fun DrawZoomOutMarkers(
marker.color
}

BitmapDescriptorFactory.fromBitmap(getPinBitmap(context, density = density, colorMarker = color))
BitmapDescriptorFactory.fromBitmap(
getPinBitmap(
context,
density = density,
colorMarker = color
)
)
}

Marker(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ fun W3WMapBoxDrawer(state: W3WMapState, mapConfig: W3WMapDefaults.MapConfig) {
)
}

if (state.listMakers.isNotEmpty()) {
W3WMapBoxDrawMarkers(
cameraState.getZoomLevel(),
mapConfig.gridLineConfig.zoomSwitchLevel,
state.listMakers
)
}

if (state.selectedAddress != null) {
//Draw the selected address
W3WMapBoxDrawSelectedAddress(
Expand All @@ -53,14 +61,6 @@ fun W3WMapBoxDrawer(state: W3WMapState, mapConfig: W3WMapDefaults.MapConfig) {
selectedMarker = state.selectedAddress
)
}

if (state.listMakers.isNotEmpty()) {
W3WMapBoxDrawSavedAddress(
cameraState.getZoomLevel(),
mapConfig.gridLineConfig.zoomSwitchLevel,
state.listMakers
)
}
}
}

Expand Down Expand Up @@ -107,21 +107,21 @@ fun W3WMapBoxDrawSelectedAddress(

@Composable
@MapboxMapComposable
fun W3WMapBoxDrawSavedAddress(
fun W3WMapBoxDrawMarkers(
zoomLevel: Float,
zoomSwitchLevel: Float,
listMakers: ImmutableMap<String, ImmutableList<W3WMarker>>
) {
if (zoomLevel < zoomSwitchLevel) {
DrawZoomOutSavedMarkers(listMakers)
DrawZoomOutMarkers(listMakers)
} else {
DrawZoomInSavedMarkers(listMakers)
DrawZoomInMarkers(listMakers)
}
}

@Composable
@MapboxMapComposable
private fun DrawZoomOutSavedMarkers(
private fun DrawZoomOutMarkers(
listMarkers: ImmutableMap<String, ImmutableList<W3WMarker>>,
) {
val context = LocalContext.current
Expand Down Expand Up @@ -150,7 +150,7 @@ private fun DrawZoomOutSavedMarkers(

@Composable
@MapboxMapComposable
private fun DrawZoomInSavedMarkers(
private fun DrawZoomInMarkers(
listMarkers: ImmutableMap<String, ImmutableList<W3WMarker>>,
) {
val context = LocalContext.current
Expand Down Expand Up @@ -216,7 +216,7 @@ private fun DrawZoomInSelectedAddress(
zoomSwitchLevel: Float
) {
val context = LocalContext.current
selectedMarker.square?.let { square ->
selectedMarker.square.let { square ->
PolylineAnnotation(
points = listOf(
Point.fromLngLat(square.southwest.lng, square.northeast.lat),
Expand Down