¿Cómo tomo un par de flotadores, latitud y longitud da la MKMapView a caer un alfiler y visualizar la ubicación?

votos
0

Dado un par de flotadores para latitud y longitud, y una MapView, ¿cómo consigo el MapView Para colocar un marcador en el lugar y zoom de la pantalla para mostrar la ubicación?

He leído a través de algunos de los mensajes de SO y todos parecen ser sobre aspectos específicos de esta, pero no he sido capaz de ponerlos juntos en mi cabeza.

¡Muchas gracias! -Franco

Publicado el 08/05/2010 a las 22:04
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

La aplicación de ejemplo WorldCities muestra cómo se puede hacer zoom en una ubicación dada, pero no cae un alfiler allí. Otra aplicación de ejemplo llamada MapCallouts hace pasadores de caída pero no zoom.

La parte de zoom es fácil (véase el método didChooseWorldCity en WorldCities).

Para colocar un marcador, usted tiene que enviar el mensaje a la addAnnotation MapView y enviarlo a un objeto que implementa el protocolo MKAnnotation. Así que primero es necesario crear una clase que implementa MKAnnotation. He aquí un ejemplo llamado MyMapPin:

//MyMapPin.h...
#import <MapKit/MapKit.h>
@interface MyMapPin : NSObject <MKAnnotation> {
    CLLocationCoordinate2D coordinate;
    NSString *subtitle; 
    NSString *title; 
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic,retain) NSString *subtitle;
@property (nonatomic,retain) NSString *title;
- (id) initWithCoords:(CLLocationCoordinate2D) coords;
@end

//MyMapPin.m...
#import "MapPin.h"
@implementation MyMapPin
@synthesize coordinate;
@synthesize subtitle;
@synthesize title;
- (id) initWithCoords:(CLLocationCoordinate2D) coords {
    self = [super init];
    if (self != nil) {
        coordinate = coords; 
    }
    return self;
}
- (void) dealloc
{
    [title release];
    [subtitle release];
    [super dealloc];
}
@end

Ahora se podría modificar la muestra WorldCities añadiendo este código al principio del método animateToPlace:

MyMapPin *pin = [[MyMapPin alloc] initWithCoords:worldCity.coordinate];
[mapView addAnnotation:pin];
[pin release];

worldCity.coordinate en la aplicación WorldCities es sólo una propiedad de tipo CLLocationCoordinate2D que tiene dos campos de latitud y longitud. Los dos flotadores irían allí.

Tenga en cuenta la addAnnotation simplemente pondrá un alfiler en la ciudad. Para obtener un pin de la caída de animación, también hay que poner en práctica el método viewForAnnotation y establecer animatesDrop a SÍ. Ver un ejemplo en MapViewController.m en MapCallouts. Ajuste también el delegado del MapView a donde se implementa el método viewForAnnotation (generalmente auto / del propietario del archivo).

Respondida el 09/05/2010 a las 03:54
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more