В моем приложении Im показывает несколько аннотаций на карте. У меня много разных аннотаций, но в основном у меня есть 12 разных аннотаций с каждым их собственным изображением (так 12 различных изображений аннотаций).Лучший/наиболее эффективный способ фильтрации объектов
Теперь в моем текущем коде я подклассифицировал MKAnnotation и дал ему свойство, которое я назвал «идентификатором», и когда я создаю аннотацию, этот идентификатор будет установлен в соответствующее значение, поэтому позже я мог бы позже фильтровать определенную группу аннотаций и дайте им правильные изображения в viewForNnotation.
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id<MKAnnotation>)annotation {
CustomAnnotation *pin = annotation;
MKAnnotationView *pinView=nil;
if ([annotation isKindOfClass:[MKUserLocation class]]) {
return nil;
}
else if ([pin.identifier isEqualToString:@"tree"]) { //give annotation a tree image
pinView = (MKPinAnnotationView *)[aMapView dequeueReusableAnnotationViewWithIdentifier:@"OwnerAnnotationString"];
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"OwnerAnnotationString"];
pinView.image = [UIImage imageNamedForDevice:@"tree"];
pinView.centerOffset = CGPointMake(0, -53/2);
return pinView;
}
else if ([pin.identifier isEqualToString:@"house"]){ //give annotation a house image
pinView = (MKPinAnnotationView *)[aMapView dequeueReusableAnnotationViewWithIdentifier:@"SmallGoldPinStringAnkeren"];
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"anotheridentifier"];
pinView.image = [UIImage imageNamedForDevice:@"house"];
pinView.centerOffset = CGPointMake(8, -43/2);
return pinView;
}
//and so on
Я не люблю это еще, если и процесс фильтрации действительно неэффективен, так мне было интересно, что лучший и быстрый способ, чтобы установить изображение для различных аннотаций.
И последний пример этого делается с аннотациями, но я бежал в этот сценарий несколько раз теперь так на самом деле мой вопрос:
Что такое лучший способ проверить, какой тип объекта вы взаимодействуете с таким вы можете установить соответствующие значения для этого конкретного объекта в Objective-C.
1: Какой процесс фильтрации происходит очень медленно? 2: Вы действительно не можете избежать того факта, что вам нужно в какой-то момент проверить какое-то значение, чтобы определить, какое изображение будет доступно. – Joride
Возможно, это не медленно, но я просто думал, что все эти if и else if не являются приятными способ программирования. Это просто выглядит плохо и было интересно, есть ли способ сократить мой код пополам. –
Вы можете, конечно, определить его в каком-то третичном объекте. В итоге вы получите более красивый код lookig в viewController и улучшите разделение проблем. Но тогда возникает вопрос, действительно ли накладные расходы для этого действительно стоят усилий, если у вас действительно есть только пара (скажем, <10) изображений. – Joride