Я делал это раньше. Вот способ сделать мгновенный снимок. Требуемый метод 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];
}];
}];
}