Search code examples
iosgoogle-mapsgoogle-maps-markerscentergmsmapview

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.


Solution

  • 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_;