2015-03-10 21 views
18

Sadece Apple Haritalar'dan Google Maps'e geçtim. Cevabını göremediğim bir konu, bir GMSMarker için simgenin, görüntünün altından başlayıp merkezden başlamasını nasıl sağlamanızdır.GMSMarker merkezi simgesi (iOS)

Demek istediğim bir örnek, geçerli konum noktası simgesinin, ifade edilmesi istenen koordinatlarda ortalanmasıyla başlamasıdır. Ancak GMSMarkers simgeleri, simgenin altından başlar.

cevap

38

İşaretçi simgenizin başlangıç ​​konumunu, groundAnchor numaralı özelliğiyle değiştirebilirsiniz.

iOS belgelerine için Google Maps SDK:

zemin çapa Dünya yüzeyindeki işaretin pozisyona demirlemiş olan ikon görüntüsündeki noktayı belirtir. Bu nokta sürekli boşluk içinde belirtilmiştir [0.0, 1.0] x [0.0, 1.0], Burada (0,0) görüntünün sol üst köşesi ve (1,1) alt sağ köşe.

Örnek:

Aşağıdaki örnek işaretçisi 90 ° döner. GroundAnchor özelliğinin 0,5,0,5 değerine ayarlanması, işaretleyicinin kendi merkezi yerine etrafında döndürülmesine neden olur.

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

gün ağabeyimi kurtardı. Teşekkürler +1 –

+0

Teşekkürler kardeşim. basitçe işaretleyici konumunu kaydırmak isteyenler için güzel cevap –

+0

, tek ihtiyacınız olan 'yourMarker.groundAnchor = CGPoint (0.5, 0.5);' Teşekkür @adboco! – Spencer

5

Google Haritalar Dokümantasyonunu çok iyi okuduktan sonra nasıl yapılacağını anladım. Bunun nasıl yapılmasının amaçlandığına inanıyorum.

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

ben bu yöntemi denedim ve çalışıyor ancak * tappable alanı dışına çıkmaz * böylece orijinal işaretin rect'in dış alan tappable olmayacak bunu ... bazı istenmeyen yan etkilere sebep gibi görünüyor . – Spencer