IOS开发 使用地图 MapKit
因为有个项目要在地图中显示位置,所以用到了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相关推荐
- iOS学习笔记-地图MapKit入门
代码地址如下: http://www.demodashi.com/demo/11682.html 这篇文章还是翻译自raywenderlich,用Objective-C改写了代码.没有逐字翻译,如有错 ...
- IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应
(转)IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应 IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油 ...
- IOS开发百度地图API
IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油站 IOS百度地图视角跳到用户当前位置 IOS百度地图开发实时路况 IO ...
- IOS开发百度地图API-用点生成路线,导航,气泡响应
原地址:http://blog.sina.com.cn/s/blog_68661bd80101k4rx.html IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发 ...
- ios 开发百度地图的使用
IOS开发百度地图API-用点生成路线,导航,气泡响应 IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油站 IOS百度地 ...
- 转:IOS开发百度地图API-用点生成路线,导航,气泡响应
IOS百度地图API开发自定义气泡,点击气泡自动生成路线,以及拖拽 IOS百度地图开发POISearch搜索附近停车场,附近加油站 IOS百度地图视角跳到用户当前位置 IOS百度地图开发实时路况 IO ...
- 转-iOS开发系列--地图与定位
来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功 ...
- iOS开发系列--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...
- iOS开发中地图开发的简单应用
iOS上使用地图比Android要方便,只需要新建一个MKMapView,addSubView即可.这次要实现的效果如下: 有标注(大头针),定位,地图. 1.添加地图 1.1 新一个Single V ...
最新文章
- 漫画 | 程序员联名把产品经理告上县衙,并列了 8 大罪状
- LeetCode Find K Pairs with Smallest Sums(大根堆、小根堆)
- hive 和 impala 时间参数错误的问题 yyyy-MM-dd
- 小学生四则运算出题程序 无操作界面java版 简单的运用java中一些基本操作
- undocumented windows nt pdf_我用Python写了一个PDF转换器!
- 简洁的MobX与MVP思想—大型项目实践
- Insider Dev Tour 2019 | 以技术之力,展现传承魅力
- [JSOI2007]字符加密
- 在vc++里面进行图像处理的时候应该把图形放哪_图形找朋友小班教案
- 在微信小程序中绘制图表(part1)
- 液晶电视TCON板原理讲解<转>
- jsonrpc java_jsonrpc环境搭建和简单实例
- kindle看pdf不清楚_不要再纠结pdf在kindle上的显示问题了,简单教程,拿去!不要太谢我。...
- 在商业化这件事上,百度Apollo智能车联究竟做得怎么样了?
- Linux第7章Gdk及Cairo基础,源文件:Ubuntu中使用GLUT和GDK将图片文件加载到纹理单元...
- 在eclipse中查看jar包
- 总结:MUSTer中的keypoint matching以及利用RANSAC去除outliers
- linux安装iostat,yum安装iostat命令时,提示No package iostat available. 错误:无须任何处理(示例代码)...
- 机器学习面试宝典200题!
- matlab画一维波动方程,一维波动方程的数值解
热门文章
- XS-Leaks(跨站点泄漏)攻击和预防
- es6 数组去重_JS数组去重的9种方法(包括去重NaN和复杂数组类型)
- 个人计算机市场排行,2017中国市场笔记本电脑排行榜Top50——查看:雷神911登顶...
- 国产降噪耳机哪款降噪效果好?降噪效果好的降噪耳机推荐
- 利用python实现多元线性回归确定喷墨大师的命中方向
- python 格式化打印列表_打印和格式化列表在Python中
- 对稀疏矩阵进行归一化
- 记一次vue使用*.ttf第三方字体库字体
- Java基础-Integer的==和equals方法
- 掌财社寒山:恒指期货k线图口诀是什么?