MapKit 맵 제한

기본 설정

import MapKit 

let mapView = MKMapView()

... 

self.view.addSubview(mapView)

override func viewDidLayoutSubviews() {
        mapView.frame = self.view.bounds
    }
    

위 같은 코드를 이용하면 맵을 볼 수 있게 되는 데
문제는 처음 보게 되면 우리나라의 전체 지역이 보이게 됩니다

우리가 흔히 보게 되는 맵은 자기 자신의 위치를 중심으로 보게 되는 데 이 기능을 구현하려면 어떻게 해야 할까요?

시작 !

private extension MKMapView {
  func centerToLocation(_ location: CLLocationCoordinate2D, regionRadius: CLLocationDistance = 1000) {
    let coordinateRegion = MKCoordinateRegion(center: location,
                                              latitudinalMeters: regionRadius,
                                              longitudinalMeters: regionRadius)
    setRegion(coordinateRegion, animated: true)
  }
}

이렇게 MKMapView를 확장을 합니다.
코드를 설명하자면 location에 자신의 현재 위치 정보를 넣어서 이를 이용해서 MKCoordinateRegion 객체를 만들어서 지역 제한을 겁니다.
이때 center이라는 인스턴스는 어떤 위치를 중심으로 놓을지 말하는 것입니다.
그리고 latitudinalMeters 와 longitudinalMeters 라는 것은 중심을 기준으로 제한을 걸 거리를 뜻합니다.
뒤에 Meters가 붙었듯이 미터를 기준으로 합니다.

적용

mapView.centerToLocation(currentLocation)

이와 같이 확장을 이용해 만든 메서드에 현재 위치를 넣어주면 위치 + 위치 제한에 따른 맵이 보이게 됩니다.

제한이라고 했듯이... 맵이 이동은 가능하나 다시 원상태로 복귀가 됩니다.

좋은 웹페이지 즐겨찾기