延續上一篇 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將無法套用新的影像,只會維持原大頭真的圖示。

沒有留言:
張貼留言