J d*_*ama 3 mapkit mkannotationview ios
我使用自定义图像进行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;
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您正在设置centerOffset注释视图.
请注意,此偏移量不会随缩放级别缩放.缩小越远,图像将从坐标显示得越远.
在默认情况下MKPinAnnotationView,centerOffset保留默认值0,0并且引脚图像设计为使得引脚的底点位于坐标上.因此,当您进一步缩小时,图像图像似乎相对于其下方的地图增长,但图钉的底部仍然指向坐标.
您需要centerOffset根据图像进行调整或修改图像,这样就无需进行设置centerOffset.或者只是尝试评论出设置 - centerOffset可能你不需要它.
其他一些不相关的项目:
pprMapNotealloc + init(添加自动释放)dequeueReusableAnnotationViewWithIdentifier以允许重复使用注释视图.addTarget调用自己的方法按下callout按钮,使用map视图自己的委托方法要好得多calloutAccessoryControlTapped有关上述三点的示例,请参阅此答案.
| 归档时间: |
|
| 查看次数: |
3707 次 |
| 最近记录: |