因为有个项目要在地图中显示位置,所以用到了MapKit。

记录下来,以免以后忘记。

加入MapKit library

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

MapView

先增加一个ViewController,我这里用的storyboard,这个玩意还是挺好用的,比以前用xib好多了。

然后拖一个mapview上去,如:

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

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

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

然后就初始化mapview,显示。代码如下:

- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view._mapView.mapType = MKMapTypeStandard;//标准模式_mapView.showsUserLocation = YES;//显示自己_mapView.zoomEnabled = YES;//支持缩放CLLocationCoordinate2D pos = {39.931203, 116.395573};//找个坐标,我是用百度坐标抓取弄的。http://api.map.baidu.com/lbsapi/getpoint/MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);//以pos为中心,显示2000米MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸[_mapView setRegion:adjustedRegion animated:YES];}

我这里使用百度坐标,找了个坐标(直接搜索“百度 坐标”),然后在我们自己的地图里显示。这样运行一下就可以看到:

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);//以pos为中心,显示2000米MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸[_mapView setRegion:adjustedRegion animated:YES];show = YES;}}
}

当设备位置变化时,这个函数会被调用。这样我们就可以根据位置来做一些事情了。这个例子里就在第一次获取位置的时候更新一下地图显示。以设备当前位置为中心,显示2000米。

完了。贴一下mapview所在的controller代码:

//
//  KMapViewController.m
//  MapDemo
//
//  Created by Kevin on 14-2-10.
//  Copyright (c) 2014年 Kevin. All rights reserved.
//#import "KMapViewController.h"@interface KMapViewController ()@end@implementation KMapViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {// Custom initialization}return self;
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view.show = NO;_mapView.mapType = MKMapTypeStandard;//标准模式_mapView.showsUserLocation = YES;//显示自己_mapView.delegate = self;_mapView.zoomEnabled = YES;//支持缩放NSString* i = self.Index;if([i isEqualToString:@"1"]){CLLocationCoordinate2D pos = {39.931203, 116.395573};//找个坐标,我是用百度坐标抓取弄的。http://api.map.baidu.com/lbsapi/getpoint/MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);//以pos为中心,显示2000米MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸[_mapView setRegion:adjustedRegion animated:YES];}else{[self getCurPosition];}}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}- (void) dealloc
{//   [super dealloc];
}//获得自己的当前的位置信息
- (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 -- MPMapViewDelegate- (void) mapViewWillStartLoadingMap:(MKMapView *)mapView
{}-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
{}- (void) mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error
{}#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);//以pos为中心,显示2000米MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸[_mapView setRegion:adjustedRegion animated:YES];show = YES;}}
}@end

IOS开发 使用地图 MapKit相关推荐

  1. iOS学习笔记-地图MapKit入门

    代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...

  2. IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应

    (转)IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应 IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油 ...

  3. IOS开发百度地图API

    IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油站 IOS百度地图视角跳到用户当前位置 IOS百度地图开发实时路况 IO ...

  4. IOS开发百度地图API-用点生成路线,导航,气泡响应

    原地址:http://blog.sina.com.cn/s/blog_68661bd80101k4rx.html IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发 ...

  5. ios 开发百度地图的使用

    IOS开发百度地图API-用点生成路线,导航,气泡响应 IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油站 IOS百度地 ...

  6. 转:IOS开发百度地图API-用点生成路线,导航,气泡响应

    IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油站 IOS百度地图视角跳到用户当前位置 IOS百度地图开发实时路况 IO ...

  7. 转-iOS开发系列--地图与定位

    来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功 ...

  8. iOS开发系列--地图与定位

    概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...

  9. iOS开发中地图开发的简单应用

    iOS上使用地图比Android要方便,只需要新建一个MKMapView,addSubView即可.这次要实现的效果如下: 有标注(大头针),定位,地图. 1.添加地图 1.1 新一个Single V ...

最新文章

  1. 漫画 | 程序员联名把产品经理告上县衙,并列了 8 大罪状
  2. LeetCode Find K Pairs with Smallest Sums(大根堆、小根堆)
  3. hive 和 impala 时间参数错误的问题 yyyy-MM-dd
  4. 小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作
  5. undocumented windows nt pdf_我用Python写了一个PDF转换器!
  6. 简洁的MobX与MVP思想—大型项目实践
  7. Insider Dev Tour 2019 | 以技术之力,展现传承魅力
  8. [JSOI2007]字符加密
  9. 在vc++里面进行图像处理的时候应该把图形放哪_图形找朋友小班教案
  10. 在微信小程序中绘制图表(part1)
  11. 液晶电视TCON板原理讲解<转>
  12. jsonrpc java_jsonrpc环境搭建和简单实例
  13. kindle看pdf不清楚_不要再纠结pdf在kindle上的显示问题了,简单教程,拿去!不要太谢我。...
  14. 在商业化这件事上,百度Apollo智能车联究竟做得怎么样了?
  15. Linux第7章Gdk及Cairo基础,源文件:Ubuntu中使用GLUT和GDK将图片文件加载到纹理单元...
  16. 在eclipse中查看jar包
  17. 总结:MUSTer中的keypoint matching以及利用RANSAC去除outliers
  18. linux安装iostat,yum安装iostat命令时,提示No package iostat available. 错误:无须任何处理(示例代码)...
  19. 机器学习面试宝典200题!
  20. matlab画一维波动方程,一维波动方程的数值解

热门文章

  1. XS-Leaks(跨站点泄漏)攻击和预防
  2. es6 数组去重_JS数组去重的9种方法(包括去重NaN和复杂数组类型)
  3. 个人计算机市场排行,2017中国市场笔记本电脑排行榜Top50——查看:雷神911登顶...
  4. 国产降噪耳机哪款降噪效果好?降噪效果好的降噪耳机推荐
  5. 利用python实现多元线性回归确定喷墨大师的命中方向
  6. python 格式化打印列表_打印和格式化列表在Python中
  7. 对稀疏矩阵进行归一化
  8. 记一次vue使用*.ttf第三方字体库字体
  9. Java基础-Integer的==和equals方法
  10. 掌财社寒山:恒指期货k线图口诀是什么?