пожалуйста, я недавно сделал Карту, в которой предполагается показывать местоположение пользователя (зеленый значок булавки) и другие аннотации для станций технического обслуживания (красный значок булавки), на данный момент я могу показать все аннотации того же цвета ия все еще не могу сказать делегату MKMapView
, как сделать различие между двумя типами выводов, и поэтому назначаю каждому типу правильный заголовок для отображения.это мой MKAnnotationView
метод:
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *identifier = @"MyLocation";
if ([annotation isKindOfClass:[MyLocation class]]) {
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [map dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
} else {
annotationView.annotation = annotation;
}
annotationView.enabled = YES;
[annotationView setAnimatesDrop:YES];
annotationView.canShowCallout = YES;
return annotationView;
}
return nil;
}
и для моего класса, который реализует делегат MKAnnotation
, у меня есть этот метод:
-(id)initWithName:(NSString *)enseigneDeLaStation distanceVersLaStation:(NSString *) distanceVersLaStation coordinate:(CLLocationCoordinate2D)coordinate
{
if ((self = [super init])) {
_enseigneDeLaStation = [enseigneDeLaStation copy];
_distanceVersLaStation = [distanceVersLaStation copy];
_coordinate = coordinate;
}
return self;
}
Заранее спасибо за помощь :)
РЕДАКТИРОВАТЬ Я пытаюсь сделать аннотацию местоположения пользователя, как это, пожалуйста, если я ошибаюсь, исправьте меня:
location2D = (CLLocationCoordinate2D){ .latitude = latitudeOfUserLocation, .longitude = longitudeOfUserLocation };
MyLocation *annotation=[[[MyLocation alloc]initWithName:@"You are here" distanceVersLaStation:@"" coordinate:location2D]autorelease];
[mapView addAnnotation:annotation];
РЕДАКТИРОВАТЬ 2 ПриветОпять же, я пытаюсь сделать одну аннотацию, чтобы убедиться, что она даже вызывает метод аннотации, поэтому представьте себе этот простой пример:
latitudeOfUserLocation=43.2923;
longitudeOfUserLocation=5.45427;
location2D = (CLLocationCoordinate2D){ .latitude = latitudeOfUserLocation, .longitude = longitudeOfUserLocation };
MyLocation *annotation=[[[MyLocation alloc]initWithName:@"You are here" distanceVersLaStation:@"coucou" coordinate:location2D]autorelease];
[mapView addAnnotation:annotation];
MKCoordinateSpan span={latitudeDelta:1,longitudeDelta:0.5};
MKCoordinateRegion region={location2D,span};
[mapView setRegion:region];
, когда я запускаю приложение, я вижу, что регион хорошо увеличен, что соответствует 43.2923 /5.45427 но я не вижу аннотации, почему она не вызывает метод аннотации, я не могу двигаться дальше, так как она не показывает аннотацию пользователя, пожалуйста, помогите, спасибо заранее:)
РЕДАКТИРОВАТЬ3 Привет, я предположил, что это всегда имеет отношение к созданию различий между выводами пользователя и станции, поэтому я объявил переменную codeColor
, установил его в 1 (тип пользователя) при вызове аннотаций и установил егодо 2 (тип станции) при вызове аннотаций дляr станции:
-(void)viewWillAppear:(BOOL)animated
{
codeColor=1;//it's the first type, the user one
MyLocation *annotation=[[[MyLocation alloc]initWithName:@"You are right here" distanceVersLaStation:@"" coordinate:location2D]autorelease];
annotation.pinColor = MKPinAnnotationColorGreen;
[mapView addAnnotation:annotation];
}
и:
-(void)requestFinished:(ASIHTTPRequest *)request
{ codeColor=2;
[MBProgressHUD hideHUDForView:self.view animated:YES];
MyLocation *annotation=[[[MyLocation alloc]initWithName:ensStation distanceVersLaStation:distance coordinate:location2D]autorelease];
annotation.pinColor = MKPinAnnotationColorPurple;
[mapView addAnnotation:annotation];
}
и для метода аннотаций:
if (codeColor==2) {
annotationView.rightCalloutAccessoryView=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
теперь при первом тестировании все в порядкепользовательская аннотация без кнопки, а станция - с кнопкой, но когда я перехожу из вида и возвращаюсь, все аннотации с кнопками, даже пользовательские.не могли бы вы помочь мне там, спасибо заранее:)