Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GMSMarker icon from center (iOS)

I just switched from Apple Maps to Google Maps. An issue that I can't seem to find an answer to is how do you make the icon for a GMSMarker to start from the center rather then from the bottom of the image.

An example of what I mean is the current location dot icon starts centered at the coordinates it is meant to express. However GMSMarkers icons start from the bottom of the icon.

like image 290
Nicholas Mata Avatar asked Mar 10 '15 04:03

Nicholas Mata


2 Answers

You can change the start position of your marker icon with the property groundAnchor.

Google Maps SDK for iOS documentation:

The ground anchor specifies the point in the icon image that is anchored to the marker's position on the Earth's surface. This point is specified within the continuous space [0.0, 1.0] x [0.0, 1.0], where (0,0) is the top-left corner of the image, and (1,1) is the bottom-right corner.

Example:

The below example rotates the marker 90°. Setting the groundAnchor property to 0.5,0.5 causes the marker to be rotated around its center, instead of its 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_; 
like image 63
adboco Avatar answered Oct 02 '22 14:10

adboco


I figured out how to do it after reading Google Maps Documentation very closely. I believe this is how it was intended to be done.

UIImage *markerIcon = [UIImage imageNamed:@"markericon.png"]; markerIcon = [markerIcon imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, (markerIcon.size.height/2), 0)]; self.marker.icon = markerIcon; 
like image 35
Nicholas Mata Avatar answered Oct 02 '22 15:10

Nicholas Mata