苹果系统地图定位服务器,iOS 系统地图实现及定位

1:添加库CoreLocation.framework,MApKit.framework;

2:@property (nonatomic, strong) CLLocationManager *locationManager;

@property (nonatomic, strong) MKMapView *mapView;

@property (nonatomic, strong) CLLocation *checkinLocation;

@property (strong, nonatomic) NSString *currentLatitude; //纬度

@property (strong, nonatomic) NSString *currentLongitude; //经度

- (void)viewDidLoad {

[super viewDidLoad];

self.title=@"地图";

[self initRightBarButton];

[self setupLocationManager];

[self setupMapView];

}

-(void)initRightBarButton{

UIButton* _btnRight = [UIButton buttonWithType:UIButtonTypeCustom];

[_btnRight setFrame:CGRectMake(0, 0, 39, 34)];

UIImage *imgNormal = [UIImage imageNamed:@"gpsbtn_dianji"];

UIImage *imgSelect = [UIImage imageNamed:@"gpsbtn"];

[_btnRight setBackgroundImage:imgNormal forState:UIControlStateNormal];

[_btnRight setBackgroundImage:imgSelect forState:UIControlStateSelected];

_btnRight.showsTouchWhenHighlighted = YES;

[_btnRight addTarget:self action:@selector(showUserLocation:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:_btnRight];

self.navigationItem.rightBarButtonItem = buttonItem;

}

- (void)setupLocationManager{

_locationManager=[[CLLocationManager alloc]init];

_locationManager.desiredAccuracy=kCLLocationAccuracyBestForNavigation;

//每隔多少米定位一次(这里的设置为任何的移动)

_locationManager.distanceFilter=kCLDistanceFilterNone;

//iOS 8.0以后

if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {

[self.locationManager requestWhenInUseAuthorization];

[self.locationManager startUpdatingLocation];

}

}

- (void)setupMapView{

_mapView=[[MKMapView alloc]initWithFrame:self.view.bounds];

[self.view addSubview:_mapView];

_mapView.delegate=self;

//用户位置追踪(用户位置追踪用于标记用户当前位置,此时会调用定位服务)

_mapView.userTrackingMode=MKUserTrackingModeFollowWithHeading;

_mapView.mapType=MKMapTypeStandard;

[self initLocationData];

}

- (void)initLocationData{

NSMutableArray *arr=[[NSMutableArray alloc]init];

for (int i=0; i<1; i++) {

CLLocationDegrees lat=[self.currentLatitude  doubleValue];

CLLocationDegrees longi=[self.currentLongitude doubleValue];

NSString *lacationName=@"当前位置";

BasicMapAnnotation *anno=[[BasicMapAnnotation alloc]initWithLatitude:lat andLongitude:longi];

anno.title=lacationName;

anno.index=i;

[arr addObject:anno];

}

[_mapView showAnnotations:arr animated:YES];

}

- (void)showUserLocation:(id)sender{

MKCoordinateSpan span=MKCoordinateSpanMake(0.01, 0.02);

MKCoordinateRegion region=MKCoordinateRegionMake(_mapView.userLocation.coordinate, span);

[_mapView setRegion:region animated:YES];

}

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{

NSLog(@"纬度:%f 经度:%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

self.currentLatitude  = [NSString stringWithFormat:@"%.4f",userLocation.location.coordinate.latitude];

self.currentLongitude = [NSString stringWithFormat:@"%.4f",userLocation.location.coordinate.longitude];

[self initLocationData];

//设置地图显示范围(如果不进行区域设置会自动显示区域范围并指定当前用户位置为地图中心点)

//MKCoordinateSpan span=MKCoordinateSpanMake(0.01, 0.01);

//MKCoordinateRegion region=MKCoordinateRegionMake(_mapView.region.center, span);

//[_mapView setRegion:region animated:true];

}

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation{

if ([annotation isKindOfClass:[BasicMapAnnotation class]]) {

static NSString *key=@"AnnotationKey";

MKAnnotationView *annotationView=[_mapView dequeueReusableAnnotationViewWithIdentifier:key];

BasicMapAnnotation *aa=(BasicMapAnnotation *)annotation;

if (!annotationView) {

annotationView=[[MKAnnotationView alloc]initWithAnnotation:aa reuseIdentifier:key];

CGRect frame=annotationView.frame;

frame.size.width=14;

frame.size.height=35;

annotationView.frame=frame;

annotationView.canShowCallout=YES;

UIImageView*imageview=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"地图标注"]];

imageview.frame=frame;

[annotationView addSubview:imageview];

}

return annotationView;

}

return nil;

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

原文:http://blog.csdn.net/darongzi1314/article/details/46624293

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值