【发布时间】:2015-05-25 16:32:15
【问题描述】:
为 MKPinAnnotationView 上传自定义图像后,我注意到图钉偏离了中心。大头针应该在路线折线上的一点上,并且在 mkcircle 的中心;但是,大头针似乎位于折线的右侧,中心偏北一点。我尝试使用 centerOffset 属性进行试验,但是当我将值插入该属性时,似乎没有任何变化。这是代码,
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
static NSString *viewID = @"MKPinAnnotationView";
MKPinAnnotationView *annotationView = (MKPinAnnotationView*)
[self.mapView dequeueReusableAnnotationViewWithIdentifier:viewID];
if(annotationView ==nil){
annotationView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:viewID];
}
annotationView.image = [UIImage imageNamed:@"Pin.png"];
annotationView.enabled = YES;
//doesn't move the pin, still offcentered
annotationView.centerOffset = CGPointMake(0,-50);
return annotationView;
}
只是要添加一些东西,我还注意到,使用新的 pin 图像,当我单击 pin 时没有弹出任何内容。以前,使用默认图钉,单击图钉后会出现一个文本气泡。既然是这种情况,我想包含在地图上制作和放置图钉的方法的代码,
-(void) createAndAddAnnotationForCoordinate : (CLLocationCoordinate2D)coordinate{
MKPointAnnotation* annotation = [[MKPointAnnotation alloc]init];
annotation.coordinate = coordinate;
annotation.title = @"This is a pin!";
[mapView addAnnotation:annotation];
}
我还尝试更改图钉图像,看看这是否会影响 MKPinAnnotationView 的定位。虽然我可以通过编辑图像使图钉居中,但它并没有为其他折线居中。任何帮助将不胜感激!
【问题讨论】:
-
如果您想使用自定义图像,请创建一个普通的 MKAnnotationView(不是 MKPinAnnotatioView)。这也可以解决居中问题。要在点击时激活标注,请执行 annotationView.canShowCallout = YES。
-
感谢您回复安娜。将其更改为 MKAnnotationView 确实解决了标注问题,但注释仍然偏离中心。我尝试使用 centeroffSet 和 center 属性,但是当我弄乱它们时,注释似乎没有移动。
-
请注意,centerOffset 不随地图的缩放级别缩放。这是一个固定值,因此您必须对其进行设置,以使图像中应该与实际坐标保持一致的点保持这种状态。将其更改为 MKAnnotationView 与标注无关(设置 canShowCallout 做到了)。
-
我不确定我是否阅读正确,但是我无法移动注释吗?如果有帮助的话,注释就在它所在的 mkcircle 中心的右侧一点。
-
请编辑问题并发布 Pin.png 以及注释在地图上相对于圆圈的外观的小屏幕截图。
标签: ios objective-c mkmapview mkannotationview mkpinannotationview