add UIKit MKMapView to ImageViewer (#2841)

This commit is contained in:
dima.avdeev
2023-03-08 20:33:18 +03:00
committed by GitHub
parent aff9f0d285
commit 4cf574cc34
7 changed files with 88 additions and 18 deletions

View File

@@ -13,5 +13,5 @@ kotlin.native.useEmbeddableCompilerJar=true
kotlin.native.binary.memoryModel=experimental
kotlin.version=1.8.0
agp.version=7.1.3
compose.version=1.4.0-alpha01-dev954
compose.version=1.4.0-alpha01-dev968
ktor.version=2.2.1

View File

@@ -15,7 +15,9 @@ let gradient = LinearGradient(
struct ComposeView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UIViewController {
Main_iosKt.MainViewController()
let controller = Main_iosKt.MainViewController()
controller.overrideUserInterfaceStyle = .light
return controller
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}

View File

@@ -0,0 +1,19 @@
package example.imageviewer.view
import androidx.compose.foundation.Image
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.painterResource
@OptIn(ExperimentalResourceApi::class)
@Composable
internal actual fun LocationVisualizer(modifier: Modifier) {
Image(
painter = painterResource("dummy_map.png"),
contentDescription = "Map",
contentScale = ContentScale.Crop,
modifier = modifier
)
}

View File

@@ -0,0 +1,7 @@
package example.imageviewer.view
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@Composable
internal expect fun LocationVisualizer(modifier: Modifier)

View File

@@ -3,15 +3,12 @@ package example.imageviewer.view
import androidx.compose.animation.animateContentSize
import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.spring
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.*
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
@@ -70,7 +67,14 @@ internal fun MemoryScreen(
Box(modifier = Modifier.background(MaterialTheme.colorScheme.background)) {
Column {
Headliner("Place")
LocationVisualizer()
val locationShape = RoundedCornerShape(10.dp)
LocationVisualizer(
Modifier.padding(horizontal = 12.dp)
.clip(locationShape)
.border(1.dp, Color.Gray, locationShape)
.fillMaxWidth()
.height(200.dp)
)
Headliner("Note")
Collapsible(
"""
@@ -201,17 +205,6 @@ internal fun Headliner(s: String) {
)
}
@OptIn(ExperimentalResourceApi::class)
@Composable
internal fun LocationVisualizer() {
Image(
painterResource("dummy_map.png"),
"Map",
contentScale = ContentScale.Crop,
modifier = Modifier.fillMaxWidth().height(200.dp)
)
}
@Composable
internal fun RelatedMemoriesVisualizer(
ps: List<GalleryEntryWithMetadata>,

View File

@@ -0,0 +1,19 @@
package example.imageviewer.view
import androidx.compose.foundation.Image
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import org.jetbrains.compose.resources.ExperimentalResourceApi
import org.jetbrains.compose.resources.painterResource
@OptIn(ExperimentalResourceApi::class)
@Composable
internal actual fun LocationVisualizer(modifier: Modifier) {
Image(
painter = painterResource("dummy_map.png"),
contentDescription = "Map",
contentScale = ContentScale.Crop,
modifier = modifier
)
}

View File

@@ -0,0 +1,30 @@
package example.imageviewer.view
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.interop.UIKitInteropView
import platform.CoreLocation.CLLocationCoordinate2DMake
import platform.MapKit.MKCoordinateRegionMakeWithDistance
import platform.MapKit.MKMapView
import platform.MapKit.MKPointAnnotation
@Composable
internal actual fun LocationVisualizer(modifier: Modifier) {
//todo get real geo coordinates
UIKitInteropView(
modifier = modifier,
factory = {
val mkMapView = MKMapView()
val cityAmsterdam = CLLocationCoordinate2DMake(52.3676, 4.9041)
mkMapView.setRegion(
MKCoordinateRegionMakeWithDistance(
centerCoordinate = cityAmsterdam,
5000.0, 5000.0
),
animated = false
)
mkMapView.addAnnotation(MKPointAnnotation(cityAmsterdam, title = null, subtitle = null))
mkMapView
},
)
}