因此,我将用户位置保存在NSUserDefault中的按钮按钮上。但是当我称它为空时。用NSUserDefaults存储和调用用户坐标
的目标是让用户的位置(已完成),然后将其保存,所以当在地图重新加载针显示备份在用户曾经是。现在它清除并重置地图。
保存按钮推:
MKCoordinateRegion location1;
location1.center.latitude =locationManager.location.coordinate.latitude;
location1.center.longitude= locationManager.location.coordinate.longitude;
location1.span.longitudeDelta=0.1;
location1.span.latitudeDelta =0.1;
MapAnnotation *ann1 =[[MapAnnotation alloc] init];
[email protected]"You Parked Here";
[email protected]"";
ann1.coordinate= location1.center;
[mapView addAnnotation:ann1];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setDouble:location1.center.latitude forKey:@"savedCoordinate-latitude"];
[ud setDouble:location1.center.longitude forKey:@"savedCoordinate-longitude"];
[ud setBool:YES forKey:@"savedCoordinate-exists"];
[ud synchronize];
在viewWillAppear中回顾:
-(void)viewWillAppear:(BOOL)animated{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
if ([ud boolForKey:@"savedCoordinate-exists"])
{
CLLocationCoordinate2D savedCoordinate;
savedCoordinate.latitude = [ud doubleForKey:@"savedCoordinate-latitude"];
savedCoordinate.longitude = [ud doubleForKey:@"savedCoordinate-longitude"];
//create annotation object using savedCoordinate and add to map view...
NSLog(@"%@",savedCoordinate.latitude);
MKCoordinateRegion location1;
//location1.center.latitude =savedCoordinate.latitude;
//location1.center.longitude= savedCoordinate.longitude;
location1.span.longitudeDelta=0.1;
location1.span.latitudeDelta =0.1;
MapAnnotation *ann1 =[[MapAnnotation alloc] init];
[email protected]"You Parked Here";
[email protected]"";
ann1.coordinate= savedCoordinate;
[mapView addAnnotation:ann1];
}
}
完全的.m页:
#import "LocationTestViewController.h"
#import "CoreLocation/CoreLocation.h"
#import "MapAnnotation.h"
@implementation LocationTestViewController
@synthesize locationManager;
@synthesize mapView;
@synthesize labelText;
- (void)dealloc
{
[mapView release];
[locationManager release];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
}*/
-(void)viewWillAppear:(BOOL)animated{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
if ([ud boolForKey:@"savedCoordinate-exists"])
{
CLLocationCoordinate2D savedCoordinate;
savedCoordinate.latitude = [ud doubleForKey:@"savedCoordinate-latitude"];
savedCoordinate.longitude = [ud doubleForKey:@"savedCoordinate-longitude"];
//create annotation object using savedCoordinate and add to map view...
NSLog(@"%f",savedCoordinate.latitude);
MKCoordinateRegion location1;
//location1.center.latitude =savedCoordinate.latitude;
//location1.center.longitude= savedCoordinate.longitude;
location1.span.longitudeDelta=0.1;
location1.span.latitudeDelta =0.1;
MapAnnotation *ann1 =[[MapAnnotation alloc] init];
[email protected]"You Parked Here";
[email protected]"";
ann1.coordinate= savedCoordinate;
[mapView addAnnotation:ann1];
}
}
- (void)viewDidUnload
{
[self setMapView:nil];
[self setLocationManager:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (IBAction)getLocation:(id)sender {
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter=kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
[mapView setMapType:MKMapTypeStandard];
[mapView setZoomEnabled:YES];
[mapView setScrollEnabled:YES];
MKCoordinateRegion region = {{0.0,0.0},{0.0,0.0}};
region.center.latitude = locationManager.location.coordinate.latitude;
region.center.longitude = locationManager.location.coordinate.longitude;
region.span.longitudeDelta = 0.005f;
region.span.latitudeDelta = 0.005f;
[mapView setRegion:region animated:YES];
[mapView setDelegate:sender];
MKCoordinateRegion location1;
location1.center.latitude =locationManager.location.coordinate.latitude;
location1.center.longitude= locationManager.location.coordinate.longitude;
location1.span.longitudeDelta=0.1;
location1.span.latitudeDelta =0.1;
labelText.text = [NSString stringWithFormat:@"LATITUDE: %f", location1.center.latitude];
NSLog(@"button b4 save: %@", [NSString stringWithFormat:@"LATITUDE: %f", locationManager.location.coordinate.latitude]);
MapAnnotation *ann1 =[[MapAnnotation alloc] init];
[email protected]"You Parked Here";
[email protected]"";
ann1.coordinate= location1.center;
[mapView addAnnotation:ann1];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setDouble:location1.center.latitude forKey:@"savedCoordinate-latitude"];
[ud setDouble:location1.center.longitude forKey:@"savedCoordinate-longitude"];
[ud setBool:YES forKey:@"savedCoordinate-exists"];
[ud synchronize];
CLLocationCoordinate2D savedCoordinate;
savedCoordinate.latitude = [ud doubleForKey:@"savedCoordinate-latitude"];
savedCoordinate.longitude = [ud doubleForKey:@"savedCoordinate-longitude"];
//create annotation object using savedCoordinate and add to map view...
NSLog(@"button push, %f",savedCoordinate.latitude);
}
- (IBAction)clearPins:(id)sender{
NSArray *annotations = [mapView annotations];
for (id annotation in annotations)
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
continue;
}
[mapView removeAnnotation:annotation];
}
}
-(IBAction)goMainMenu{
[self.parentViewController dismissModalViewControllerAnimated:YES];
}
@end
编辑解决方案:
我加入这我的按钮方法d:
CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;
NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude);
NSUserDefaults *gLat = [NSUserDefaults standardUserDefaults];
[gLat setFloat:userCoordinate.latitude forKey:@"latNumber"];
NSUserDefaults *gLong = [NSUserDefaults standardUserDefaults];
[gLong setFloat:userCoordinate.longitude forKey:@"longNumber"];
float myLat=[gLat floatForKey:@"latNumber"];
NSLog(@"Button Push: lat : %f",myLat);
float myLong=[gLong floatForKey:@"longNumber"];
NSLog(@"Button Push: long : %f",myLong);
可能不是最干净的东西,但它可以完成工作。
NSLog(@“%@”,savedCoordinate.latitude); 似乎nslog将工作不正确 – NeverBe 2012-02-13 22:21:39
你记录了你正在保存的值?他们是否正确?什么从userDefaults返回 - 是正确的?什么是MapAnnotation? – Rayfleck 2012-02-13 22:31:31
嗯,我似乎变得空或0;我怎么把我的绳子拉出来?我会发布更多的代码。 – Rick 2012-02-14 13:58:29