繁体   English   中英

更新位置iPhone App

[英]Updating location iPhone App

我正在尝试让该应用程序在用户移动时更新用户的位置,并根据其位置更新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

两件事出了问题:

1)要求最高精度: kCLLocationAccuracyBest而不是kCLLocationAccuracyHundredMeters 不要设置distanceFilter或将其设置为零。

2)在didUpdateToLocation ,添加一行

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

并查看日志文件输出。 您的if语句使下面的代码块仅运行一次。 我希望else块能够在home1Annotation已经存在的情况下更新POI位置。 就像是:

} else {
     [MyMapAnnotation setCoordinate:homeCoordinate];
}

(但是我不知道您的课程MyMapAnnotation所以这是猜测)

应该没有任何问题,所有问题都可以解决,但是在您的情况下,当用户从最近检测到的距离为1千米(如此代码所指定)的locationManager.distanceFilter = 1000;拐弯时,将调用下一次关于更改用户位置的调用,该locationManager.distanceFilter = 1000;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM