Change the image's origin of map annotation view?

谁都会走 提交于 2019-12-13 12:01:55

问题


The regular annotation pin's origin is in the middle of the bottom so, the pin always point to the same place.

But when I add my custom image, its origin is the center of the image, so every zoom in or out, the bottom of my image point to a different place.

Here my pin is supposed to point to the center of paris BUT

but when I zoom in, the bottom of my pin isn't pointing to the center of Paris.

I'm trying with the CGRect.origin but didn't get anything useful.

Here is my code:

- (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;
}

回答1:


MKAnnotationView has a centerOffset property which you can try setting to adjust the image offset:

customPinView.centerOffset = CGPointMake(xOffset,yOffset);


Unrelated, but you should use initWithAnnotation instead of just init for creating an MKAnnotationView.
It also wouldn't hurt to use dequeueReusableAnnotationViewWithIdentifier and implement annotation view re-use to improve performance.

I would also suggest not programmatically resizing the image in the delegate method and instead using an already-resized image to begin with. Then you can just do customPinView.image = [UIImage imageNamed:@"resizedWaterPin.png"]; without spending run-time resizing the annotation images every time.



来源:https://stackoverflow.com/questions/13492231/change-the-images-origin-of-map-annotation-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!