如何在Swift中使用MKSnapshotter(iOS)
问题描述:
我正在尝试从MapKit实现MKSnapshotter。我想使用苹果地图创建我在mapview(streetview)中找到的位置的快照。如何在Swift中使用MKSnapshotter(iOS)
这里是我的代码至今:
var options: MKMapSnapshotOptions = MKMapSnapshotOptions();
options.region = self.attractionDetailMap.region;
options.size = self.attractionDetailMap.frame.size;
options.scale = UIScreen.mainScreen().scale;
var fileURL:NSURL = NSURL(fileURLWithPath: "path/to/snapshot.png")!;
var snapshotter:MKMapSnapshotter = MKMapSnapshotter();
snapshotter.startWithCompletionHandler { (snapshot:MKMapSnapshot!, error:NSError!) -> Void in
if(error != nil) {
println("error: " + error.localizedDescription);
return;
}
var image:UIImage = snapshot.image;
var data:NSData = UIImagePNGRepresentation(image);
data.writeToURL(fileURL, atomically: true);
var pin:MKAnnotationView = MKAnnotationView();
UIGraphicsBeginImageContextWithOptions(image.size, true, image.scale);
image.drawAtPoint(CGPointMake(0.0, 0.0));
var rect:CGRect = CGRectMake(0.0, 0.0, image.size.width, image.size.height);
for annotation in self.attractionDetailMap.annotations {
var point:CGPoint = snapshot.pointForCoordinate(annotation.coordinate);
}
}
当我尝试做一个点(VAR点:CGPoint = snapshot.pointForCoordinate(annotation.coordinate);),错误: '坐标'不可用:出现Swift中不支持从iOS7及更早版本弃用的API。
基本上,因为关于如何在swift中使用MKSnapshotter没有太多的教程/指导原则,如果能够在swift中看到MKSNapshotter的标准结构,我们将不胜感激。我觉得我走在正确的道路上,但是我坚持了最后一行代码,坦白地说,它甚至不能工作。
谢谢!
答
您需要将注释转换为正确的类型。
for annotation in self.attractionDetailMap.annotations as! [MKAnnotation] {
let point = snapshot.pointForCoordinate(annotation.coordinate)
}
感谢您指出。那么你如何设置街景的图像并将其显示在我的VC上? – kebabTiger
那么,一旦你有一个图像,你创建一个具有图像视图的视图的控制器,并将你的图像传递到那里并显示在UIImageView中。 –