MapKit + SwiftUI (Parte 7 de 8)
1Explorando MapKit en SwiftUI
2Cómo referenciar lugares con Place ID
3Seleccionar marcadores y anotaciones de MapKit en SwiftUI
4Overlays con MapKit y SwiftUI
5Cómo interactuar con MapFeature en SwiftUI
6Cómo configurar controles de un mapa con MapKit y SwiftUI
7Explorando lugares con LookAroundPreview
8Mostrar datos de un lugar con Place Card
Explorando lugares con LookAroundPreview
Misael Cuevas
13 marzo, 20243min de lectura
LookAroundPreview
es una vista de SwiftUI que muestra una imagen real o vista de calle de un lugar geográfico. Es increíblemente fácil de usar, ya que solo necesitas especificar un MKLookAroundScene
, que básicamente es una escena que contiene la información necesaria para mostrar imágenes realistas de un lugar. Por ejemplo:
import SwiftUI// 1import MapKitstruct ContentView: View {// 2@State private var lookAroundScene: MKLookAroundScene?var body: some View {// 3LookAroundPreview(initialScene: lookAroundScene)}}
- Se importa el framework de
MapKit
. - Se crea una variable de estado
lookAroundScene
necesaria para la vistaLookAroundPreview
. - Se define la vista
LookAroundPreview
, especificando que la escena inicial a mostrar eslookAroundScene
.
Cuando ejecutas el código, es posible que no veas ninguna imagen porque lookAroundScene
es nil
:
Para obtener una escena, necesitas las coordenadas del lugar que deseas mostrar y solicitar la escena utilizando MKLookAroundSceneRequest
. Para lograr esto, agrega la siguiente función dentro de ContentView
:
func requestLookAroundScene() async {// 1let location = CLLocationCoordinate2D(latitude: 40.419328, longitude: -3.693096)// 2let request = MKLookAroundSceneRequest(coordinate: location)// 3lookAroundScene = try? await request.scene}
- Se define las coordenadas del lugar a mostrar.
- Se define la solicitud de la escena a solicitar.
- Se solicita la escena y se le asigna a a la variable
lookAroundScene
.
Una vez hecho esto, modifica el contenido del body
de ContentView
de la siguiente manera:
LookAroundPreview(initialScene: lookAroundScene).task {await requestLookAroundScene()}
Se añade el modificador task
para solicitar y asignar la escena cuando la vista aparezca. Al ejecutar el código, verás la imagen del lugar:
Como se muestra en el GIF, al presionar en la imagen o el icono de "Look Around" ubicado en la parte superior derecha se abre una vista donde podrás interactuar con la escena, como desplazarte, ver los nombres de los puntos de interés, manipular la brújula, entre otros.
LookAroundPreview
, además del parámetro initialScene
, posee los siguientes parámetros que te permiten personalizar la vista según tus preferencias:
allowsNavigation
: un booleano que indica si se permite la navegación.showsRoadLabels
: un booleano que indica si se muestran los nombres de las calles o caminos.pointsOfInterest
: define los puntos de interés a mostrar.badgePosition
: indica la posición del icono "Look Around".
Por último, puedes utilizar el modificador .lookAroundViewer
en una vista para mostrar la escena de un lugar en casos donde quieras mostrar el visualizador directamente luego de una acción:
import SwiftUI// 1import MapKitstruct ContentView2: View {// 2@State private var lookAroundScene: MKLookAroundScene?// 3@State private var isLookingAround: Bool = falsevar body: some View {// 4Button("Press me") {isLookingAround = true}// 5.lookAroundViewer(isPresented: $isLookingAround, initialScene: lookAroundScene).task {await requestLookAroundScene()}}func requestLookAroundScene() async {let location = CLLocationCoordinate2D(latitude: 40.419328, longitude: -3.693096)let request = MKLookAroundSceneRequest(coordinate: location)lookAroundScene = try? await request.scene}}
- Se importa el framework de
MapKit
. - Se crea una variable de estado
lookAroundScene
necesaria para el modificadorlookAroundViewer
. - Se define la variable de estado
isLookingAround
para indicar cuando se muestra la escena. - Un botón que al ser presionado modifica el valor de
isLookingAround
atrue
. - Se agrega el modificador
lookAroundViewer
al botón, especificando queisLookingAround
determina cuándo se presentará y lookAroundScene como escena inicial.
El modificador lookAroundViewer
también acepta los mismos parámetros de personalización que la vista LookAroundPreview
mencionados anteriormente.
MapKit + SwiftUI (Parte 7 de 8)
1Explorando MapKit en SwiftUI
2Cómo referenciar lugares con Place ID
3Seleccionar marcadores y anotaciones de MapKit en SwiftUI
4Overlays con MapKit y SwiftUI
5Cómo interactuar con MapFeature en SwiftUI
6Cómo configurar controles de un mapa con MapKit y SwiftUI
7Explorando lugares con LookAroundPreview
8Mostrar datos de un lugar con Place Card