小さな質問ですが、マップビューにいくつかの注釈があります。互いに非常に接近しているとオーバーラップする傾向があり、それで問題ありませんが、私がそれらに触れると、レイヤーの位置が切り替わります。後ろにあったものが前になり、その逆も同様です。
だから私はdidSelectAnnotation関数をチェックしましたが、その関数には文字通りコードがないので、それはできませんでした。
私はそれを引き起こすかもしれない他に何も考えられませんでした。
レイヤーの位置が変わらないように修正する方法を知っていますか?
これは私のviewForAnnotationコードです:
annImg = [[szAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"];
szPointAnnotation *pointAnnotation = annotation;
if (appDelegate.homePage || ([pointAnnotation.tag intValue] >= 10000))
{
annImg.canShowCallout = NO;
annImg.backgroundColor = [UIColor clearColor];
annImg.frame = CGRectMake(0, /*0*/-78, 70, /*78*/156);
UIImageView *currentUserPictureView = [[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 60, 60)];
int newTag = [pointAnnotation.tag intValue]-10000;
UIImage *currentUserPicture;
if ([pointAnnotation.tag intValue] >= 10000) {
currentUserPicture = [UIImage imageWithData:[usersData getKeyForIndexWithKey:@"UserImageData" forIndex:newTag]];
}else{
currentUserPicture = [UIImage imageWithData:[usersData getKeyForIndexWithKey:@"UserImageData" forIndex:[pointAnnotation.tag intValue]]];
}
currentUserPictureView.image = currentUserPicture;
userLocationButton = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 70, 78)];
[userLocationButton setBackgroundImage:[UIImage imageNamed:@"pin.png"] forState:UIControlStateNormal];
[userLocationButton addTarget:self action:@selector(centerOnUser:) forControlEvents:UIControlEventTouchUpInside];
if ([pointAnnotation.tag intValue] >= 10000) {
userLocationButton.tag = newTag;
}else{
userLocationButton.tag = [pointAnnotation.tag intValue];
}
[userLocationButton setBackgroundColor:[UIColor clearColor]];
[annImg addSubview:userLocationButton];
[userLocationButton addSubview:currentUserPictureView];
[userLocationButton release];
[currentUserPictureView release];
[currentUserPicture release];
}