ситуация следующая, я запускаю xCode 4.1 на MacOS 10.7, запускаю симулятор iPhone и использую MapKit, пытаюсь получить REAL координаты пользователя ... местоположение пользователя по умолчанию в Купертино, США ...чтобы получить кординаты этой точки, я использую:
self.mapView.userLocation.location.coordinate
... но это приводит меня к центру карты (в Африке) ...
Вопрос № 1: Почему ???Почему для пользователя установлен код Купертино, но его координаты (широта: 0, долгота: 0) в Африке?
... затем ...
Я настроил свой контроллер как CCLocationManagerDelegate иMKMapViewdelegate и инициализированный контроллер как делегат для событий CCLocationManagerDelegate ... но не был вызван ни один из этих методов делегата ...
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
Вопрос № 2: Почему методы делегирования не запускаются даже один раз?
Мой контроллер:
//@interface MapController : UIViewController<CLLocationManagerDelegate, MKMapViewDelegate>
//@property (nonatomic, retain) MapModel *mapModel;
//@property (nonatomic, retain) IBOutlet MKMapView *mapView;
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{ ... }
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{ ... }
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{ ... }
- (void)viewDidLoad
{
[super viewDidLoad];
self.mapModel = [[[MapModel alloc] init:self] autorelease];
[self.mapView setShowsUserLocation:YES];
[self.mapView setZoomEnabled:YES];
[self.mapView setScrollEnabled:YES];
[self.mapView setMapType:MKMapTypeStandard];
CLLocationCoordinate2D x =
self.mapView.userLocation.location.coordinate; // (0,0) why???
//[self.mapView setRegion:xx animated:YES];
//[self.mapView regionThatFits:self.mapModel.region];
[[self.mapView userLocation] setCoordinate:[x coordinate]];
}
...
И модель:
//@property (nonatomic, copy) NSString *user;
//@property (nonatomic, copy) NSString *caption;
//@property (nonatomic, copy) NSString *description;
//@property (nonatomic, assign) MKCoordinateRegion region;
//@property (nonatomic, retain) CLLocationManager *manager;
- (id)init :(id)delegate
{
self.manager = [[[CLLocationManager alloc] init] autorelease];
self.manager.delegate = delegate;
self.manager.distanceFilter = kCLDistanceFilterNone;
self.manager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[self.manager startUpdatingLocation];
MKCoordinateRegion region = {{0, 0}, {0.2, 0.2}};
self.region = region;
return self;
}
Спасибо, Art