SwiftUI - MapKit

EunJi·2022년 5월 15일
0
post-custom-banner

Map Options

기본적인 Map(CoordinateRegion)으로도 map 사용은 가능.
그러나, 사용자가 정한 위치 주변만을 중심으로 함 기본적이 지도로 만들어짐.
(marker / 현재 위치 등의 기능 사용 불가.)

Map(coordinateRegion: Binding<MKCoordinateRegion>,
	interactionModes: MapInteractionModes,
    showsUserLocation: Bool, 
    userTrackingMode: Binding<MapUserTrackingMode?>
    )

MKCoordinateRegion

coordinateRegion: Binding < MKCoordinateRegion >

- MapKit을 사용하려면 기본적으로 설정해줘야 함. (필수 설정 요소!)
- 위도, 경도, zoom in, zoom out 정도 설정
  • CLLocationCoordinate2D
    longitude: -90~90
    latitude: -180~180
    .
  • MKCoordinateSpan
    : map view의 width and height
    구성: latitudeDelta, longitudeDelta
    - high value인 경우: zoom out (1 ~ 10)
    - low value인 경우: zoom in (0.1 ~ 0.5)
    .
  • Binding / State 사용
    - 사용자가 zoom in / zoom out / pan을 일반적으로 함.
    - 사용자로 인한 화면의 변화가 저장되기 위해서 Binding / State으로 지 정하여 변경된 상태를 저장해줘야 함.
@State var region = MKCoordinateRegion(
	center: CLLocationCoordinate2D(latitude: ~, longitutde: ~), 
	span: MKCoordinateSpan(latitudeDelta: ~, longitudeDelta: ~)) // 정의
.
Map(coordinateRegion: $region) // 활용

Options

interactionModes

  • map과 interact 할 방법 설정.
  • MapInteractionModes라는 class와 .pan, .zoom, .all 로 설정.

showsUserLocation

  • 사용자의 현재 위치를 marker로 보여줄지 결정
  • Bool 형태로 입력하면 됨.

userTrackingMode

  • 위치의 변화를 tracking할지 말지를 결정.
  • MapUserTrackingMode class와 .follow / .none 로 설정.
  • Binding 형태가 이상적.
    이유: Map 초기 set-up과 구분하기 위해서
@State var tracking: MapUserTrackingMode = .follow

CODE

@State var region = MKCoordinate(
        center: CLLocationCoordinate2D(latitude:~, longitutde: ~),
        span: MKCoordinateSpan(latitudeDelta: ~, longitudeDelta: ~))
.
@State var tracking: MapUserTrackingMode = .follow
.     
Map (coordinateRegion: $region,
     interactionModes: MapInteractionModes.all,
     showsUserLocation: true,
     userTrackingMode: $tracking
    )
profile
말하는 감자
post-custom-banner

0개의 댓글