8

通常の注釈ピンの原点は下部の中央にあるため、ピンは常に同じ場所を指します。

しかし、カスタム画像を追加すると、その原点が画像の中心になるため、ズームインまたはズームアウトするたびに、画像の下部が別の場所を指します。

ここに画像の説明を入力

ここで私のピンはパリの中心を指しているはずですが、

ここに画像の説明を入力

しかしズームインすると、ピンの下部がパリの中心を指していません。

で試して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;
}
4

1 に答える 1

13

MKAnnotationView画像のオフセットを調整するために設定を試すことがcenterOffsetできるプロパティがあります。

customPinView.centerOffset = CGPointMake(xOffset,yOffset);


initWithAnnotation関係あり ませんがinitMKAnnotationView. また、パフォーマンスを向上させるために注釈ビューの再
利用を使用および実装しても害はありません。dequeueReusableAnnotationViewWithIdentifier

また、デリゲート メソッドでプログラムによって画像のサイズを変更するのではなく、サイズ変更済みの画像を使用することをお勧めします。customPinView.image = [UIImage imageNamed:@"resizedWaterPin.png"];そうすれば、実行時に注釈画像のサイズを毎回変更することなく実行できます。

于 2012-11-21T14:28:37.820 に答える