Обновление местоположения iPhone App - PullRequest
0 голосов
/ 08 сентября 2011

Я пытаюсь заставить приложение обновлять местоположение пользователя по мере его перемещения и обновлять POI в зависимости от его местоположения.Сейчас это не работает (местоположение пользователя остается прежним, даже если он много перемещается).Кто-нибудь может мне помочь?

- (void)viewDidLoad {

    [super viewDidLoad];
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    locationManager.distanceFilter = 1000;
    [mapView removeAnnotations: mapView.annotations];
[locationManager startUpdatingLocation];


}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    homeCoordinate = newLocation.coordinate;
    if (!home1Annotation) {
        home1Annotation = [[MyMapAnnotation alloc] initWithCoordinate:homeCoordinate
                                                               title:@"Current Location"
                          ];
        [mapView addAnnotation:home1Annotation];
        [self adjustMapZoom];
        [self loadAndSortPOIs];
        for (int j =0 ; j <5 ; j++){
            [self displayPOIs];
        }
    }
}

Моя карта Аннотация

#import "MyMapAnnotation.h"


@implementation MyMapAnnotation
@synthesize coordinate;
#pragma mark initializers

// designated initializer
-(id) initWithCoordinate:(CLLocationCoordinate2D)coordinateQ title:(NSString*) titleQ {
    if ( self = [super init]) {
        coordinate = coordinateQ;
        title = titleQ;

        [title retain];
    }
    return self;
}

-(void) dealloc {
    [title release];
    [super dealloc];
}

#pragma mark MKAnnotation implementation

-(NSString*) title { return title; }

-(NSString*) subtitle { return nil; }



@end

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

Не должно быть никаких проблем, все будет работать, но в вашем случае будет вызван следующий вызов об изменении местоположения пользователя, когда пользователь сможет отследить свое место после недавнего обнаружения на расстоянии 1 километра, как вы указали этим кодом locationManager.distanceFilter = 1000;

0 голосов
/ 08 сентября 2011

Две вещи идут не так, как надо:

1) запросить наивысшую точность: kCLLocationAccuracyBest вместо kCLLocationAccuracyHundredMeters. Не устанавливайте distanceFilter и не устанавливайте его на ноль.

2) в didUpdateToLocation, добавьте строку

NSLog(@"Location update: %@",newLocation);

и смотреть вывод файла журнала. Ваше заявление if означает, что приведенный ниже блок кода запускается только один раз. Я ожидал бы блок else, который обновит местоположение POI в случае, если home1Annotation уже существует. Что-то вроде:

} else {
     [MyMapAnnotation setCoordinate:homeCoordinate];
}

(но я не знаю вашего класса MyMapAnnotation, так что это догадка)

...