2011年4月13日 星期三

[轉] MapView 上使用圖片取代原大頭針註解 Pin 圖示

from : http://www.furnace.idv.tw


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

沒有留言:

張貼留言