Добавить пользовательскую аннотацию

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

Зеленая аннотационная булавка для текущего местоположения пользователя

Я хочу добавить зеленую аннотационную булавку в начальную или конечную точку полилинии.

Вот мой код

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if (annotation==mapView.userLocation) {

        MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"currAnno"];

        if (annotationView == nil) {
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currAnno"];
        }

        annotationView.canShowCallout=YES;
        annotationView.image = [UIImage imageNamed:@"mapPin.png"];

        return annotationView;


    }else{

        static NSString *viewId = @"MKAnnotationView";
        MKAnnotationView *annotationView = (MKAnnotationView*)
        [mapView dequeueReusableAnnotationViewWithIdentifier:viewId];

        if (annotationView == nil) {
            annotationView = [[MKAnnotationView alloc]
                              initWithAnnotation:annotation reuseIdentifier:viewId];
        }

        annotationView.canShowCallout=YES;
        annotationView.image = [UIImage imageNamed:@"mapPin.png"];//set your image here
        return annotationView;
    }

}

person Muhammad Salman    schedule 27.08.2016    source источник


Ответы (1)


Вам нужно создать две аннотации: одну аннотацию с координатой начала полилинии и одну аннотацию с координатой конца полилинии. Добавьте обе аннотации на карту.

Виды аннотации центрируются по координате соответствующей аннотации. Если вы хотите, чтобы нижняя часть зеленой булавки на изображении отображалась в координате аннотации (а не в центре изображения булавки), вам нужно использовать свойство centerOffset объекта MKAnnotationView для перемещения изображения вверх:

annotationView.canShowCallout=YES;
annotationView.image = [UIImage imageNamed:@"mapPin.png"];
// Move the pin image up 20 points to place the bottom of the pin
// at the annotation coordinate (adjust the value -20 to suit)
annotationView.centerOffset = CGPointMake(0, -20);

В этом примере изображение просмотра аннотации перемещается вверх на 20 точек (отрицательное значение y перемещает изображение вверх). Тем не менее, вы должны использовать подходящее отрицательное значение для вашего изображения вместо -20, например, минус половина высоты изображения или что-то, что кажется вам правильным.

person Jeffrey Morgan    schedule 28.08.2016