最近在開發 iOS APP 時,有用到地圖的功能,我需要把自訂的大頭針擺放到特定的位置,並且要顯示自訂的圖片。這並不是什麼困難的要求,只是我發現自訂的大頭針圖片(MKAnnotationView
)總是有所偏移,不會正好釘在我要的位置,還好最後找到解決辦法。
需求:
有自訂的大頭針圖片,「針頭」的位置就是圖片底部中央的位置,要讓「針頭」正好顯示於地圖上的特定座標,不會有所偏移。
解法:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation> )annotation {
if ([annotation isKindOfClass:[MyAnnotation class]]) {
MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"];
if (!aView) {
aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"identifier"];
aView.image = [UIImage imageNamed:@"pin-image"];
aView.layer.anchorPoint = CGPointMake(0.5, 1);
}
return aView;
}
return nil;
}
重點在那一行 aView.layer.anchorPoint = CGPointMake(0.5, 1)
,如果「針頭」不是正好在圖片底部中央的話,就得再調整 anchorPoint。