2011-05-30 204 views
6

我想用特定圖像替換典型的iOS mapkit「pin」。我是新來的編碼,所以我不知道到底爲什麼這是行不通的,但這裏是我已經嘗試:iOS中的自定義註釋圖像

的方法

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 

我有,除其他事項外,這個:

pinView.animatesDrop=YES; 
pinView.canShowCallout=YES; 
//pinView.pinColor=MKPinAnnotationColorPurple; 
UIImage *pinImage = [UIImage imageNamed:@"Jeff.png"]; 
[pinView setImage:pinImage]; 

但是,即使代碼編譯好,pinView沒有被設置pinImage。任何想法爲什麼不呢?

+0

請參閱http://stackoverflow.com/questions/5373265/custom-mkannotation-image-goes-back-to-default-when-i-attempt-to-drag,http://stackoverflow.com/questions/ 10501341/mkpinannotationview-custom-image-is-replacement-by-pin-with-animating-drop,http://stackoverflow.com/questions/9814988/mkmapview-instead-of-annotation-pin-a-custom-view,等 – Anna 2012-07-10 11:57:05

回答

3

所有你需要做的就是最後一行改爲:

[pinView addSubview:pinImage]; 

完整的例子:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 

    MKPinAnnotationView *annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ParkingPin"]; 

    UIImageView *imageView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pin_parking.png"]] autorelease]; 

    annView.animatesDrop = TRUE; 
    annView.canShowCallout = YES; 
    annView.calloutOffset = CGPointMake(-5, 5); 
    [annView addSubview:imageView]; 
    return annView; 
} 

希望這有助於!

+3

不起作用。它顯示引腳和圖像。 – Oliver 2011-08-28 23:35:59

3

圖像應設置爲annView的按鈕instand,我用的是這樣的:

UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateNormal]; 
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateSelected]; 
[button setImage:[UIUtils getStyleImage:@"page_map_accessory_button.png"] forState:UIControlStateHighlighted]; 
pinView.rightCalloutAccessoryView = button; 
0

只要做到:

annView.image=[UIImage imageNamed:@"imagename.png"]; 
2

我沒有看到這裏的答案是,你必須在viewForAnnotation方法中出列或創建一個MKAnnotationView,並將您的類作爲地圖視圖的委託,以便它調用此方法來獲取視圖。

如果您在其他地方創建了註釋視圖,那麼使用圖像屬性設置的任何自定義圖像將不會顯示,您將只能看到一個圖釘。

+0

MKAnnotationView的作品,MKPinAnnotationView不會。 – Jenn 2013-06-02 15:29:51

+0

PinAnnotationView應該只使用內置的引腳圖像,因爲我理解它,所以我不認爲它會支持設置自定義圖像... – 2013-06-03 00:32:41

1

只需從代碼中刪除「animatesDrop」行。它會爲你工作。