Застрял в ObjC и MapKit CoreLocation - PullRequest
       2

Застрял в ObjC и MapKit CoreLocation

0 голосов
/ 22 августа 2011

Я вхожу в mapkit и corelocation для ios.Я просто пытаюсь отобразить карту и увеличить мое текущее местоположение на данный момент.Я могу нарисовать карту с моим местоположением.Я могу получить мое текущее местоположение.Я просто не могу получить данные о местоположении в метод карты.Я немного новичок, но думал, что я знал, что я делал до этого момента!:) Любая помощь приветствуется.Мой код здесь, который вроде работает, но затягивает меня в середине Атлантики на 0 длинных и 0 лат!

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

locationManager = [[CLLocationManager alloc] init];
[locationManager setPurpose:@"What use is a nav app if it doesn't know where you are?!?"];
[locationManager setDelegate:self ];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
[locationManager setDistanceFilter:10];
[locationManager startUpdatingLocation];

mapView=[[MKMapView alloc] initWithFrame:self.view.bounds];
[self.view insertSubview:mapView atIndex:0];
mapView.showsUserLocation = TRUE;
mapView.mapType = MKMapTypeStandard;


MKCoordinateSpan span;
span.latitudeDelta=0.2;
span.longitudeDelta=0.2;

CLLocationCoordinate2D location = mapView.userLocation.coordinate;

MKCoordinateRegion region;
region.span=span;
region.center=location;

[mapView setRegion:region animated:TRUE];
[mapView    regionThatFits:region];
[self.view insertSubview:mapView atIndex:0];

}

-(void)locationManager:(CLLocationManager *)manager 
didUpdateToLocation:(CLLocation *)newLocation
      fromLocation:(CLLocation *)oldLocation
{
CLLocationCoordinate2D here = newLocation.coordinate;
NSLog(@"%f  %f", here.latitude, here.longitude);

[locationManager stopUpdatingLocation];

}

1 Ответ

1 голос
/ 22 августа 2011

Вид карты userLocation обычно не будет доступен сразу после установки showsUserLocation на ДА.

Реализация методов делегата представления карты didUpdateUserLocation и didFailToLocateUserWithError. Вам нужно установить свойство delegate вида карты, иначе они не будут вызваны. Измените регион или центр карты в методе didUpdateUserLocation, а не в viewDidLoad.

Или задайте регион в didUpdateToLocation CLLocationManager, который вы реализовали. Это называется? Также реализуйте его метод didFailWithError и посмотрите, будет ли он вызван.

Для получения текущего местоположения, если вы используете MKMapView, вам нужно использовать либо showUserLocation, либо CLLocationManager, но не оба одновременно. Но чтобы получить синий мрамор, вам нужно использовать showUserLocation.

Кроме того, почему вы дважды выполняете insertSubview в mapView?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...