【iOS】7.4 定位服务->3.4 地图框架MapKit 功能4:地图截图
2017-04-12 13:46
856 查看
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。
本文相关目录:
================== 所属文集:【iOS】07 设备工具 ==================
7.4 定位服务->1.0 简介
7.4 定位服务->2.1.1 定位 - 官方框架CoreLocation: 请求用户授权
7.4 定位服务->2.1.2 定位 - 官方框架CoreLocation: CLLocationManager位置管理器
7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位
7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码
7.4 定位服务->2.1.3.3 定位 - 官方框架CoreLocation 功能3:区域监听
7.4 定位服务->2.1.4 定位 - 官方框架CoreLocation 案例:指南针效果
7.4 定位服务->2.2 定位 - locationManager框架
7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示
7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)
7.4 定位服务->3.3 地图框架MapKit 功能3:3D视图
7.4 定位服务->3.4 地图框架MapKit 功能4:地图截图
7.4 定位服务->3.5 地图框架MapKit 功能5:POI检索
================== 所属文集:【iOS】07 设备工具 ==================
地图框架 - MapKit目录:
本文目录:
步骤1:创建截图附加选项(略)
步骤2:设置截图附加选项
步骤3:创建截图对象
步骤4:开始截图
代码20:地图截图 Demo
编译环境:Xcode 8.0
模拟器版本:iOS 10
Swift版本:3.0
【OC 语言】
#import "ViewController.h" #import <MapKit/MapKit.h> @interface ViewController () @property (weak, nonatomic) IBOutlet MKMapView *mapView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // 1. 创建截图附加选项 - option MKMapSnapshotOptions *option = [[MKMapSnapshotOptions alloc] init]; // 2. 设置截图附加选项 - option option.mapRect = self.mapView.visibleMapRect; // 设置地图区域 option.region = self.mapView.region; // 设置截图区域(在地图上的区域,作用在地图) option.mapType = MKMapTypeStandard; // 截图的地图类型 option.showsPointsOfInterest = YES; // 是否显示POI option.showsBuildings = YES; // 是否显示建筑物 option.size = self.mapView.frame.size; // 设置截图后的图片大小(作用在输出图像) option.scale = [[UIScreen mainScreen] scale]; // 设置截图后的图片比例(默认是屏幕比例, 作用在输出图像) // 3. 创建截图对象 MKMapSnapshotter *snapShoter = [[MKMapSnapshotter alloc] initWithOptions:option]; // 4. 开始截图 [snapShoter startWithCompletionHandler:^(MKMapSnapshot * _Nullable snapshot, NSError * _Nullable error) { if (error == nil) { // 获取到截图图像 UIImage *image = snapshot.image; // 将截图转换成为NSData数据 NSData *data = UIImagePNGRepresentation(image); // 将图像保存到指定路径 [data writeToFile:@"/Users/TD/Desktop/test.png" atomically:YES]; }else{ NSLog(@"截图错误:%@",error.localizedDescription); } }]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
【Swift 语言】
import UIKit import MapKit class ViewController: UIViewController { @IBOutlet weak var mapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() } // MARK: - 地图截图 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { // 1. 创建截图附加选项 - option let option: MKMapSnapshotOptions = MKMapSnapshotOptions() // 2. 设置截图附加选项 - option option.mapRect = mapView.visibleMapRect // 设置地图区域 option.region = mapView.region // 设置截图区域(在地图上的区域,作用在地图) option.mapType = .standard // 截图的地图类型 option.showsPointsOfInterest = true // 是否显示POI option.showsBuildings = true // 是否显示建筑物 // option.size = CGSize(width: 100, height: 100)// 设置截图后的图片大小(作用在输出图像) option.size = self.mapView.frame.size // 设置截图后的图片大小(作用在输出图像) option.scale = UIScreen.main.scale // 设置截图后的图片比例(默认是屏幕比例, 作用在输出图像) // 3. 创建截图对象 let snapShoter = MKMapSnapshotter(options: option) // 4. 开始截图 snapShoter.start { (shot:MKMapSnapshot?, error:Error?) in if error == nil { // 获取到截图图像 let image = shot?.image // 将截图转换成为NSData数据 let data = UIImagePNGRepresentation(image!) // 将图像保存到指定路径 try? data?.write(to: URL(fileURLWithPath: "/Users/TD/Desktop/test.png"), options: [.atomic]) }else { print("截图错误") } } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
作者:蓝田(Loto)
【作品发布平台】
① 简书
② 博客园
③ Gitbook(如果觉得文章太长,请阅读此平台发布的文章)
【代码托管平台】
Github
【如有疑问,请通过以下方式交流】
①
评论区回复
②
发送邮件至 shorfng@126.com
本文版权归作者和本网站共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,谢谢合作。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
支付宝扫一扫 向我打赏
你也可以微信 向我打赏
相关文章推荐
- 【iOS】7.4 定位服务->3.3 地图框架MapKit 功能3:3D视图
- 【iOS】7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)
- 【iOS】7.4 定位服务->2.1.3.3 定位 - 官方框架CoreLocation 功能3:区域监听
- 【iOS】7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码
- 【iOS】7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位
- 【iOS】7.4 定位服务->2.1.3.3 定位 - 官方框架CoreLocation 功能3:区域监听
- 【iOS】7.4 定位服务->2.1.2 定位 - 官方框架CoreLocation: CLLocationManager(位置管理器)
- 【iOS】7.4 定位服务->2.2 定位 - 第三方框架:locationManager
- 【iOS】7.4 定位服务->2.1.1 定位 - 官方框架CoreLocation: 请求用户授权
- 【iOS】7.4 定位服务->2.1.4 定位 - 官方框架CoreLocation 案例:指南针效果
- 【iOS】7.4 定位服务->1.0 简介
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
- 关于iOS地图定位中点击设置->隐私->定位服务 闪退问题
- IOS开发笔记之六——ios 8地图定位服务问题
- iOS地图->模拟定位
- iOS.定位服务与地图应用.07.调用谷歌Web地图
- ios开发-MapKit(地图框架)使用简介
- iOS- 用MapKit和CoreLocation 来实现移动设备(地图与定位)
- [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]