비디오: 5G 사용자라면 꼭 보셔야 할 영상~ by 샤키코리아 2024
iOS 앱이 사용자의 위치를 현재 위치와 관련하여 표시하도록하려면 어떻게해야합니까? 이상적으로 뉴욕에 오면 (또는 어디든지), 미국 전체가 아닌 당신이있는 곳을 중심으로 한지도를보아야합니다. 먼저지도를 가운데 정렬하는 방법을 살펴야합니다. 이를 위해 MapController에 setInitialRegion 메소드 선언을 추가해야합니다. 엠.
우선, 목록 17-3의 굵게 표시된 코드를 MapController의 클래스 확장에 추가하여 클래스 확장을 업데이트합니다. 엠.
@interface MapController () @property (weak, nonatomic) IBOutlet MKMapView * mapView; - (IBAction) mapType: (id) 발신자; - (void) setInitialRegion; -d
지도 컨트롤러는 객체에서 데이터를 가져 오므로 클래스를 가져 오기 위해 구현을 업데이트해야합니다. 굵게 표시된 코드를 MapController에 추가하십시오. 엠.
#import "MapController.h" #import "AppDelegate. h" #import "Trip. h"
마지막으로 setInitialRegion 메소드를 MapController에 추가하십시오. 엠.
- (void) setInitialRegion {AppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; MKCoordinateRegion 영역; CLLocationCoordinate2D initialCoordinate = [appDelegate. 여행 목적지 좌표]; 부위. 센터. 위도 = initialCoordinate. 위도; 부위. 센터. 경도 = initialCoordinate. 경도; 부위. 스팬. latitudeDelta =. 05; 부위. 스팬. 경도 델타 =. 05; [본인. mapView setRegion: region animated: NO];}
이 메서드를 사용하려면 viewDidLoad를 업데이트해야합니다. MapController에서 viewDidLoad에 코드 1762의 굵게 표시된 코드를 추가하십시오. 이 메시지를 보내려면 m을 누르십시오.
- (무효) viewDidLoad {[super viewDidLoad]; 본인. mapView. 대의원 = 자기; 본인. mapView. showsUserLocation = YES; [self setInitialRegion]; }
지금 실행하면 최소한 주석이 표시되지 않습니다.
영역 을 설정하면지도를 가운데에 맞추고 확대 / 축소 수준을 설정하는 방법입니다. 다음 문장으로이 모든 것을 성취하십시오:
[self. mapView setRegion: 영역 애니메이션: 아니요];
지역은 네 가지 정보를 지정하는지도보기 속성입니다:
-
지역. 센터. 위도:지도 중심의 위도를 지정합니다.
-
지역. 센터. 경도:지도 중심의 경도를 지정합니다.
예를 들어, 그 값을
지역으로 설정하려면지도의 중심이 New York입니다. 센터. 위도 = 40712756; 부위. 센터. 경도 = -74. 006047;
-
지역. 스팬. latitudeDelta:지도에 표시 할 북 - 남 거리 (위도)를 지정합니다.위도 1 도는 약 111 킬로미터 (69 마일)입니다. 지역. 스팬. latitudeDelta가 0 인 경우지도에서 북쪽에서 남쪽으로 약 1/4 마일 거리가 지정됩니다. 적도 북쪽의 위도는 양수 값을 가지지 만 적도의 남쪽 위도는 음수 값을 갖습니다.
-
지역. 스팬. longiudeDelta:지도에 표시 할 east-to-west 거리 (세로 방향)를 지정합니다. 불행히도 경도 1 도의 마일 수는 위도에 따라 다릅니다. 예를 들어 경도의 한도는 적도에서 약 69 마일이지만 기둥에서는 0 마일로 줄어 듭니다.
제로 자오선의 동쪽의 경도 (국제 협약에 따라 런던 동부의 그리니치 왕립 천문대를 통과하는 제로 또는 자오선)는 양수 값을 가지며 제로 자오선 서쪽의 경도는 음수 값을 갖습니다.
범위 값이지도의 암시 적 확대 / 축소 값을 제공하지만 표시되는 실제 영역은지도가 사용자가 지정한 지역에 가장 적합한 확대 / 축소 수준으로 이동하기 때문에 지정한 범위와 다를 수 있습니다. 세트.
이는지도에서 중심 좌표 만 변경하더라도 특정 경간으로 표시되는 거리가 다른 위도와 경도에서 변경 될 수 있기 때문에 줌 레벨이 변경 될 수 있음을 의미합니다. 이것을 설명하기 위해 Apple의 스마트 개발자는 확대 / 축소 수준을 변경하지 않고 가운데 좌표를 변경하는 속성을 포함 시켰습니다.
@property (nonatomic) CLLocationCoordinate2D centerCoordinate
이 속성의 값을 새로운 CLLocationCoordinate2D는지도가 새 좌표의 가운데에 배치되고 현재 확대 / 축소 수준을 유지하도록 범위 값이 업데이트됩니다.
CLLocationCoordinate2D 유형은 많이 사용하게 될 것입니다. CLLocationCoordinate2D 유형은 WGS 84 참조 프레임 (전역 위치 지정 시스템에서 사용하는 참조 좌표계)을 사용하여 지리적 좌표를 포함하는 구조입니다.
typedef struct {CLLocationDegrees latitude; CLLocationDegrees longitude;} CLLocationCoordinate2D;
약간의 설명이 있습니다:
-
위도: 위도 (도). 방금 입력 한 코드에서 설정 한 값입니다 (region. center latitude = latitude;). 양수 값은 적도 북쪽의 위도를 나타냅니다. 음수 값은 적도의 남쪽 위도를 나타냅니다.
-
경도: 경도 (도)입니다. 방금 입력 한 코드에서 설정 한 값입니다 (지역. 경도 = 경도;). 측정은 자오선의 동쪽으로 연장되는 양의 값과 자오선의 서쪽으로 연장되는 음의 값을 갖는 제로 자오선에 상대적입니다.
CLLocationDegrees는도 단위로 지정된 위도 또는 경도 값을 나타내며 double입니다.
뉴욕에지도 표시를 중앙에 배치하려면 viewDidLoad: 메서드에서보기가로드 될 때 setInitialRegion 메시지 (방금 입력 한 코드)를 보냅니다.