1. Capabilities
Maps 부분 On 으로 설정
2. 프로젝트 내 "***.entitlements" 파일 추가
Entitlements File(Dictionary) -> Maps(Boolean)-> YES 추가
3. Build Settings
Code Signing-> Code Signing Entitlements에 위 파일 추가
.h
#import <MapKit/MapKit.h>
@interface ViewController : NSViewController <MKMapViewDelegate>
{
MKMapView *map
}
.m
//클릭 해서 핀 찍기
NSClickGestureRecognizer *click = [[NSClickGestureRecognizer alloc] initWithTarget:self action:@selector(foundTap:)];
click.buttonMask = 2; // right button
click.numberOfClicksRequired = 1;
click.delegate = self;
[map addGestureRecognizer:click];
-(IBAction)foundTap:(NSClickGestureRecognizer *)recognizer
{
[map removeAnnotations:map.annotations]; //기존 핀 삭제
CGPoint point = [recognizer locationInView:map];
CLLocationCoordinate2D tapPoint = [map convertPoint:point toCoordinateFromView:map];
MKPointAnnotation *point1 = [[MKPointAnnotation alloc] init];
point1.coordinate = tapPoint;
[map addAnnotation:point1];
}
//줄 긋기
[map removeOverlays:map.overlays]; //기존 오버레이 삭제
NSInteger numberOfSteps = locationArr.count; // coordinate 배열
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
coordinates[index] = [locationArr objectAtIndex:index];
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[map addOverlay:polyLine];
-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{
MKPolylineRenderer *polylineView = [[MKPolylineRenderer alloc] initWithPolyline:overlay];
polylineView.strokeColor = [NSColor blueColor];
polylineView.lineWidth = 3.0;
return polylineView;
}
//지도 위치 지정
[map setRegion:MKCoordinateRegionMakeWithDistance(coordinate, 1024, 1024)];
//맵 타입 변경
[map setMapType:MKMapTypeStandard]; //MKMapTypeHybrid, MKMapTypeSatellite, MKMapTypeSatelliteFlyover, MKMapTypeHybridFlyover