ios中Core Location跟Map Kit的基本使用
2024-10-21 11:37:02
地图类开发应用中,离不开地理位置跟MKMapView的使用,下面就记录下自己在使用这两个东西中学到的。
不过并不是所有苹果的设备都支持地理位置,我们在使用前应该做个判断,代码如下:
BOOL locationAvailabe = [CLLocationManager locationServicesEnabled];
BOOL magnetometerAvailable = [CLLocationManager headingAvailable];
在地理位置中,我们用到主要类就是:CLLocationManager,关于它的常见代码如下:
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = ; // 1km
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
if ([CLLocationManager locationServicesEnabled] ) {
[locationManager startUpdatingLocation];
} else {
NSLog(@"Location services not enabled.");
}
通过设置distancFilter我们可以做到只有位置变动在1公里以上的时候才会进行通知,然后我们通过设置delegate,实现自己相应的逻辑,常见实现的两个协议如下:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"Moved from %@ to %@", oldLocation, newLocation);
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"Received Core Location error %@", error);
[manager stopUpdatingLocation];
}
上面就是关于地理位置的常见用法,当然还有CLLocationCoorinate2D类,这是一个关于区域的地理类。
好了,接下来说说MKMapView这个控件,这是一个地图应用常规控件,常用代码如下:
MKMapView.layer.cornerRadius = 10.0; //园角
MKMapView。showsUserLocation = YES;
[MKMapView setRegion: animated:] //使地图显示哪个区域附近的信息
如果我们想在地图控件插上大头针,应该怎么做呢,专业术语就是:Annotating Maps,显示效果如下:
那如何来做到这一点呢,其实关键是我们要实现一个协议,此协议名是:MKAnnotation。
然后通过如下代码
[MKMapView addAnnotation:]
把这个annotation加入到MapView中,运行查看就是上面图中的效果了。
最新文章
- 触摸java常量池
- C#中获得机器的字符编码webName信息
- centos7的网络配置以及设置主机名和绑定IP的问题
- Error: L6218E: Undefined symbol TIM_ARRPreloadConfig (referred from pwm_output.o).
- [shell练习]——awk练习题
- jquery操作cookie {分享}
- mysql-5.5.46源码编译安装
- 微软控制台带来的PHP控制台输出问题
- 总结:ARM逻辑和高级C(朱老师物联网学习)
- EF Code First:实体映射
- ES6中Promise对象个人理解
- xshell 快速复制打开之前用过的ssh
- 命令行执行python模块时提示ImportError: No module named xxx
- nagios系列(五)之nagios图形显示的配置及自定义插件检测密码是否修改详解
- 35 个最好用的 Vue 开源库
- cordova-config.xml配置应用图标
- Android学习资料总结
- 【Ubuntu】VirtualBox 您没有查看“sf_VirtualDisk”的内容所需的权限。
- shell 13文件包含
- 快速可靠网络传输协议 KCP(转)
热门文章
- (翻译)Xamarin.Essentials: 移动应用的跨平台 API
- Hadoop 学习【一】 安装部署
- 前端读者 | 前端用户体验-UI动效设计
- MS SQL Server迁移至Azure SQL(官方工具)
- 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】
- Flask实战第57天:UEditor编辑器集成以及配置上传文件到七牛
- NOIP 2006 提高组 t1 能量项链
- 【树形dp】Computer
- 【递归】【线段树】【堆】AtCoder Regular Contest 080 E - Young Maids
- 【动态规划】【二分】CDOJ1006 最长上升子序列