J'ai une MKAnnotation avec une image de broche personnalisée. Cependant, la broche (MKAnnotationView) centre l'image par rapport à la coordonnée spécifiée. Je veux définir le point de la coordonnée en bas au centre de l'image, pas au centre.
J'ai essayé d'utiliser annView.centerOffset = CGPointMake(-12, -28);
. Mais le problème est que centerOffset
n'est pas pertinent pour le niveau de zoom des cartes.
On peut le faire à la fois dans l'API JS et dans Android. Y a-t-il une possibilité de le faire dans l'objectif-c?
..fredrik
Votre UIAnnotationView
est toujours dessiné à la même échelle, le niveau de zoom de la carte n'a pas d'importance. C'est pourquoi centerOffset
n'est pas lié au niveau de zoom.
annView.centerOffset
est ce dont vous avez besoin. Si vous voyez que votre épingle n'est pas au bon endroit (par exemple, le centre inférieur se déplace un peu lorsque vous modifiez le niveau de zoom), c'est parce que vous n'avez pas défini le bon décalage central.
Soit dit en passant, si vous souhaitez définir le point de la coordonnée en bas au centre de l'image, la coordonnée x de votre centerOffset doit être 0,0f, car annotationView centre l'image par défaut. Alors essayez:
annView.centerOffset = CGPointMake(0, -imageHeight / 2);
La définition du décalage central déplace souvent l'image autour de l'utilisateur lorsque l'utilisateur fait pivoter ou effectue un zoom sur la carte, car le point d'ancrage est toujours défini au centre de l'image au lieu de son centre inférieur.
Vous pouvez définir le point d'ancrage de l'annotation au centre inférieur de votre image personnalisée comme suit:
yourAnnotation.layer.anchorPoint = CGPointMake(0.5f, 1.0f);
De cette façon, lorsque l'utilisateur effectue un zoom ou une rotation sur la carte, votre annotation personnalisée ne se déplacera jamais de ses coordonnées sur la carte.
Vous pouvez utiliser ce guide pour déterminer votre décalage central.
Toutes les solutions données gâcheraient maintenant si vous effectuez un zoom arrière. La seule solution pleinement opérationnelle que j'ai trouvée jusqu'à présent est d'augmenter la hauteur de votre image personnalisée avec sa hauteur. En d'autres termes - doublez la hauteur. Déplacez également l'image de la broche vers le haut et laissez le reste transparent. De cette façon, le centre de l'image sera le point bas de votre punaise.
Maintenant, peu importe combien vous zoomez ou si vous faites pivoter la carte, l'épingle restera centrée sur l'emplacement souhaité.
Le seul problème auquel je peux penser est que la zone de prise pour cette broche sera également augmentée.
J'espère que ça aide!