[英]iOS MapKit Annotation, not showing correct location
我使用自定義圖像進行mapkit注釋。 但是我在使用自定義圖像時遇到的主要問題是,當縮小時,注釋不在地圖上的正確位置,並且只有在我一直向下放大時,它才會顯示注釋點在正確的位置。 似乎當我使用常規引腳MKPinAnnotationView時 ,它正常工作,因為引腳位於正確的位置放大或縮小,提前感謝任何可以提供幫助的人。
我使用的代碼如下:
- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
NSLog(@"welcome into the map view annotation");
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
MKAnnotationView *pprMapNote = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pprMapNote"];
pprMapNote.image = [UIImage imageNamed:[NSString stringWithFormat:@"GPS_note.png"]];
pprMapNote.canShowCallout = YES;
pprMapNote.centerOffset = CGPointMake(-21,-60);
pprMapNote.calloutOffset = CGPointMake(0, 0);
//[pprMapNote addSubview:pprMapNoteImg];
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self
action:@selector(showDetail)
forControlEvents:UIControlEventTouchUpInside];
pprMapNote.rightCalloutAccessoryView = rightButton;
//remember to write in conditional for the different icons that should be loaded based on location
UIImageView *pprNoteLocIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"loc_icon_casino.png"]];
pprMapNote.leftCalloutAccessoryView = pprNoteLocIcon;
[pprNoteLocIcon release];
return pprMapNote;
}
您正在設置注釋視圖的centerOffset
。
請注意,此偏移量不會隨縮放級別縮放。 縮小越遠,圖像將從坐標顯示得越遠。
在默認的MKPinAnnotationView
, centerOffset
保留默認值0,0,並且引腳圖像的設計使得引腳的底點位於坐標上。 因此,當您進一步縮小時,圖像圖像似乎相對於其下方的地圖增長,但圖釘的底部仍指向坐標。
您需要根據圖像調整centerOffset
或修改圖像,這樣就不需要設置centerOffset
。 或者只是嘗試注釋出centerOffset
的設置 - 可能你不需要它。
其他一些不相關的項目:
pprMapNote
alloc + init的內存泄漏(添加自動釋放) dequeueReusableAnnotationViewWithIdentifier
來允許重復使用注釋視圖。 addTarget
為callout按鈕調用自己的方法,最好使用map視圖自己的委托方法calloutAccessoryControlTapped
有關上述三點的示例,請參閱此答案 。
Pin在單獨的視圖中繪制,因此不會根據視圖的狀態進行縮放。
您必須手動設置自定義Pin圖像的大小。 這可以使用centerOffset輕松完成。 對於大多數情況,將幀的高度設置為圖像大小的一半就足夠了。 圖像完全填充在框架中,因此您可以輕松使用此框架尺寸(高度)。
aView.image = [UIImage imageNamed ... ];
aView.centerOffset = CGPointMake(0,-aView.frame.size.height*0.5);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.