Tamam, bu yüzden bu sorun yaşıyorum. Ne yapmak istediğiniz bir haritaya birden açıklamaları manuel olarak ekleyin olduğunu. Sadece bir ek açıklama eklediğinizde, sorunsuz çalışır. pim damla, onun ek bilgiyi görmek için üzerine tıklayabilirsiniz, hayat güzel.
Ben birden fazla eklemek istediğinizde sorun geliyor. Ben ikincisini eklediğinizde, aniden pim en (yani belli bir renk olmalıdır onların büyüklüğüne bağlı olarak, ama ikisi de şimdi aynıyız ...) düzgün renkli değildir ve daha da önemlisi onların üzerine tıkladığınızda, onların görmek çizgisi, uygulama exex_bad_access çöker. Gerçekten sorunun ne fikri, belki haritaya Çok sayıda görüntüleme ekliyorum var? Ama sadece 9 pin var ve pimleri kendilerini gayet ekleyin. İşte benim kod ...
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *stops = [[NSMutableArray alloc] init]; //Get list of all the stops available
Bus *bus1 = [[Bus alloc] init]; // Bus 1 holds the stops
stops = [bus1 returnStops];
for (NSString *stop in stops) //Go through each stop to add annotation to map
{
Bus *bus2 = [bus1 initWithStop:stop]; //Create an instance of bus with a given stop
MapAnnotation *eqAnn = [MapAnnotation annotationWithBus:bus2];
[self.mapView addAnnotation:eqAnn]; //Add the annotation to the map
//[eqAnn release];
//[bus2 release];
}
[self recenterMap];
[stops release];
}
- (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *view = nil;
if(annotation != mapView.userLocation) {
MapAnnotation *eqAnn = (MapAnnotation*)annotation;
view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@busLoc];
if(nil == view) {
view = [[[MKPinAnnotationView alloc] initWithAnnotation:eqAnn
reuseIdentifier:@busLoc] autorelease];
}
CGFloat magnituide = [eqAnn.bus.magnitude floatValue];
if(magnituide >= .80f) {
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorRed];
} else if(magnituide >= .60f) {
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorPurple];
} else
{
[(MKPinAnnotationView *)view setPinColor:MKPinAnnotationColorGreen];
}
[(MKPinAnnotationView *)view setAnimatesDrop:YES];
[view setCanShowCallout:YES];
}
return view;
}
Hatta ikinci işlevi çıkarmadan çalıştı, ama hiçbir şey yapmadı.
Yardım için teşekkürler! PS Ben de notuna tıklayın çalışır 9 takım bir ya da iki pin genellikle var, eklemek gerekir ...
Ben bile programda elle manuel olarak sadece iki ek açıklamaları denerseniz (yani döngü kaldırmak), hala başarısız olur ve renk hala yanlış ...













