Reemplazar MKMapView con image estática

¿Es posible mostrar una image estática en lugar de la MapView pnetworkingeterminada, donde la location actual es siempre el centro de la image?

Quiero mostrar una image donde el centro es la position actual y agregar pines en él dependiendo de las coorderadas (distancia y dirección). Quiero calcular la distancia entre también y tal vez rotar la image / pins dependiendo de en qué dirección apunta el teléfono.

Pensé que podría ser más fácil hacerlo con un MKMapView y replacelo con una image estática, ya que puedo usar toda la funcionalidad de compilation, pero ahora parece imposible cambiar el map a una image estática.

También podría pintar directamente en una image, pero ¿cómo funcionaría eso y debería hacerlo? Supongo que sería algo con coorderadas polares.

Puede usar la API de map estática de Google si lo desea. Eso es bastante sencillo. Aquí hay una image estática de algún lugar en Copenhague, DK:

 NSData *data = [NSData dataWithContentsOfURL:@"http://maps.googleapis.com/maps/api/staticmap?center=55.675861+12.584574&zoom=15&size=400x400&sensor=false"]; UIImage *img = [UIImage imageWithData:data]; 

A continuación, puede agregar marcadores como desee, eche un vistazo aquí sobre cómo agregarlos. Aquí hay una URL de testing para agregar un marcador rojo con el text "M" en el medio:

http://maps.googleapis.com/maps/api/staticmap?center=55.675861+12.584574&zoom=15&size=400×400&sensor=false&markers=color:networking%7Clabel:M%7C55.675861+12.584574

Descifrar la parte del marcador de la URL:

marcadores = color: rojo% 7Clamita: M% 7C55.675861 + 12.584574

Obtienes esto:

marcadores = color: rojo | label: M | 55.675861 12.584574

Editar:

Aquí hay un enfoque que raspa una image del control del map. Si extraemos la parte importante de la respuesta, esto es básicamente cómo podría hacerlo:

 UIGraphicsBeginImageContextWithOptions(map.bounds.size, map.opaque, 0.0); [map.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

Tenga en count que se requiere un map para derivar de UIView , lo que significa que puede usar este truco en una variedad de controles.

Editar 2:

También deberías echar un vistazo a este artículo . Muy bien escrito y cubre muchos temas relacionados con esto con superposiciones, pines, etc.

Con iOS7, tiene MKMapSnapshotter que puede representar una instantánea de una región de map en un subprocess de background. A continuación, puede tomar una image de esa instantánea.

 MKMapSnapshotOptions* options = [MKMapSnapshotOptions new]; //Setup options here: options.camera = ... options.region = ... MKMapSnapshotter* snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options]; [snapshotter startWithQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) completionHandler:^(MKMapSnapshot* snapshot, NSError* error) { // get the image associated with the snapshot UIImage *image = snapshot.image; dispatch_async(dispatch_get_main_queue(), ^ { //Make sure to access UIKit UI elements on the main thread! [self.imageView setImage: image]; }); } 

He escrito una práctica categoría en UIImageView que permite la creación de una vista previa del map fácil basada en MKMapView ; se supone que funciona exactamente de la misma manera que AFNetworking para las AFNetworking de imágenes asincrónicas. Espero que lo encuentres útil. BGMapPreview