2014-11-12 1 views
0

Как я могу сделать снимок карты определенных координат? Сейчас требуется моментальный снимок всей карты, но я хочу только сделать снимок NewYork (40.7127 ° с. Ш., 74.0059 °). Я попытался изменить region.center в нью-йоркских координатах, но я продолжаю получать Сан-Франциско.взять MKMapSnapShot определенных координат

MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init]; 
options.region = self.mapView.region; 
options.scale = [UIScreen mainScreen].scale; 
options.size = self.mapView.frame.size; 

MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options]; 
[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) { 
UIImage *image = snapshot.image; 
NSData *data = UIImagePNGRepresentation(image); 
[data writeToFile:[self snapshotFilename] atomically:YES]; 
}]; 

ответ

0

Я делал это раньше. Вот способ сделать мгновенный снимок. Требуемый метод CLLocationCoordinate2D параметр, который в вашем случае определяет координаты.

CLLocationCoordinate2D centerPoint = CLLocationCoordinate2DMake(40.730872, -74.003066); 

Передайте эти координаты в нижнем методе, это займет привязку указанного места. Вы можете удалить анимацию из этого метода, если хотите. Это не имеет ничего общего с функциональностью, но полезно показать анимированную карту в определенном месте. Посмотрите на это и поделитесь своими мыслями.

- (void) takeSnapShot:(CLLocationCoordinate2D)centerPoint { 

    __block MKCoordinateRegion newRegion = self.mapView.region; 

    // Animation is use to animate map to location specified in parameter. If not required remove it. 
    [UIView animateWithDuration:1.5 animations:^{ 

     MKCoordinateRegion region; 
     region.center.latitude = centerPoint.latitude; 
     region.center.longitude = centerPoint.longitude; 
     region.span.latitudeDelta = 0.15f; 
     region.span.longitudeDelta = 0.15f; 
     newRegion = region; 

     [self.mapView setRegion:region animated:YES]; 

    } completion:^(BOOL finished) { 

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"Snap.png"]; 

     MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init]; 
     options.region = newRegion; 
     options.scale = [UIScreen mainScreen].scale; 
     options.size = self.mapView.frame.size; 

     MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options]; 
     [snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) { 
      UIImage *image = snapshot.image; 
      NSData *data = UIImagePNGRepresentation(image); 
      [data writeToFile:fileName atomically:YES]; 
     }]; 

    }]; 
}