2013-07-19 29 views
1

我想要地圖獲取用戶的位置,他可以通過在地圖上貼上來更改位置。問題是當點擊位置的方法(void)mapView:(MKMapView *)mapView_ didUpdateUserLocation,調用和地圖顯示當前位置和他點擊的位置!我想只有一個位置>>>Mapkit添加新的註釋並刪除舊的

這裏是問一個問題每一頁上的代碼

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 
self.mapView.delegate = self; 
locationManager = [[CLLocationManager alloc] init]; 
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
[mapView addGestureRecognizer:singleTap]; 

} 

- (void)mapView:(MKMapView *)mapView_ didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
locationManager.delegate = self; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

[locationManager startUpdatingLocation]; 
longitudeLabel.text = [NSString stringWithFormat:@"%.8f", userLocation.coordinate.longitude]; 
latitudeLabel.text = [NSString stringWithFormat:@"%.8f", userLocation.coordinate.latitude]; 

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800); 
[mapView setRegion:[mapView regionThatFits:region] animated:YES]; 

// Add an annotation 
MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
point.coordinate = userLocation.coordinate; 
point.title = @"Where am I?"; 
point.subtitle = @"I'm here!!!"; 

[mapView addAnnotation:point]; 
} 

- (void)handleSingleTap:(UIGestureRecognizer *)sender 
{ 
CLLocationCoordinate2D coord = [mapView convertPoint:[sender locationInView:mapView] toCoordinateFromView:mapView]; 
NSLog(@"Map touched %f, %f.", coord.latitude, coord.longitude); 
longitudeLabel.text = [NSString stringWithFormat:@"%.8f", coord.longitude]; 
latitudeLabel.text = [NSString stringWithFormat:@"%.8f", coord.latitude]; 


MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coord, 800, 800); 
[mapView setRegion:[mapView regionThatFits:region] animated:YES]; 

// Add an annotation 
MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
point.coordinate = coord; 
point.title = @"Where am I?"; 
point.subtitle = @"I'm here!!!"; 
[mapView removeAnnotations:[mapView annotations]]; 
[mapView addAnnotation:point]; 

} 

回答

1

首先,。如果我回答問題2並且其他人回答問題1,哪一個會被標記爲正確答案?

其次,方法didUpdateUserLocation當iOS獲得有關設備位置的新信息時由iOS調用。您不需要在那裏添加新註釋,或者每當設備移動時最終都會有很多註釋。如果您想顯示用戶的當前位置,請致電mapView.showsUserLocation = YES;。一旦用戶點擊並創建了新的註釋,您可以通過將userLocation設置爲NO來關閉userLocation。