기본적인 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
@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
)