web-dev-qa-db-fra.com

Icône GMSMarker depuis le centre (iOS)

Je viens de passer de Apple Maps à Google Maps. Un problème auquel je n'arrive pas à trouver de réponse est de savoir comment créer l'icône d'un GMSMarker pour partir du centre plutôt que de le bas de l'image.

Un exemple de ce que je veux dire est que l'icône de point d'emplacement actuel commence centrée sur les coordonnées qu'elle est censée exprimer. Cependant, les icônes GMSMarkers commencent au bas de l'icône.

30
Nicholas Mata

Vous pouvez modifier la position de départ de votre icône de marqueur avec la propriété groundAnchor.

documentation du SDK Google Maps pour iOS:

L'ancre au sol spécifie le point dans l'image d'icône qui est ancré à la position du marqueur sur la surface de la Terre. Ce point est spécifié dans l'espace continu [0,0, 1,0] x [0,0, 1,0], où (0,0) est le coin supérieur gauche de l'image et (1,1) est le coin inférieur droit.

Exemple:

L'exemple ci-dessous fait pivoter le marqueur de 90 °. La définition de la propriété groundAnchor à 0,5,0,5 entraîne la rotation du marqueur autour de son centre, au lieu de sa base.

CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127);
CLLocationDegrees degrees = 90;
GMSMarker *london = [GMSMarker markerWithPosition:position];
london.groundAnchor = CGPointMake(0.5, 0.5);
london.rotation = degrees;
london.map = mapView_;
56
adboco

J'ai compris comment le faire après avoir lu de très près la documentation de Google Maps. Je crois que c'est ainsi que cela devait être fait.

UIImage *markerIcon = [UIImage imageNamed:@"markericon.png"];
markerIcon = [markerIcon imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, (markerIcon.size.height/2), 0)];
self.marker.icon = markerIcon;
7
Nicholas Mata