Ios 更改图像';s地图注释视图的原点? P>正则注释引脚的起源在底部的中间。 所以,大头针总是指向同一个地方

Ios 更改图像';s地图注释视图的原点? P>正则注释引脚的起源在底部的中间。 所以,大头针总是指向同一个地方,ios,mapkit,mkannotationview,Ios,Mapkit,Mkannotationview,但当我添加自定义图像时,其原点是图像的中心,因此每次放大或缩小,图像的底部都指向不同的位置 这里我的pin应该指向巴黎市中心,但是 但是当我放大时,我的大头针底部并没有指向巴黎的中心 我正在尝试使用CGRect.origin,但没有得到任何有用的结果 这是我的密码: - (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {

但当我添加自定义图像时,其原点是图像的中心,因此每次放大或缩小,图像的底部都指向不同的位置

这里我的pin应该指向巴黎市中心,但是

但是当我放大时,我的大头针底部并没有指向巴黎的中心

我正在尝试使用
CGRect.origin
,但没有得到任何有用的结果

这是我的密码:

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    MKAnnotationView * customPinView = [[MKAnnotationView alloc] init];
    UIImage * img = [UIImage imageNamed:@"waterPin.png"] ;
    CGRect resizeRect;
    resizeRect.size.height = 40;
    resizeRect.size.width = 40;
    resizeRect.origin = (CGPoint){0.0f, 0.0f};
    UIGraphicsBeginImageContext(resizeRect.size);
    [img drawInRect:resizeRect];
    UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    customPinView.image = resizedImage;
    return customPinView;
}
-(MKAnnotationView*)映射视图:(MKMapView*)注释的映射视图:(id)注释
{
MKAnnotationView*customPinView=[[MKAnnotationView alloc]init];
UIImage*img=[UIImage ImageName:@“waterPin.png”];
CGRect resizeRect;
resizeRect.size.height=40;
resizeRect.size.width=40;
resizeRect.origin=(CGPoint){0.0f,0.0f};
UIGraphicsBeginImageContext(resizeRect.size);
[img drawInRect:resizeRect];
UIImage*resizedImage=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsSendImageContext();
customPinView.image=resizedImage;
返回customPinView;
}

MKAnnotationView
有一个
centerOffset
属性,您可以尝试设置该属性来调整图像偏移:

customPinView.centerOffset = CGPointMake(xOffset,yOffset);

不相关,但您应该使用
initWithAnnotation
而不仅仅是
init
来创建
MKAnnotationView

使用
dequeueReusableAnnotationViewWithIdentifier
并实现注释视图重用以提高性能也不会有什么坏处


我还建议不要在delegate方法中以编程方式调整图像的大小,而是首先使用已经调整大小的图像。然后您只需执行
customPinView.image=[UIImage ImageName:@“resizedWaterPin.png”]无需每次花费运行时调整批注图像的大小。

如果可以发布一些代码??批注设置的坐标(lat/long)到底是多少?尝试设置
customPinView.centerOffset
以调整图像偏移(但我会先验证坐标)。另外,您应该使用initWithAnnotation,而不仅仅是init for MKAnnotationView。不,坐标是正确的,但它是一个小属性,centerOffset,谢谢。您好,您能告诉我如何将默认pin替换为“waterPin.png”吗,并将其指定给注释img的image属性=。。。。。;pin.image=img;拖拉怎么办?!我将其设置为draggable=YES,但不是所有视图,我需要在某些确切的位置单击以拖动它。我希望它被拖动到我触摸它的任何地方,确保您的注释类实现了setCoordinate,否则即使draggable是YES,也无法拖动它。请看和。它正在拖动,是的,我实现了所需的方法,但是pin本身,我需要从特定的位置触摸它们,而不是从pin的任何位置。对不起,但我不明白。你可能想用更多的细节开始一个新问题。