Раскраски на карте - PullRequest
       13

Раскраски на карте

0 голосов
/ 16 сентября 2010

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

Мой код, приведенный ниже, считывает координаты широты / долготы из базовых данных и зацикливает их, помещая красный штифт для каждого объекта, найденного в базовых данных.1007 * MapPin.m

#import "MapPin.h"


@implementation MapPin

@synthesize coordinate;

-(id)initwithCoordinates:(CLLocationCoordinate2D)location
{
    self = [super init];
    if (self != nil) {
        coordinate = location;
    }
    return self;
}

-(void)dealloc{
[super dealloc];
}
@end

MapViewController.m

-(void)addAnnotations 
{   
    if (![sharedMapID isEqualToString:@""]){
        NSFetchRequest *request = [[NSFetchRequest alloc] init];

        NSEntityDescription *entity = [NSEntityDescription entityForName:@"WayPoint" inManagedObjectContext:managedObjectContext];
        [request setEntity:entity];

        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"waypoint_map_id contains[cd] %@", sharedMapID];
        [request setPredicate:predicate];

        NSError *error = nil;
        NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];

        // Check for errors from the FetchRequest
        if (nil == results || nil != error)
            NSLog(@"Error getting results : %@", error);

        listArray = [results mutableCopy];
        [request release];

        // Loop through the array, get the coordinates and display on the map.
        for (int i = 0; i < [listArray count]; i++)
        {       
            NSString *strXCoordinate = [[listArray objectAtIndex: i] valueForKey:@"waypoint_x"];
            NSString *strYCoordinate = [[listArray objectAtIndex: i] valueForKey:@"waypoint_y"];

            double dblXCoordinate = [strXCoordinate doubleValue];
            double dblYCoordinate = [strYCoordinate doubleValue];

            CLLocationCoordinate2D coordinate = {dblYCoordinate, dblXCoordinate};
            MapPin *pin = [[MapPin alloc]initwithCoordinates:coordinate];
            [self.mapView addAnnotation:pin];
            [pin release];
        }

        [listArray release];
    }
}

Из того, что я прочитал, и некоторых примеров, которые я нашел, когда googling, вызывается следующий код для каждого вывода на карте,На моей карте нет никаких зеленых булавок.Может быть, я должен передать координаты этому методу и позволить ему разместить булавку на карте вместо кода выше.

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
    {   
        MKPinAnnotationView *annView = nil;
        annView.pinColor = MKPinAnnotationColorGreen;
        annView.animatesDrop = TRUE;
        annView.canShowCallout = YES;
        annView.calloutOffset = CGPointMake(-5, 5);
        return annView; 
}

Любая помощь или толчок в правильном направлении (извините за каламбур) очень важныоценил.

С уважением, Стивен

1 Ответ

0 голосов
/ 16 сентября 2010
MKPinAnnotationView *annView = nil;
...

Вы не создаете представление аннотации здесь, просто работаете с nil-объектом (который работает нормально, но ничего не делает) и возвращаете nil - так, естественно, pin не отображается (так как он не существует).

Правильный метод будет выглядеть так:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{   
    MKPinAnnotationView *annView = (MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"SomeID"];
    if (!annView){
        annView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"SomeID"] autorelease];
        annView.pinColor = MKPinAnnotationColorGreen;
        annView.animatesDrop = TRUE;
        annView.canShowCallout = YES;
        annView.calloutOffset = CGPointMake(-5, 5);
    }
    annView.annotation = annotation;
    return annView; 
}

Здесь вы пытаетесь повторно использовать вид аннотации, если это возможно (аналогично тому, как вы делаете с ячейками в виде таблицы), создаете и настраиваете новый, если нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...