Есть несколько способов опустить булавку, и вы не указываете, как это сделать в своем вопросе. Первый способ - сделать это программно, для этого вы можете использовать то, что написал RedBlueThing, за исключением того, что вам не нужен специальный класс (в зависимости от того, на какую версию iOS вы нацеливаетесь). Для iOS 4.0 и более поздних версий вы можете использовать этот фрагмент кода для программного сброса пин-кода:
// Create your coordinate
CLLocationCoordinate2D myCoordinate = {2, 2};
//Create your annotation
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
// Set your annotation to point at your coordinate
point.coordinate = myCoordinate;
//If you want to clear other pins/annotations this is how to do it
for (id annotation in self.mapView.annotations) {
[self.mapView removeAnnotation:annotation];
}
//Drop pin on map
[self.mapView addAnnotation:point];
Если вы хотите иметь возможность сбрасывать булавку, например, долгим нажатием на фактическом mapView, это можно сделать так:
// Create a gesture recognizer for long presses (for example in viewDidLoad)
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 0.5; //user needs to press for half a second.
[self.mapView addGestureRecognizer:lpgr]
- (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer {
if (gestureRecognizer.state != UIGestureRecognizerStateBegan) {
return;
}
CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];
CLLocationCoordinate2D touchMapCoordinate = [self.mapView convertPoint:touchPoint toCoordinateFromView:self.mapView];
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = touchMapCoordinate;
for (id annotation in self.mapView.annotations) {
[self.mapView removeAnnotation:annotation];
}
[self.mapView addAnnotation:point];
}
Если вы хотите перечислить все аннотации, просто используйте код в обоих фрагментах. Вот как вы регистрируете позиции для всех аннотаций:
for (id annotation in self.mapView.annotations) {
NSLog(@"lon: %f, lat %f", ((MKPointAnnotation*)annotation).coordinate.longitude,((MKPointAnnotation*)annotation).coordinate.latitude);
}