Table of Content

今天把 iOS8 的 MapKit 研究了下,一会儿对比下和 iOS7 的区别。另外就是,Xcode6 的改动真他妈大,新建工程没有 empty ,工程里面没有 pch 文件,项目设置里面没有包含任何 framework ,连项目国际化都不会了。。看起来倒是整洁不少,具体怎么回事,回头再研究吧!

为了省事,还是使用拖控件的方式。新建项目,拖上去一个 MapKit 控件, ctrl 拖到控制器,成为一个属性。添加 MapKit 框架, Location 框架。 plist 添加NSLocationWhenInUseUsageDescription、NSLocationAlwaysUsageDescription 字段。

加上这行

<MKMapViewDelegate,CLLocationManagerDelegate>

还有这行

@property (nonatomic,strong) CLLocationManager *locMgr;

在 viewDidLoad 里面这么写

self.locMgr = [CLLocationManager new];
[self.locMgr requestWhenInUseAuthorization];
self.locMgr.delegate = self;

self.mapView.userTrackingMode = MKUserTrackingModeFollow;
self.mapView.delegate = self;

直接运行你会发现,成功运行

Allow之后,会进入模拟器预设的自定义地点(北京的经纬度位 39 , 116)

你们运行之后,地图一定是放大到了最大,达到上方效果还需要添加这么个代理方法

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

内容这么写

userLocation.title = @"帝都";
userLocation.subtitle = @"厚德载雾,自强不吸";
CLLocationCoordinate2D center = userLocation.location.coordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
[mapView setRegion:region];

iOS7怎么做我就不描述了,百度一搜一大把。iOS7 中的地图,默认加载显示美国的版块,比例尺最大,模拟完地点之后,比例尺还是最大,需要手动调小,iOS8 正好相反。

另外,求语言国际化的教程。Xcode6 真用不习惯。