延續上一篇 MapView 地圖註解大頭針 Pin 的相關設定的文章,由於原先的大頭針註解 Pin 只有三中顏色(紅、紫、綠)可選,為了能讓 MapView 能有更多的變化,這裡就是範如何使用圖片來取代原先的大頭針,其程式碼如下。
//建立MapPin時會呼叫的函式
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation
{
//判斷Pin如果是目前位置就不修改
if ([annotation isKindOfClass:[MKUserLocation class]])
{ return nil; }
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation"];
UIImage *image = [UIImage imageNamed:@"MapPin.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[image release];
//重設圖片大小與座標
imageView.frame = CGRectMake(0, 0, 30, 30);
//設定PinView圖片
pinView.image = [UIImage imageNamed:@"MapPin.png"];
//設定註解內的圖片
pinView.rightCalloutAccessoryView = imageView;
[imageView release];
//點擊時是否出現註解
pinView.canShowCallout = YES;
return pinView;
}
在這裡有兩點非常重要,第一必須確保 MapView 的類型是在標準狀態,設定方式如下。 map.mapType = MKMapTypeStandard;
若 MapView 的類型是在標準狀態下,則全部的 PinView 將無法套用新的影像,只會維持原大頭真的圖示。
另一點就是在函式中最好不要設定可被拖曳 animatesDrop,如果做了此設定很有可能造成部份PinView將無法套用新的影像,只會維持原大頭真的圖示。
沒有留言:
張貼留言