iOS8 的 MapKit 和 Location

iOS Oct 24, 2014

今天把 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 真用不习惯。

Tags

Jie Li

🚘 On-road / 📉 US Stock / 💻 Full Stack Developer / 🎓 Grad Student / ®️ ENTJ

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.