加入MapKit librarygit
首先得在项目中加入MapKit,如图api

MapView服务器
先增长一个ViewController,我这里用的storyboard,这个玩意仍是挺好用的,比之前用xib好多了。app

而后拖一个mapview上去,如:函数

给新增长的ViewController绑定一个class。首先得增长一个class,从uiViewController继承下来。这个很简单,如图oop

把新增长的ViewController绑定到这个class,也很easy,发现Xcode仍是挺牛的。就是在右边Identity inspector里面的custom class里面改为新增长的类,原来是UIViewController。ui

而后给map view控件绑定一个变量,类型是MKMapViewspa

而后就初始化mapview,显示。代码以下:.net
- - (void)viewDidLoad
- {
- [super viewDidLoad];
-
-
- _mapView.mapType = MKMapTypeStandard;
- _mapView.showsUserLocation = YES;
-
- _mapView.zoomEnabled = YES;
-
-
- CLLocationCoordinate2D pos = {39.931203, 116.395573};
-
- MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);
- MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];
- [_mapView setRegion:adjustedRegion animated:YES];
-
-
- }
我这里使用百度坐标,找了个坐标(直接搜索“百度 坐标”),而后在咱们本身的地图里显示。这样运行一下就能够看到:code

Map view delegate 回调
能够实现协议MKMapViewDelegate, 这样就会有几个回调。
- - (void) mapViewWillStartLoadingMap:(MKMapView *)mapView
- {
-
- }
-
- -(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
- {
-
- }
-
- - (void) mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error
- {
-
- }
获取设备当前位置而且在地图中显示
增长一个按钮,点击这个按钮,将显示设备当前位置。点击上面的按钮将显示某个固定位置。

CLLocationManager,首先使用CLLocationManager来获取设备的当前位置。
代码也是很简单
- - (void) getCurPosition
- {
-
- if (locationManager==nil)
- {
- locationManager =[[CLLocationManager alloc] init];
- }
-
-
- if ([CLLocationManager locationServicesEnabled])
- {
- locationManager.delegate=self;
- locationManager.desiredAccuracy=kCLLocationAccuracyBest;
- locationManager.distanceFilter=10.0f;
- [locationManager startUpdatingLocation];
- }
- }
而后实现回调函数
- #pragma mark -- CLLocationManagerDelegate
- - (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
- {
- if ([locations count] > 0) {
- CLLocation* loc = [locations objectAtIndex:0];
- CLLocationCoordinate2D pos = [loc coordinate];
-
- NSLog(@"locationManager, longitude: %f, latitude: %f", pos.longitude, pos.latitude);
-
- if (show == NO) {
- MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);
- MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];
- [_mapView setRegion:adjustedRegion animated:YES];
-
- show = YES;
- }
- }
- }
当设备位置变化时,这个函数会被调用。这样咱们就能够根据位置来作一些事情了。这个例子里就在第一次获取位置的时候更新一下地图显示。以设备当前位置为中心,显示2000米。
完了。贴一下mapview所在的controller代码: