2015-03-10 12 views
18

Sono appena passato da Apple Maps a Google Maps. Un problema a cui non riesco a trovare una risposta è come si fa a far sì che l'icona di un GMSMarker inizi dal centro piuttosto che dalla parte inferiore dell'immagine.Icona GMSMarker dal centro (iOS)

Un esempio di cosa intendo è che l'icona del punto posizione corrente inizia centrata rispetto alle coordinate che si intende esprimere. Tuttavia, le icone GMSMarkers iniziano dalla parte inferiore dell'icona.

risposta

38

È possibile modificare la posizione iniziale dell'icona del marcatore con la proprietà groundAnchor.

Google Maps per iOS SDK documentazione:

L'ancoraggio a terra specifica il punto l'immagine icona che è ancorata alla posizione del marcatore sulla superficie terrestre in. Questo punto è specificato nello spazio continuo [0.0, 1.0] x [0.0, 1.0], dove (0,0) è l'angolo superiore sinistro dell'immagine e (1,1) è il in basso a destra angolo.

Esempio:

L'esempio seguente ruota il marcatore 90 °. Impostando la proprietà terraAnchor a 0,5,0,5, il contrassegno viene ruotato attorno al suo centro, invece della sua 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_; 
+0

salvato il mio fratello giorno. Grazie +1 –

+0

Grazie fratello. Bella risposta –

+0

Per coloro che vogliono semplicemente spostare la posizione del marker, tutto ciò che serve è 'yourMarker.groundAnchor = CGPoint (0.5, 0.5);' Grazie @adboco! – Spencer

5

Ho capito come farlo dopo aver letto la documentazione di Google Maps molto da vicino. Credo che sia così che doveva essere fatto.

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

Ho provato questo metodo e sembra che funziona, ma che provoca alcuni effetti collaterali indesiderati ... fare questo * non spostare l'area tappable * così l'area esterna rect del marcatore originale non sarà tappable . – Spencer

Problemi correlati