2015-07-11 17 views
5

Tôi đang cố chụp nhanh chế độ xem phố của một vị trí được gắn trong ứng dụng của tôi bằng MKSnapshotter. Tôi hiện đang có mã này:Cách hiển thị MKSnapshot trong Swift (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; 
     } 
     let 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 as! [MKAnnotation]{ 
      var point:CGPoint = snapshot.pointForCoordinate(annotation.coordinate); 
      if(CGRectContainsPoint(rect, point)) { 
       point.x = point.x + pin.centerOffset.x - (pin.bounds.size.width/2.0); 
       point.y = point.y + pin.centerOffset.y - (pin.bounds.size.height/2.0); 
       pin.image.drawAtPoint(point); 
      } 
     } 

     var compositeImage:UIImage = UIGraphicsGetImageFromCurrentImageContext(); 
     var data2:NSData = UIImagePNGRepresentation(compositeImage); 
     data.writeToURL(fileURL, atomically: true); 
     UIGraphicsEndImageContext(); 

Bây giờ tôi có hình ảnh, tôi không biết cách hiển thị ảnh chụp nhanh cho bản đồ của mình.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

Trả lời

0

Vì vậy, lớp MKMapSnapshotter không được sử dụng để hiển thị bên trong bản đồ. Nó chỉ trả về hình ảnh của bản đồ không tương thích với bản đồ. Tôi đã sử dụng nó khi tôi cần thêm hiệu suất như hiển thị một bản đồ với pin trong một ô xem bảng hoặc collectionview. Nó thực hiện cách tốt hơn so với hiển thị một bản đồ thực tế bên trong của một tableview.

Vì vậy, khi bạn có ảnh chụp nhanh, tất cả những gì bạn làm là tải nó trong UIImageView. Nó trông giống như mapview sẽ.

Các vấn đề liên quan