ios-使用ios 6苹果地图定位和跟踪
2014-09-11 10:39
513 查看
在ios 6中,苹果自己的地图代替了谷歌地图,但是API编程接口没有太大的变化,所以开发人员不需要再学习很多新东西就能开发地图应用。开发地图应用需要导入#import<MapKit/MapKit.h>框架。
代码实现如下:
至此,ios 6苹果地图定位和跟踪介绍已经完毕,程序运行效果图如下:
代码实现如下:
- (void)initUI { UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 50, 200, 30)]; label.backgroundColor = [UIColor clearColor]; label.textAlignment = NSTextAlignmentLeft; label.text = @"输入查询地点关键字:"; [self.view addSubview:label]; [label release]; textQuery = [[UITextField alloc] initWithFrame:CGRectMake(20, 90, 280, 30)]; textQuery.backgroundColor = [UIColor whiteColor]; textQuery.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; textQuery.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; textQuery.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:textQuery]; [textQuery release]; UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(60, 150, 200, 30)]; btn.backgroundColor = [UIColor whiteColor]; btn.layer.cornerRadius = 5.0f; btn.layer.masksToBounds = YES; btn.showsTouchWhenHighlighted = YES; [btn setTitle:@"查询" forState:UIControlStateNormal]; [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [btn addTarget:self action:@selector(geoCodeQuery:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; [btn release]; m_mapView = [[MKMapView alloc] initWithFrame:CGRectMake(20, 200, 280, 280)]; m_mapView.backgroundColor = [UIColor clearColor]; m_mapView.mapType = MKMapTypeHybrid; m_mapView.delegate = self; m_mapView.layer.cornerRadius = 5.0f; m_mapView.layer.masksToBounds = YES; m_mapView.showsUserLocation = YES; [m_mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES]; [self.view addSubview:m_mapView]; [m_mapView release]; /* MKMapTypeHybrid // 混合地图类型 MKMapTypeStandard // 标注地图类型 MKMapTypeSatellite // 卫星地图类型 */ /* MKUserTrackingModeFollowWithHeading // 可以跟踪用户的位置和方向变化 MKUserTrackingModeFollow // 可以跟踪用户的位置变化 MKUserTrackingModeNone // 没有用户跟踪模式 */ } - (void)geoCodeQuery:(id)sender { if (textQuery.text == nil || textQuery.text.length <= 0) { return; } CLGeocoder *geoCoder = [[CLGeocoder alloc] init]; [geoCoder geocodeAddressString:textQuery.text completionHandler:^(NSArray *placemarks, NSError *error) { NSLog(@"查询记录数:%d",[placemarks count]); if ([placemarks count] > 0) { [m_mapView removeAnnotations:m_mapView.annotations]; } for (int i = 0; i < [placemarks count]; i ++) { CLPlacemark *placeMark = placemarks[i]; [textQuery resignFirstResponder]; // 调整地图位置和缩放比例 MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(placeMark.location.coordinate, 10000, 10000); [m_mapView setRegion:viewRegion animated:YES]; // 添加大头针的附件信息 MapLocation *annotation = [[MapLocation alloc] init]; annotation.streetAddress = placeMark.thoroughfare; annotation.city = placeMark.locality; annotation.state = placeMark.postalCode; annotation.coordinate = placeMark.location.coordinate; [m_mapView addAnnotation:annotation]; [annotation release]; } }]; [geoCoder release]; }
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { static NSString *indentifier = @"PIN_ANNOTATION"; MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:indentifier]; if (annotationView == nil) { annotationView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:indentifier] autorelease]; } annotationView.pinColor = MKPinAnnotationColorPurple; annotationView.animatesDrop = YES; annotationView.canShowCallout = YES; return annotationView; /* MKPinAnnotationColorRed // 大头针的颜色为红色 MKPinAnnotationColorGreen // 大头针的颜色为绿色 MKPinAnnotationColorPurple // 大头针的颜色为紫色 */ // animatesDrop /* 设置为YES,大头针以动画的效果显示在地图上;设置为NO,即没有动画效果 */ // canShowCallout /* 大头针附加信息,即点击大头针时,会出现气泡 */ } - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { m_mapView.centerCoordinate = userLocation.location.coordinate; } - (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error { NSLog(@"%@",[error description]); }
// // MapLocation.h // #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface MapLocation : NSObject <MKAnnotation> @property (copy, nonatomic) NSString *streetAddress; @property (copy, nonatomic) NSString *city; @property (copy, nonatomic) NSString *state; @property (copy, nonatomic) NSString *zip; @property (nonatomic, readwrite, assign) CLLocationCoordinate2D coordinate; @end
// // MapLocation.m // #import "MapLocation.h" @implementation MapLocation - (NSString *)title { return @"你的位置"; } - (NSString *)subtitle { NSMutableString *mutStr = [NSMutableString new]; if (_state) { [mutStr appendString:_state]; } if (_city) { [mutStr appendString:_city]; } if (_city && _state) { [mutStr appendString:@", "]; } if (_streetAddress && (_city || _state || _zip)) { [mutStr appendString:@" -"]; } if (_streetAddress) { [mutStr appendString:_streetAddress]; } if (_zip) { [mutStr appendFormat:@", %@",_zip]; } return mutStr; } @end
至此,ios 6苹果地图定位和跟踪介绍已经完毕,程序运行效果图如下:
相关文章推荐
- iOS定位服务与地图开发(5)---使用程序外地图之调用iOS 6苹果地图
- iOS.定位服务与地图应用.04.使用iOS苹果地图
- 【iOS】苹果,百度Map定位使用与总结
- IOS 地图定位,标记位置,获取经纬度,MKMapView的使用
- IOS 地图定位,标记位置,获取经纬度,MKMapView的使用
- 【iOS】苹果,百度Map定位使用与总结
- ios开发之定位和苹果地图
- iOS.定位服务与地图应用.05.跟踪用户位置变化
- iOS-地图定位、CLLocationManager简单使用
- IOS地图及定位使用
- 使用苹果的地图与定位
- iOS定位服务与地图开发(6)---使用程序外地图之调用谷歌Web地图
- iOS定位服务与地图开发(7)---使用本地化的百度地图
- 【iOS】苹果,百度Map定位使用与总结
- 类似美团的iOS地图定位及调用苹果系统导航
- 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等
- IOS 地图定位,标记位置,获取经纬度,MKMapView的使用
- iOS.定位服务与地图应用.06.调用iOS苹果地图
- [IOS]IOS8下地图定位的使用方法
- IOS——地图的使用、地图定位到当前位置(包括ios8获取位置)、地图标注的添加、地图放大缩小监听