カスタムピンイメージのMKA注釈があります。ただし、pin(MKAnnotationView)は、指定された座標に関して画像を中央に配置します。中心ではなく、画像の中央下に座標のポイントを設定したい。
annView.centerOffset = CGPointMake(-12, -28);
を使用してみました。しかし、問題はcenterOffset
がマップのズームレベルに関連していないことです。
JS APIとAndroidの両方でこれを行うことができます。 Objective-Cでこれを行う可能性はありますか?
..fredrik
UIAnnotationView
は常に同じ縮尺で描画され、マップのズームレベルは関係ありません。 centerOffset
がズームレベルにバインドされないのはそのためです。
annView.centerOffset
は必要なものです。ピンが適切な場所にない場合(たとえば、ズームレベルを変更すると下部中央が少し移動する)、それは正しいcenterOffsetを設定しなかったためです。
ちなみに、画像の下部中央に座標のポイントを設定したい場合、デフォルトでannotationViewが画像を中央に配置するため、centerOffsetのx座標は0.0fになります。だから試してください:
annView.centerOffset = CGPointMake(0, -imageHeight / 2);
CenterOffsetを設定すると、ユーザーがマップを回転またはズームするときに画像の周囲が移動することがよくあります。アンカーポイントは、画像の下中央ではなく画像の中央に設定されたままです。
次のように、注釈のアンカーポイントをカスタム画像の中央下に設定できます。
yourAnnotation.layer.anchorPoint = CGPointMake(0.5f, 1.0f);
これにより、ユーザーが地図をズームまたは回転したときに、カスタムアノテーションが地図上の座標から移動することはありません。
このガイドを使用して、中心オフセットを把握できます。
ズームアウトすると、指定されたすべてのソリューションがピンを台無しにします。私がこれまで見つけた唯一の完全に機能する解決策は、カスタム画像の高さを高くすることです。つまり、高さを2倍にします。また、ピン画像を上部に移動し、残りを透明のままにします。これにより、画像の中心が押しピンの最下部になります。
これで、どれだけズームしても、マップを回転しても、ピンは目的の場所の中心にとどまります。
私が考えることができる1つの問題は、このピンのタップ可能な領域も同様に増加することです。
これがお役に立てば幸いです!