iPhone アプリで MKMapview を使用しています。
MKMapkit フレームワークの注釈に値を割り当てるにはどうすればよいですか?
MKAnnotation
)MKAnnotationView
)AnnotationView
クラス内のカスタム注釈のタイトル、背景画像、およびその他の要素をプロパティとして定義してください。
AnnotationView
次のメソッドをオーバーライドし、クラスで定義したプロパティの値を設定します。
- (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
if ([<Object of CustomAnnotation class> isKindOfClass:[MKUserLocation class]])
return nil;
CustomAnnotation* custom_anno = (CustomAnnotation*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"custom_annotation"];
if (!custom_anno){
custom_anno = [[CustomAnnotation alloc] initWithAnnotation:annotation reuseIdentifier:@"custom_annotation"];
custom_anno.frame = CGRectMake(0, 0, 250, 57.5);
custom_anno.canShowCallout = NO;//CHange if you want to change callout behaviour (thats is it's abilty to apper). I set it top no because i did not want a callout.
UIImageView* icon = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 40, 40)];
[icon setImageWithURL:<your image> placeholderImage:<your placeholder image>];//placeholder image = nil if you do not want one.
icon.backgroundColor = [UIColor lightGrayColor];
UILabel* name = [[UILabel alloc] initWithFrame:CGRectMake(50, 5, 200, 20)];
name.text = nameValue;
UILabel* category = [[UILabel alloc] initWithFrame:CGRectMake(50, 25, 200, 20)];
category.text = otherValue;
[custom_anno addSubview:icon];
[custom_anno addSubview:name];
[custom_anno addSubview:category];
}
return custom_anno;
}
私のカスタム アノテーション クラスは「Annotation」で、カスタム アノテーション ビュー クラスは「CustomAnnotation」でした。必要に応じて変更してください。
Annotation
この後、クラスのオブジェクトを作成して使用します。
編集 :
カスタム アノテーション ビュー クラスで次のメソッドをオーバーライドしてください。
.h:
- (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier;
.m:
- (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if (self) {
}
return self;
}
編集2:
次のようにView Controllerで使用できます。
MKMapView* cellMap = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, 290, 100)];
cellMap.delegate = self;
cellMap.userInteractionEnabled = NO;
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(<your coordinates>);
MKCoordinateSpan span = MKCoordinateSpanMake(0.04, 0.04);
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
cellMap.showsUserLocation = NO;
[cellMap setRegion:region animated:YES];
Annotation* anon = [[Annotation alloc] init];
anon.coordinate = center;
[cellMap addAnnotation:anon];
[checkIn addSubview:cellMap];