Моя карта должна отображать КРАСНЫЕ штыри для «Места проведения» и СИНИЕ штыри для «Стоянки» рядом с ними и вокруг них.
Проблема в том, что оба контакта отображаются одинакового цвета.
Код ниже:
Мой класс pinAnnotation выглядит так:
#import <MapKit/MapKit.h>
@interface mapPinAnnotation : NSObject <MKAnnotation> {
NSString *title;
NSString *subtitle;
NSString *pinType; // this string will be set to either "Venue" or "Parking"
CLLocationCoordinate2D coordinate;
}
@property (nonatomic, retain) NSString *title, *subtitle;
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic, retain) NSString *pinType;
@end
Это реализация:
#import "mapPinAnnotation.h"
@implementation mapPinAnnotation
@synthesize coordinate;
@synthesize pinType;
@synthesize title, subtitle;
-(id) initWithCoordinate: (CLLocationCoordinate2D) c {
coordinate = c;
return self;
}
@end
Вот метод установки выводов - обратите внимание, что я использую переменную «tempPin» - объявленную глобально - так что я могу затем передать этот вывод в метод «viewForAnnotation» - но я думаю, что здесь проблема:
-(void) dropThePin {
CLLocationCoordinate2D location = mapView.userLocation.coordinate;
location.latitude = latitude;
location.longitude = longitude;
if(pinAnnotation != nil) {
[mapView removeAnnotation:pinAnnotation];
[pinAnnotation release];
pinAnnotation = nil;
}
// Create (alloc/init) a Pin, set its Title & Subtitle, and add/place it:
pinAnnotation = [[mapPinAnnotation alloc] initWithCoordinate:location];
pinAnnotation.pinType = @"VENUE";
tempPin = pinAnnotation;
[pinAnnotation setTitle: @"Some Stadium"];
[pinAnnotation setSubtitle: @"123 Main St."];
[mapView addAnnotation:pinAnnotation];
// Set-Up of 2nd. Pin:
location.latitude = 12.34567;
location.longitude = -23.45678;
pinAnnotation.pinType = @"PARKING";
if(parkingLotPin != nil) {
[mapView removeAnnotation:parkingLotPin];
[parkingLotPin release];
parkingLotPin = nil;
}
// Create (alloc/init) a Pin, set its Title & Subtitle, and add/place it:
parkingLotPin = [[mapPinAnnotation alloc] initWithCoordinate:location];
tempPin = pinAnnotation;
[parkingLotPin setTitle: @"Another Venue"];
[parkingLotPin setSubtitle: @"789 S. Broad Street"];
[mapView addAnnotation:parkingLotPin];
[parkingLotPin release];
}
Наконец, вот метод "viewForAnnotation":
-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation {
MKPinAnnotationView *thePin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
if (tempPin.pinType == @"VENUE") {
thePin.pinColor = MKPinAnnotationColorGreen;
NSLog(@"pin-type = %@", tempPin.pinType);
} else {
thePin.pinColor = MKPinAnnotationColorPurple;
NSLog(@"pin-type = %@", tempPin.pinType);
}
thePin.animatesDrop=TRUE;
thePin.canShowCallout = YES;
thePin.calloutOffset = CGPointMake(-5, 5);
return thePin;
}
Проблема в том, что оба вывода отображаются одинакового цвета.
Есть предложения?