소셜 미디어 IOS 앱에 현재 위치 버튼을 추가하는 방법 -

IOS 앱에 현재 위치 버튼을 추가하는 방법 -

비디오: 8년차 앱등이가 알려주는, 아이폰 숨겨진 꿀기능 5가지! 이거 왜 다들 몰라요 ㅠㅠ 2024

비디오: 8년차 앱등이가 알려주는, 아이폰 숨겨진 꿀기능 5가지! 이거 왜 다들 몰라요 ㅠㅠ 2024
Anonim

iOS 앱의 도구 모음에 버튼을 추가하여 현재 위치를 확대 한 다음지도 영역으로 돌아가서 현재 표시하고있는 범위로 쉽게 이동할 수 있습니다.

굵게 표시된 코드를 추가하여 MapController 메소드 viewDidLoad에 버튼을 추가합니다.

- (void) viewDidLoad {[super viewDidLoad]; 본인. mapView. 대의원 = 자기; 본인. mapView. showsUserLocation = YES; [self setInitialRegion]; RTAppDelegate * appDelegate = [[UIApplication sharedApplication] delegate]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {UILabel * titleLabel = [[UILabel alloc] initWithFrame: CGRectMake (0, 0, 250, 44)]; titleLabel. textColor = [UIColor yellowColor]; titleLabel. font = [UIFont boldSystemFontOfSize: 17]; titleLabel. textAlignment = NSTextAlignmentCenter; titleLabel. backgroundColor = [UIColor clearColor]; titleLabel. 텍스트 = [자기 mapTitle]; UIBarButtonItem * titleView = [[UIBarButtonItem alloc] initWithCustomView: titleLabel]; UIBarButtonItem * flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace target: 없음 액션: 없음]; flexibleSpace. 폭 = 1.0; NSMutableArray * itemsArray = [자기. 도구 모음. items mutableCopy]; [itemsArray insertObject: flexibleSpace atIndex: [itemsArray count] -2]; [itemsArray insertObject: titleView atIndex: [itemsArray count] -2]; [본인. toolbar setItems: itemsArray animated: NO];} else {자기. title = [appDelegate. trip mapTitle];} [self addAnnotations]; UIBarButtonItemStyleBordered target: self action: @selector (goToLocation:)]; UIBarButtonItem * locateButton = [[UIBarButtonItem 할당]] initWithTitle:; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { NSMutableArray * itemsArray = [self. 도구 모음. items mutableCopy]; [itemsArray insertObject: locateButton atIndex: [itemsArray count]]; [자기. 툴바 setItems: itemsArray animated: NO]; } else { 자기 navigationItem. rightBarButtonItem = locateButton; } } 여기서 사용자가 생성 한 Locate 버튼을 탭하면 GoToLocation: 메시지가 MapController (target)에 [action: @selector (goToLocation:)]: 자기).

시뮬레이터를 사용하는 경우 시뮬레이트 된 위치를 선택해야하는 위치로 돌아가는 것을 잊지 마십시오.

다음으로 MapController에 goToLocation: 메소드를 추가합니다. 엠.

MKUserLocation * annotation = self. mapView. userLocation; CLLocation * location = 주석. 위치; if (nil == location) return; CLLocation 거리 거리 = MAX (4 * 위치. 수평 정확도, 500); MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (위치, 좌표, 거리, 거리); [본인. mapView setRegion: 영역 애니메이션: 아니요]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * itemsArray = self. 도구 모음. 항목; UIBarButtonItem * locateButton = [itemsArray objectAtIndex: [itemsArray count] -1]; locateButton. 액션 = @ 선택기 (goToDestination:); locateButton. 제목 = @ "목적지";} else {자기. navigationItem. rightBarButtonItem. 액션 = @ 선택기 (goToDestination:); 본인. navigationItem. rightBarButtonItem. title = @ "Destination";}}

사용자가 Locate 버튼을 탭하면 앱은 먼저 위치를 사용할 수 있는지 확인합니다. (응용 프로그램이 사용 가능하게 될 때까지 몇 초가 걸릴 수 있습니다.) 그렇지 않으면 영역을 변경하지 않고 간단하게 메소드에서 돌아옵니다. (물론 사용자에게 어떤 일이 발생했는지 알리는 경고를 표시하고 10 초 정도 후에 다시 시도 할 수 있습니다.)


위치를 사용할 수있는 경우 앱은 사용자가 이동할 지역의 범위를 계산합니다. 이 경우 다음 코드가 반환됩니다. CLLocationDistance distance = MAX (4 * location. horizontalAccuracy, 500);

는 장치의 horizontalAccuracy의 4 배가되도록 스팬을 계산합니다 (단, 1,000m 이상). horizontalAccuracy는 장치의 정확도를 고려할 때 불확실한 반경입니다. 즉, 사용자가 해당 서클 어딘가에 있습니다.

지정한 좌표 및 거리 값을 사용하여 새 MKCoordinateRegion을 만드는 MKCoordinateRegionMakeWithDistance 함수를 호출합니다.

범위를 변경하지 않으려는 경우지도보기의 centerCoordinate 속성을 userLocation으로 설정하면 범위를 변경하지 않고 userLocation 좌표에 영역의 중심을 지정했을 것입니다.

사용자가 위치 버튼을 탭하면 버튼의 제목을지도 제목으로 변경하고 @ 선택기를 (goToDestination:)으로 변경합니다. navigationItem을 통해 도구 모음 itemsArray 및 iPhone에서 iPad의 단추에 액세스합니다.

즉, 다음에 사용자가 버튼을 터치하면 goToDestination: 메시지가 전송되므로 MapController에 코드를 추가하는 것이 좋습니다. 엠. 그러면 영역이 대상 영역으로 다시 설정되고 버튼 제목이 다시 찾기로 전환됩니다.

- (void) goToDestination: (id) sender {[self setInitialRegion]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * itemsArray = self. 도구 모음. 항목; UIBarButtonItem * locateButton = [itemsArray objectAtIndex: [itemsArray count] -1]; locateButton. 액션 = @ 선택기 (goToLocation:); locateButton. title = @ "Locate";} else {self. navigationItem.rightBarButtonItem. 액션 = @ 선택기 (goToLocation:); 본인. navigationItem. rightBarButtonItem. title = @ "Locate";}}

이제 앱을 실행하십시오. 뉴욕지도에는 이미 두 개의 주석이 있으므로 시뮬레이터를 설정하여 샌프란시스코와 같은 먼 위치를 사용할 수 있습니다. 그렇게하면지도가 제대로 작동하는지 쉽게 알 수 있습니다.

사용자 위치를 가졌기 때문에 사용자 위치를 사용하여지도를 중앙에 배치하고 싶을 수 있습니다. 프로그램을 시작하자마자 위치 찾기 메커니즘을 시작하는 한 괜찮습니다.

문제는 하드웨어가 현재 위치를 찾는 데 약간의 시간이 걸릴 수 있으며 오래 기다리지 않으면 오류가 발생한다는 것입니다.

- (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) 객체 변경: (NSDictionary *) 컨텍스트를 변경하는 등 나중에 실행되는 메서드에 맵을 중앙에 배치 할 코드를 추가 할 수 있습니다. (void *) context {

이 메시지는지도가 위치 정보를 받기 시작하자마자 보내지 만 초기보기와 중심보기의 다시 표시를 보게됩니다. 심미적 인 이유 때문에 프로그램 시작시 MapController와 MapView를 초기화해야합니다 - 독자를위한 연습입니다.

IOS 앱에 현재 위치 버튼을 추가하는 방법 -

편집자의 선택

소셜 미디어 측정법을 사용하여 판매를 늘리는 방법 - 소셜 미디어 측정 항목을 사용하는 한 회사

소셜 미디어 측정법을 사용하여 판매를 늘리는 방법 - 소셜 미디어 측정 항목을 사용하는 한 회사

판매를위한 크로스 플랫폼 참여는 Best Buy입니다. Best Buy는 모바일 쇼핑 및 소셜 쇼핑을 매장의 각 품목에 대한 QR 코드를 사용하여 매장 내 경험으로 가져 왔습니다. 고객은 상점의 각 항목에 대한 QR 코드를 스캔하여 리뷰를 포함한 더 많은 정보를 얻을 수 있습니다.

블로그에 Google 웹 로그 분석을 설치하는 방법 - 아직없는 경우

블로그에 Google 웹 로그 분석을 설치하는 방법 - 아직없는 경우

블로그 또는 사이트에서 Google 웹 로그 분석 추적 통계를 사용하여 빠르고 쉽게 설치할 수 있습니다. 설치는 1 분 밖에 걸리지 않으며 완전히 고통스럽지 않습니다. 먼저 Google 애널리틱스 ID를 가져 와서 어딘가에 작성하십시오. 쉽게 찾을 수 있습니다. Google 애널리틱스와 대시 보드에서 로그인하십시오.

웹 사이트에 Google 웹 로그 분석을 설치하는 방법 - 웹 사이트에 Google 웹 로그 분석을 설치하는

웹 사이트에 Google 웹 로그 분석을 설치하는 방법 - 웹 사이트에 Google 웹 로그 분석을 설치하는

단 1 분이며 고통스럽지 않습니다. 곧 Google 애널리틱스 덕분에 잠자는 동안 소셜 미디어 측정 항목을 추적하게 될 것입니다. 먼저 Google 애널리틱스 ID를 가져 와서 어딘가에 작성하십시오. 쉽게 찾을 수 있습니다. Google 애널리틱스 및 대시 보드에 로그인하고 톱니 바퀴 아이콘을 클릭하기 만하면됩니다. ...

편집자의 선택

마케팅 자동화에서 분할 테스트의 기본 이점 - A / B 테스트라고도하는 더미 테스트

마케팅 자동화에서 분할 테스트의 기본 이점 - A / B 테스트라고도하는 더미 테스트

다 변수 테스트뿐만 아니라 요인 일정을 유지하고 다양한 시나리오에서 다른 결과를 테스트하여 마케팅 자동화 테스트를 수행하는 것을 의미합니다. 하나의 유료 검색 광고를 통해 사람들을 2 개의 개별 방문 페이지로 유도하는 것이 그 예입니다. 방문 페이지 테스트하기 ...

자동화 된 마케팅을위한 컨텐츠 작성의 기본 - 인형

자동화 된 마케팅을위한 컨텐츠 작성의 기본 - 인형

마케팅 자동화 도구의 사용을 극대화하기 위해 먼저 사람과 콘텐츠와의 관계를 이해해야합니다. 올바른 사람에게 올바른 콘텐츠를 보내는 경우에만 자동화가 유용합니다. 이를 올바르게 수행하는 방법에 대한 기본적인 이해를 돕기 위해 사람들은 두 가지 유형이 관련되어 있음을 인식해야합니다 ...

Microsoft Dynamics CRM을 사용하는 e-Mail 및 Microsoft Dynamics CRM- 더미

Microsoft Dynamics CRM을 사용하는 e-Mail 및 Microsoft Dynamics CRM- 더미

고객 관계를 관리하는 데 도움이되는 Microsoft 도구 현대 직장에서 가장 유용한 도구 중 하나는 전자 메일이므로 전자 메일을 만들고 읽거나, 전자 메일을 특정 레코드에 연결하거나, 일정을 관리하는 데 숙련되어 있어야합니다. ...

편집자의 선택

웹 호스팅 계획에서 더 많은 것을 얻기위한 10 가지 팁 - 인형

웹 호스팅 계획에서 더 많은 것을 얻기위한 10 가지 팁 - 인형

당신은 자신의 웹 사이트 또는 블로그를 가지고 있고, 고객, 독자 또는 웹 호스팅 기술에 의존하는 추종자 만 있습니다. 다음 팁은 웹 호스팅 계획을 최대한 활용하는 데 도움이됩니다. 제어판에서 백업 옵션을 확인하십시오. 일부 제어판을 사용하면 자동화 된 백업을 수행 할 수 있습니다. ...

귀하의 웹 호스트가 귀하를 도와주지 않는 10 가지 사항 (무료) - 인형

귀하의 웹 호스트가 귀하를 도와주지 않는 10 가지 사항 (무료) - 인형

은 웹 호스트만큼 멋지고, 웹 사이트를 디자인, 제작 및 운영하는 데 도움이되는 일에는 한계가 있습니다. 그것은 모두 돈으로옵니다. 귀하가 기꺼이 지불하는 한 귀하의 호스트는 기꺼이 도움이 될 것입니다. 각 호스트는 다릅니다. ...