Я создаю MKMapView и добавляю к нему аннотации и наложения. Наложения выглядят хорошо (поэтому все подключено правильно), а аннотации вызываются через делегат (вызывается mapView: viewForAnnotation) и отлично выглядят при отладке, но не отображаются в самом MapView.
Тот же код работает на iOS (отображаются как наложения, так и аннотации), но на макросах отображаются только наложения. Основываясь на количестве обращений к делегату и проверке объектов аннотации (id), я думаю, что расположение в порядке. Я использую MKPinAnnotationView для возврата и сейчас рассматриваю, нужно ли мне просто создать подкласс MKAnnotatonView и использовать изображение. В качестве теста я попытался установить для свойства изображения MKPinAnnotatonView значение NSImage, но это не помогает.
Я бы предпочел MKPinAnnotatonView, но у меня нет идей.
Я гуглил каждый пример, который могу найти, но не видел никаких проблем ... Надеюсь, это какая-то очевидная ошибка.
- (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id<MKAnnotation>)annotation
{
MKPinAnnotationView *pinView = nil;
if ([annotation isKindOfClass:[MKClusterAnnotation class]])
{
static NSString *clusterPinID = @"com.xxxxx.cluster";
pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:clusterPinID];
if ( pinView == nil )
pinView = [[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:clusterPinID];
else
[pinView setAnnotation:annotation];
pinView.pinTintColor = [NSColor redColor];
// following line makes no difference - ic_pin is a test png
pinView.image = [NSImage imageNamed:@"ic_pin"];
} else{
TrackAnnotation *trackAnnotation = (TrackAnnotation *) annotation;
// note change to mkannotation view with custom
if(annotation != mapView.userLocation)
{
static NSString *defaultPinID = @"com.xxxxx.pin";
pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( pinView == nil )
pinView = [[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:defaultPinID];
else
[pinView setAnnotation:annotation];
pinView.pinTintColor = [NSColor greenColor];
// this is just the type of object for clustering...
pinView.clusteringIdentifier = [trackAnnotation.attribs objectForKey:@"name"];
// following line makes no difference - ic_pin is a test png
pinView.image = [NSImage imageNamed:@"ic_pin"];
}
else {
[mapView.userLocation setTitle:@"I am here"];
}
}
return pinView;
}
Нет ошибок в журналах и на основе производительности прокрутки и вызовов делегата annotaitonViews на карте - они просто не видны ... Я думал, что NSImage разрешит это, но безрезультатно. Любые мысли были бы полезны, я думаю.