[英]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.