我有两个问题。 (首先)我试图让它在iPhone移动到位的任何地方,弹出警报框并显示它们的经度以及它们现在的纬度。这是为了测试我正在进行的更大项目的一部分。问题是,根本没有警报框弹出。我认为当位置管理员获得一个新位置时,它会激活代表,该代表应该在警告框中显示该位置,但是根本没有任何事情发生。
以下是我如何设置位置管理器:
- (void)viewDidLoad
{
locationManager =[[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startUpdatingLocation];
}
这是代表:
-(void) locationmanager: (CLLocationManager *) manager
didUpdateToLocation: (CLLocation *) newLocation
fromLocation: (CLLocation *) oldLocation
{
float oldlat;
float oldlng;
float lat;
float lng;
NSDate *oldtime;
NSDate *newtime;
lat = newLocation.coordinate.latitude;
lng = newLocation.coordinate.longitude;
newtime = newLocation.timestamp;
oldlat = oldLocation.coordinate.latitude;
oldlng = oldLocation.coordinate.longitude;
oldtime = oldLocation.timestamp;
NSNumber *oldlong = [NSNumber numberWithFloat:oldlng];
NSNumber *newlat = [NSNumber numberWithFloat:lat];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:oldlong
message:newlat
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Submit",nil];
[alert show];
(其次)一旦我对我能够跟踪新旧latlng感到满意,有人知道存储数据的最佳方式吗?我已经研究过sqlite,核心数据,只是使用数组,但我仍然怀疑最好的存储lat,lng,时间戳和用户名的方法,每天可能产生几百次,大约200次用户,然后将其发送到服务器。
我知道这是一个很长的问题,但任何见解都会非常感激!
答案 0 :(得分:0)
确定。我真的很惊讶为什么你的应用程序没有在这一行崩溃:
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:oldlong
message:newlat
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Submit",nil];
如果尝试正确理解UIAlertView
参数,您会看到initWithTitle
和message
参数的类型为NSString
,您传递的内容为NSNumber
二
NSString
表示纬度和经度,并将它们作为参数传递给它。
NSString *long1=[[NSString alloc]initWithFormat:@"%f",oldlong];
NSString *lat1=[[NSString alloc]initWithFormat:@"%f",newlat];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:long1
message:lat1
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Submit",nil];
但在didUpdateToLocation
中显示警告并不是一个好主意,因为它会不断被调用,因此每隔一秒就会弹出警报以锁定您的互动。虽然这段代码对我有用。看看截图。