● MapKit框架使用前提

● 导入框架
● 导入主头文件
#import <MapKit/MapKit.h>
 
●  MapKit框架使用须知
●  MapKit框架中所有数据类型的前缀都是MK
●  MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显示

 

跟踪显示用户的位置

● 设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置

● MKUserTrackingModeNone :不跟踪用户的位置

● MKUserTrackingModeFollow :跟踪并在地图上显示用户的当前位置

● MKUserTrackingModeFollowWithHeading :跟踪并在地图上显示用户的当前位 置,地图会跟随用户的前进方向进行旋转

● 下图是跟踪效果
● 蓝色发光圆点就是用户的当前位置
● 蓝色发光原点,专业术语叫做“大头针”

地图的类型

● 可以通过设置MKMapView的mapViewType设置地图类型
● MKMapTypeStandard:普通地图(左图)
● MKMapTypeSatellite:卫星云图(中图)
● MKMapTypeHybrid:普通地图覆盖于卫星云图之上(右图)

MKMapView的代理

MKMapView可以设置一个代理对象,用来监听地图的相关行为

常见的代理方法有

-(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation: (MKUserLocation *)userLocation;

调用非常频繁,不断监测用户的当前位置

每次调用,都会把用户的最新位置(userLocation参数)传进来

-(void)mapView:(MKMapView*)mapViewregionWillChangeAnimated: (BOOL)animated;

地图的显示区域即将发生改变的时候调用

-(void)mapView:(MKMapView*)mapViewregionDidChangeAnimated: (BOOL)animated;

地图的显示区域已经发生改变的时候调用

MKUserLocation

● MKUserLocation其实是个大头针模型,包括以下属性
● @property(nonatomic,copy)NSString*title;

• 显示在大头针上的标题

● @property(nonatomic,copy)NSString*subtitle;

• 显示在大头针上的子标题

● @property(readonly,nonatomic)CLLocation*location;

• 地理位置信息(大头针钉在什么地方?)

设置地图的显示

通过MKMapView的下列方法,可以设置地图显示的位置和区域

1.设置地图的中心点位置

@property (nonatomic) CLLocationCoordinate2D centerCoordinate;
- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate
animated:(BOOL)animated;

2.设置地图的显示区域 
@property (nonatomic) MKCoordinateRegion region;
- (void)setRegion:(MKCoordinateRegion)region animated:
(BOOL)animated;

MKCoordinateRegion

● MKCoordinateRegion是一个用来表示区域的结构体,定义如下
typedef struct {

CLLocationCoordinate2D center; // 区域的中心点位置

MKCoordinateSpan span; // 区域的跨度

} MKCoordinateRegion;

● MKCoordinateSpan的定义

typedef struct {

CLLocationDegrees latitudeDelta; // 纬度跨度

CLLocationDegrees longitudeDelta; // 经度跨度

} MKCoordinateSpan;

大头针的基本操作

● 添加一个大头针

● -(void)addAnnotation:(id<MKAnnotation>)annotation;

● 添加多个大头针
● -(void)addAnnotations:(NSArray*)annotations;

● 移除一个大头针
● -(void)removeAnnotation:(id<MKAnnotation>)annotation;

● 移除多个大头针
● -(void)removeAnnotations:(NSArray*)annotations;

● (id<MKAnnotation>)annotation参数是什么东西?
● 大头针模型对象:用来封装大头针的数据,比如大头针的位置、标题、子标题等数据

大头针模型

● 新建一个大头针模型类
#import <MapKit/MapKit.h>

@interface MJTuangouAnnotation : NSObject <MKAnnotation>
/** 坐标位置 */
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

/** 标题 */

@property (nonatomic, copy) NSString *title;

/** 子标题 */
@property (nonatomic, copy) NSString *subtitle;

@end

添加大头针

MJTuangouAnnotation *anno = [[MJTuangouAnnotation alloc] init];
anno.title = @"XX超市";
anno.subtitle = @"地址:XX 公交是XX";
anno.coordinate = CLLocationCoordinate2DMake(40, 116);
[self.mapView addAnnotation:anno];

自定义大头针

● 很多情况下,需要自定义大头针的显示样式,比如显示一张图片

自定义大头针

● 如何自定义大头针

● 设置MKMapView的代理

● 实现下面的代理方法,返回大头针控件

- (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>)annotation;
●  根据传进来的(id <MKAnnotation>)annotation参数创建并返回对应的大头针控 件 ●  代理方法的使用注意 ●  如果返回nil,显示出来的大头针就采取系统的默认样式 ●  标识用户位置的蓝色发光圆点,它也是一个大头针,当显示这个大头针时,也会调用代 理方法 ●  因此,需要在代理方法中分清楚(id <MKAnnotation>)annotation参数代表自定 义的大头针还是蓝色发光圆点

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation: (id<MKAnnotation>)annotation

{

// 判断annotation的类型
if (![annotation isKindOfClass:[MJTuangouAnnotation class]]) return nil;

// 创建MKAnnotationView
static NSString *ID = @"tuangou";
MKAnnotationView *annoView = [mapView dequeueReusableAnnotationViewWithIdentifier:ID];
if (annoView == nil) {

       annoView = [[MKAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:ID];
       annoView.canShowCallout = YES;
}
// 传递模型数据
annoView.annotation = annotation;

// 设置图片
MJTuangouAnnotation *tuangouAnnotation = annotation;

annoView.image = [UIImage imageNamed:tuangouAnnotation.icon];

return annoView;

}

MKAnnotationView

● 地图上的大头针控件是MKAnnotationView
● MKAnnotationView的属性

● @property(nonatomic,strong)id<MKAnnotation>annotation;

• 大头针模型

● @property(nonatomic,strong)UIImage*image;

• 显示的图片

● @property(nonatomic)BOOLcanShowCallout;
• 是否显示标注

● @property(nonatomic)CGPointcalloutOffset;

• 标注的偏移量

● @property(strong,nonatomic)UIView*rightCalloutAccessoryView;

• 标注右边显示什么控件

● @property(strong,nonatomic)UIView*leftCalloutAccessoryView;

• 标注左边显示什么控件

MKPinAnnotationView

● MKPinAnnotationView是MKAnnotationView的子类

● MKPinAnnotationView比MKAnnotationView多了2个属性

● @property(nonatomic)MKPinAnnotationColorpinColor;

• 大头针颜色

● @property(nonatomic)BOOLanimatesDrop;

• 大头针第一次显示时是否从天而降

 

实例:MpaKit基本使用

/**
CLLocation : 封装位置信息(经纬度、海拔)
CLPlacemark : 封装地标信息(位置信息CLLocation、地名name、国家country)
MKUserLocation : 封装地图上大头针的位置信息(位置信息CLLocation、标题title、子标题subtitle)
CLLocationDegrees : 度数(经度、纬度)
CLLocationCoordinate2D : 地理坐标(经度CLLocationDegrees longitude、纬度CLLocationDegrees latitude)
MKCoordinateSpan : 跨度(经度跨度CLLocationDegrees longitudeDelta、纬度跨度CLLocationDegrees latitudeDelta)
MKCoordinateRegion: 区域(中心位置CLLocationCoordinate2D center、区域跨度MKCoordinateSpan span)
*/ #import "HMViewController.h"
#import <MapKit/MapKit.h> @interface HMViewController () <MKMapViewDelegate, CLLocationManagerDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad];
// 1.设置地图类型
self.mapView.mapType = MKMapTypeStandard; // 2.设置跟踪模式(MKUserTrackingModeFollow == 跟踪)
self.mapView.userTrackingMode = MKUserTrackingModeFollow; // 3.设置代理(监控地图的相关行为:比如显示的区域发生了改变)
self.mapView.delegate = self;
} #pragma mark - MKMapViewDelegate
/**
* 更新到用户的位置时就会调用(显示的位置、显示范围改变)
* userLocation : 大头针模型数据, 对大头针位置的一个封装(这里的userLocation描述的是用来显示用户位置的蓝色大头针)
*/
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
userLocation.title = @"天朝帝都";
userLocation.subtitle = @"帝都是个牛逼的地方";
} /**
* 地图显示的区域改变了就会调用(显示的位置、显示范围改变)
*/
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
CLLocationCoordinate2D center = mapView.region.center;
MKCoordinateSpan span = mapView.region.span; NSLog(@"中心点=(%f, %f), 区域跨度=(%f, %f)", center.longitude, center.latitude, span.longitudeDelta, span.latitudeDelta);
} /**
* 地图显示的区域即将改变了就会调用
*/
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
// NSLog(@"regionWillChangeAnimated");
} @end

实例:MpaKit ->显示特定位置和区域

#import "HMViewController.h"
#import <MapKit/MapKit.h> @interface HMViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
- (IBAction)backToUserLocation; @end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad]; // [self.mapView setCenterCoordinate:<#(CLLocationCoordinate2D)#>]; // 设置地图显示的中心位置
// CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(39, 116);
// [self.mapView setCenterCoordinate:coordinate animated:YES]; // 设置地图显示的区域
// [self.mapView setRegion:<#(MKCoordinateRegion)#>];
// CLLocationCoordinate2D center = CLLocationCoordinate2DMake(39, 116);
// MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
// MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
// [self.mapView setRegion:region animated:YES]; self.mapView.userTrackingMode = MKUserTrackingModeFollow;
self.mapView.delegate = self;
} #pragma mark - MKMapViewDelegate
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
// [mapView setCenterCoordinate:userLocation.location.coordinate animated:YES];
CLLocationCoordinate2D center = userLocation.location.coordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.2509, 0.2256);
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
[self.mapView setRegion:region animated:YES];
} //- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
//{
// NSLog(@"%f %f", mapView.region.span.latitudeDelta, mapView.region.span.longitudeDelta);
//}
- (IBAction)backToUserLocation {
CLLocationCoordinate2D center = self.mapView.userLocation.location.coordinate;
[self.mapView setCenterCoordinate:center animated:YES];
}
@end

实例:MpaKit ->添加大头针

#import "HMViewController.h"
#import <MapKit/MapKit.h>
#import "HMAnnotation.h" @interface HMViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad]; // HMAnnotation *anno1 = [[HMAnnotation alloc] init];
// anno1.coordinate = CLLocationCoordinate2DMake(39, 119);
// anno1.title = @"帝都";
// anno1.subtitle = @"帝都帝都帝都帝都帝都";
// // 添加一个大头针模型(模型:描述大头针的信息)
// [self.mapView addAnnotation:anno1];
//
// HMAnnotation *anno2 = [[HMAnnotation alloc] init];
// anno2.coordinate = CLLocationCoordinate2DMake(23, 116);
// anno2.title = @"广东";
// anno2.subtitle = @"广东广东广东广东广东";
// [self.mapView addAnnotation:anno2]; /**
纬度范围:N 3°51′ ~ N 53°33′
经度范围:E 73°33′ ~ E 135°05′
*/ for (int i = ; i<; i++) {
CLLocationDegrees latitude = + arc4random_uniform();
CLLocationDegrees longitude = 73.2 + arc4random_uniform(); HMAnnotation *anno = [[HMAnnotation alloc] init];
anno.coordinate = CLLocationCoordinate2DMake(latitude, longitude);
[self.mapView addAnnotation:anno];
}
} @end

实例:MpaKit ->自定义大头针

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h> @interface HMAnnotation : NSObject <MKAnnotation>
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
/**
* 图片名
*/
@property (nonatomic, copy) NSString *icon;
@end
#import "HMAnnotationView.h"
#import "HMAnnotation.h" @interface HMAnnotationView()
@property (nonatomic, weak) UIImageView *iconView;
@end @implementation HMAnnotationView + (instancetype)annotationViewWithMapView:(MKMapView *)mapView
{
static NSString *ID = @"anno";
HMAnnotationView *annotationView = (HMAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
if (annotationView == nil) {
// 传入循环利用标识来创建大头针控件
annotationView = [[HMAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:ID];
}
return annotationView;
} - (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) {
// 显示标题和子标题
self.canShowCallout = YES; // 左边显示一个图片
UIImageView *iconView = [[UIImageView alloc] init];
iconView.bounds = CGRectMake(, , , );
self.leftCalloutAccessoryView = iconView;
self.iconView = iconView;
}
return self;
} - (void)setAnnotation:(HMAnnotation *)annotation
{
[super setAnnotation:annotation]; self.image = [UIImage imageNamed:annotation.icon];
self.iconView.image = self.image;
} @end
#import "HMViewController.h"
#import <MapKit/MapKit.h>
#import "HMAnnotation.h"
#import "HMAnnotationView.h" @interface HMViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
- (IBAction)add; @end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad]; self.mapView.delegate = self; self.mapView.userTrackingMode = MKUserTrackingModeFollow;
} - (IBAction)add {
// HMAnnotation *anno1 = [[HMAnnotation alloc] init];
// anno1.coordinate = CLLocationCoordinate2DMake(39, 119);
// anno1.title = @"帝都";
// anno1.subtitle = @"帝都帝都帝都帝都帝都";
// anno1.icon = @"me";
// [self.mapView addAnnotation:anno1];
//
// HMAnnotation *anno2 = [[HMAnnotation alloc] init];
// anno2.coordinate = CLLocationCoordinate2DMake(23, 116);
// anno2.title = @"广东";
// anno2.subtitle = @"广东广东广东广东广东";
// anno2.icon = @"other";
// [self.mapView addAnnotation:anno2];
HMAnnotation *tg1 = [[HMAnnotation alloc] init];
tg1.title = @"xxx大饭店";
tg1.subtitle = @"全场一律15折,会员20折";
tg1.icon = @"category_1";
tg1.coordinate = CLLocationCoordinate2DMake(, );
[self.mapView addAnnotation:tg1]; HMAnnotation *tg2 = [[HMAnnotation alloc] init];
tg2.title = @"xxx影院";
tg2.subtitle = @"最新大片:美国队长2,即将上映。。。";
tg2.icon = @"category_5";
tg2.coordinate = CLLocationCoordinate2DMake(, );
[self.mapView addAnnotation:tg2];
} #pragma mark - MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(HMAnnotation *)annotation
{
// 返回nil就会按照系统的默认做法
if (![annotation isKindOfClass:[HMAnnotation class]]) return nil; // 1.获得大头针控件
HMAnnotationView *annoView = [HMAnnotationView annotationViewWithMapView:mapView]; // 2.传递模型
annoView.annotation = annotation; return annoView;
} //- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
//{
// // 1.先从缓存池中取出可以循环利用的大头针控件
// static NSString *ID = @"anno";
// MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
//
// // 2.缓存池中没有可以循环利用的大头针控件
// if (annotationView == nil) {
// // 传入循环利用标识来创建大头针控件
// annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:ID];
// // 设置头的颜色
// annotationView.pinColor = MKPinAnnotationColorPurple;
// // 从天而降
// annotationView.animatesDrop = YES;
// // 显示标题和子标题
// annotationView.canShowCallout = YES;
//// annotationView.calloutOffset = CGPointMake(0, -10);
//// annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd];
//// annotationView.leftCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeInfoDark];
//
// // 往大头针里面添加一个按钮(测试)
//// [annotationView addSubview:[UIButton buttonWithType:UIButtonTypeContactAdd]];
// }
//
// // 3.传递模型(更新大头针数据,覆盖掉之前的旧数据)
// annotationView.annotation = annotation;
//
// return annotationView;
//} //- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(HMAnnotation *)annotation
//{
// // 1.先从缓存池中取出可以循环利用的大头针控件
// static NSString *ID = @"anno";
// MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:ID];
//
// // 2.缓存池中没有可以循环利用的大头针控件
// if (annotationView == nil) {
// // 传入循环利用标识来创建大头针控件
// annotationView = [[MKAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:ID];
// // 显示标题和子标题
// annotationView.canShowCallout = YES;
// }
//
// // 3.传递模型(更新大头针数据,覆盖掉之前的旧数据)
// annotationView.annotation = annotation;
//
// // 4.设置图片
// annotationView.image = [UIImage imageNamed:annotation.icon];
//
// return annotationView;
//}
@end

实例:MpaKit ->在地图上画线

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h> @interface HMAnnotation : NSObject <MKAnnotation>
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@end
#import "HMViewController.h"
#import <MapKit/MapKit.h>
#import "HMAnnotation.h" @interface HMViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@property (nonatomic, strong) CLGeocoder *geocoder;
- (IBAction)startNavigation; @property (nonatomic, strong) MKPlacemark *sourceMKPm;
@property (nonatomic, strong) MKPlacemark *destinationMKPm;
@end @implementation HMViewController - (CLGeocoder *)geocoder
{
if (!_geocoder) {
self.geocoder = [[CLGeocoder alloc] init];
}
return _geocoder;
} - (IBAction)startNavigation {
if (self.sourceMKPm == nil || self.destinationMKPm == nil) return; // 起点
MKMapItem *sourceItem = [[MKMapItem alloc] initWithPlacemark:self.sourceMKPm]; // 终点
MKMapItem *destinationItem = [[MKMapItem alloc] initWithPlacemark:self.destinationMKPm]; // 存放起点和终点
NSArray *items = @[sourceItem, destinationItem]; // 参数
NSMutableDictionary *options = [NSMutableDictionary dictionary];
// 导航模式:驾驶导航
options[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving;
// 是否要显示路况
options[MKLaunchOptionsShowsTrafficKey] = @YES; // 打开苹果官方的导航应用
[MKMapItem openMapsWithItems:items launchOptions:options];
} - (void)viewDidLoad
{
[super viewDidLoad]; self.mapView.delegate = self; NSString *sourceAddress = @"广州";
NSString *destinationAddress = @"帝都"; [self.geocoder geocodeAddressString:sourceAddress completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *gzPm = [placemarks firstObject];
if (gzPm == nil) return; // 添加广州大头针
HMAnnotation *gzAnno = [[HMAnnotation alloc] init];
gzAnno.coordinate = gzPm.location.coordinate;
gzAnno.title = sourceAddress;
gzAnno.subtitle = gzPm.name;
[self.mapView addAnnotation:gzAnno]; [self.geocoder geocodeAddressString:destinationAddress completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *bjPm = [placemarks firstObject];
if (bjPm == nil) return; // 添加北京大头针
HMAnnotation *bjAnno = [[HMAnnotation alloc] init];
bjAnno.coordinate = bjPm.location.coordinate;
bjAnno.title = destinationAddress;
bjAnno.subtitle = bjPm.name;
[self.mapView addAnnotation:bjAnno]; [self drawLineWithSourceCLPm:gzPm destinationCLPm:bjPm];
}];
}];
} - (void)drawLineWithSourceCLPm:(CLPlacemark *)sourceCLPm destinationCLPm:(CLPlacemark *)destinationCLPm
{
if (sourceCLPm == nil || destinationCLPm == nil) return; // 1.初始化方向请求
// 方向请求
MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init]; // 设置起点
MKPlacemark *sourceMKPm = [[MKPlacemark alloc] initWithPlacemark:sourceCLPm];
request.source = [[MKMapItem alloc] initWithPlacemark:sourceMKPm];
self.sourceMKPm = sourceMKPm; // 设置终点
MKPlacemark *destinationMKPm = [[MKPlacemark alloc] initWithPlacemark:destinationCLPm];
request.destination = [[MKMapItem alloc] initWithPlacemark:destinationMKPm];
self.destinationMKPm = destinationMKPm; // 2.根据请求创建方向
MKDirections *directions = [[MKDirections alloc] initWithRequest:request]; // 3.执行请求
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
if (error) return; for (MKRoute *route in response.routes) {
// 添加路线遮盖(传递路线的遮盖模型数据)
[self.mapView addOverlay:route.polyline];
}
}]; // 遮盖 overlay
} #pragma mark - 代理方法
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
MKPolylineRenderer *redender = [[MKPolylineRenderer alloc] initWithOverlay:overlay];
redender.lineWidth = ;
redender.strokeColor = [UIColor blueColor];
return redender;
} @end
 

IOS MapKit框架的使用(专门用于地图显示)的更多相关文章

  1. iOS学习笔记20-地图(二)MapKit框架

    一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...

  2. iOS核心笔记—MapKit框架-基础

    1.MapKit框架简介: ✨了解:MapKit框架使用须知:①.MapKit框架中所有的数据类型的前缀都是MK:②.需要导入#import <MapKit/MapKit.h>头文件:③. ...

  3. iOS地图----MapKit框架

    1.MapKit框架使用前提 ①导入框架 ②导入主头文件 #import <MapKit/MapKit.h> ③MapKit框架使用须知 MapKit框架中所有数据类型的前缀都是MK Ma ...

  4. MapKit框架使用

    MapKit框架使用 一.地图的基本使用 1.简介 MapKit:用于地图展示,例如大头针/路线/覆盖层展示等(着重界面展示) 使用步骤: 导入主头文件 MapKit/MapKit.h MapKit有 ...

  5. iOS 底层框架的浅析

    1.简介 IOS是由苹果公司为iPhone.iPod touch和iPad等设备开发的操作系统. 2.知识点 iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设 ...

  6. [iOS 主要框架的总结]

    原文地址:http://blog.csdn.net/GooHong/article/details/28911301 在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件, ...

  7. IOS系统框架

    IOS系统框架:ios架构号MAC OS的基础框架相似:ios扮演底层硬件和应用程序的中介,底层为所有应用程序提供基础服务,高层则包含一些复杂巧妙的技术和服务,并且创建的应用程序不能直接访问硬件. C ...

  8. iOS 常用框架介绍

    iOS框架介绍      Cocoa Touch   GameKit  实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息  iOS设备之间蓝牙数据传输   从iOS7开始过期   局域网游 ...

  9. iOS底层框架浅析

    1.简介 IOS是由苹果公司为iPhone.iPod touch和iPad等设备开发的操作系统. 2.知识点 iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设 ...

随机推荐

  1. PIE SDK栅格数据的投影转换

    1. 功能简介 为了适应不同数据显示分析的需要,数据的投影可以进行相应的转换,目前PIE SDK支持多种数据格式的投影转换,下面对栅格数据格式的投影转换功能进行介绍. 2. 功能实现说明 2.1. 实 ...

  2. PIE SDK元素的选择和取消选择

    1功能简介 在数据的查看等时候会用到元素的选择, 目前PIE SDK支持元素的选择和去取消选择功能,下面对这两种功能如何使用进行介绍. 2功能实现说明 2.1元素的选择 2.1.1 实现思路及原理说明 ...

  3. 解决windows10活动历史记录删除问题

    Windows10日常办公过程中系统会记录很多活动历史记录信息,我是不希望我的活动历史记录随时可以被别人查看,虽然电脑有设置密码,但是办公电脑还是习惯将历史记录删除掉,并且永远禁用windows10的 ...

  4. 问题1-xshell远程连接不上linux主机

    在其他主机上搭建linux系统,我们一般通过xshell工具去远程访问该主机,这样不仅可以方便我们的对系统或者集群进行管理也方便了我们的操作,但是在搭建好环境的时候遇到如下问题: 解决方案:1.关闭目 ...

  5. 【防火墙】iptables查看、添加、删除规则

    root@ROUTER:~# iptables -t -nvL 查看到当前我的端口映射下有很多规则. 1.删除端口映射规则和端口映射的链 ①先删除子链里的所有规则 iptables -t nat -F ...

  6. 一分钟学会Git操作流程

    今天整理下公司操作git 流程,尽量用最最简洁的方式整理出来,方便以后有新来的同事学习使用. 我整理的这个Git操作,基本上只需要一分钟,就可以轻松上手啦!!! 一. 拉取提交操作 1.拉取远程代码 ...

  7. 设置session超时的三种方式

    设置session超时的三种方式 1. 在容器中设置:如在tomcat-7\conf\web.xml中设置 Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制sess ...

  8. unity3D使用C#遍历场景内所有元素进行操作

    最近入门Unity3D,跟着教程做完了survival射击游戏,就想加一个功能,就是按一个按钮屏幕上的怪物都清空. 如图右下角所示. 我的方法是赋予所有怪物一个标签Tag,然后根据标签销毁Gameob ...

  9. PAT 1024 Palindromic Number

    #include <cstdio> #include <iostream> #include <cstdlib> #include <algorithm> ...

  10. 对 Vue 的理解(一)

    一.什么是 Vue ? 首先,Vue 是一个 MVVM 框架,M -- 模型,就是用来定义驱动的数据,V -- 视图,是经过数据改变后的 html,VM -- 框架视图,就是用来实现双向绑定的中间桥梁 ...