Быстрое добавление одного вывода в MKMapView?

У меня есть координата GPS (широта, долгота), и я быстро хочу разместить один вывод на MKMapView, показывая это положение. Все работает отлично, но поскольку мне нужен только один вывод без выноски, есть ли более быстрый способ сделать это или что у меня ниже того, что нужно сделать?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation {
    MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"DETAILPIN_ID"];
    [pinView setAnimatesDrop:YES];
    [pinView setCanShowCallout:NO];
    return pinView;
}

Примечание. Мне не нужно проверять просмотры аннотаций многократного использования, поскольку я использую только вывод, чтобы показать позицию в подробном представлении (которое разрушается и воссоздается при следующем запросе подробного представления).

Ответ 1

Вместо использования метода -mapView:viewForAnnotation: просто поместите код для MKPointAnnotation в свой метод -viewDidLoad. Это не будет анимировать падение, но это очень легко.

// Place a single pin
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:centerCoordinate];
[annotation setTitle:@"Title"]; //You can set the subtitle too
[self.mapView addAnnotation:annotation];

Быстрая версия:

let annotation = MKPointAnnotation()
let centerCoordinate = CLLocationCoordinate2D(latitude: 41, longitude:29)
annotation.coordinate = centerCoordinate
annotation.title = "Title"
mapView.addAnnotation(annotation)

Ответ 2

Вы можете установить точку, а также область следующим образом:

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(lat, lon);

MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
MKCoordinateRegion region = {coord, span};

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:coord];

[self.staticMapView setRegion:region];
[self.staticMapView addAnnotation:annotation];

Ответ 3

Самый простой и простой способ сбросить вывод и отобразить текущее местоположение в представлении карты - просто добавить этот код в свой метод viewDidLoad. (Предполагая, что текущее местоположение пользователя уже выбрано вами).

NSString *display_coordinates=[NSString stringWithFormat:@"Latitude is %f and Longitude is %f",coordinate.longitude,coordinate.latitude];

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:coordinate];
[annotation setTitle:@"Click Labs"];            
[annotation setSubtitle:display_coordinates];
[mapView addAnnotation:annotation];

Ответ 4

Поскольку вы хотите анимировать падение, вам нужно реализовать viewForAnnotation, как вы это сделали, потому что по умолчанию это свойство NO.

Если вам не нужно анимировать падение, вы можете полностью исключить реализацию метода viewForAnnotation и отключить выноску, установите аннотацию title на nil или blank при добавлении аннотации вместо этого.

Если вам нужна анимация опускания булавки, и вы также показываете местоположение пользователя (синяя точка), вам также нужно проверить MKUserLocation в viewForAnnotation и вернуть nil.

В противном случае вы можете удалить весь метод viewForAnnotation, а красный значок по умолчанию появится без анимации, выноска покажет, будет ли title не пустым, а местоположение пользователя будет отображаться как синяя точка.

Ответ 5

Быстрая версия буфера добавления в MKMapView:

func addPin() {
    let annotation = MKPointAnnotation()
    let centerCoordinate = CLLocationCoordinate2D(latitude: 20.836864, longitude:-156.874269)
    annotation.coordinate = centerCoordinate
    annotation.title = "Lanai, Hawaii"
    mapView.addAnnotation(annotation)
}

Быстрая версия фокусировки области или штифта

func focusMapView() {
    let mapCenter = CLLocationCoordinate2DMake(20.836864, -156.874269)
    let span = MKCoordinateSpanMake(0.1, 0.1)
    let region = MKCoordinateRegionMake(mapCenter, span)
    mapView.region = region
}

Чтобы узнать подробнее, посетите " Загрузить MKMapView с помощью Swift".