如何在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) 
} 
+0

感谢您指出。那么你如何设置街景的图像并将其显示在我的VC上? – kebabTiger

+0

那么,一旦你有一个图像,你创建一个具有图像视图的视图的控制器,并将你的图像传递到那里并显示在UIImageView中。 –