地图类开发应用中,离不开地理位置跟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中,运行查看就是上面图中的效果了。

最新文章

  1. 触摸java常量池
  2. C#中获得机器的字符编码webName信息
  3. centos7的网络配置以及设置主机名和绑定IP的问题
  4. Error: L6218E: Undefined symbol TIM_ARRPreloadConfig (referred from pwm_output.o).
  5. [shell练习]——awk练习题
  6. jquery操作cookie {分享}
  7. mysql-5.5.46源码编译安装
  8. 微软控制台带来的PHP控制台输出问题
  9. 总结:ARM逻辑和高级C(朱老师物联网学习)
  10. EF Code First:实体映射
  11. ES6中Promise对象个人理解
  12. xshell 快速复制打开之前用过的ssh
  13. 命令行执行python模块时提示ImportError: No module named xxx
  14. nagios系列(五)之nagios图形显示的配置及自定义插件检测密码是否修改详解
  15. 35 个最好用的 Vue 开源库
  16. cordova-config.xml配置应用图标
  17. Android学习资料总结
  18. 【Ubuntu】VirtualBox 您没有查看“sf_VirtualDisk”的内容所需的权限。
  19. shell 13文件包含
  20. 快速可靠网络传输协议 KCP(转)

热门文章

  1. (翻译)Xamarin.Essentials: 移动应用的跨平台 API
  2. Hadoop 学习【一】 安装部署
  3. 前端读者 | 前端用户体验-UI动效设计
  4. MS SQL Server迁移至Azure SQL(官方工具)
  5. 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】
  6. Flask实战第57天:UEditor编辑器集成以及配置上传文件到七牛
  7. NOIP 2006 提高组 t1 能量项链
  8. 【树形dp】Computer
  9. 【递归】【线段树】【堆】AtCoder Regular Contest 080 E - Young Maids
  10. 【动态规划】【二分】CDOJ1006 最长上升子序列