Google Maps SDK for iOS

Google Maps SDK for iOS Release Notes

The Google Maps API team will update this changelog with each new release of the Google Maps SDK for iOS. The changelog will list releases by date and will include any new features, bug fixes or significant performance improvements.

Consult the Getting Started documentation for information on how to download the most recent version of the Google Maps SDK for iOS.

Version 1.7.2 - March 2014

Download version 1.7.2.

Resolved issues:

  • GMSPolyline's are no longer grayscale on iOS 7.1.

Version 1.7.1 - March 2014

Version 1.7.1 has been replaced by version 1.7.2 and is no longer available for download.

Resolved issues:

  • Heading will only appear on My Location dot when available.
  • Better reduction of colors on gradient or colored polylines at low zoom. (Issue 6386)
  • The search radius is now respected when retrieving a GMSPanorama object. via GMSPanoramaService and on GMSPanoramaView construction or move.

Version 1.7 - February 2014

Version 1.7 has been replaced by version 1.7.2 and is no longer available for download.

Features

  • Styled polylines: additional color options via GMSPolyline, including gradients and colors for any number of polyline segments. (Issue 4856)
    • Each polyline may be drawn with many GMSStyleSpan instances, configuring a unique color or gradient over an arbitrary number of segments.
    • Gradient or color may be specified via a GMSStrokeStyle.
    • GMSPath provides a helper category to determine distance along a path.
    • GMSStyleSpans helper to apply repeated styles along a polyline.
  • GMSGeocoder now provides structured addresses via GMSAddress, deprecating GMSReverseGeocodeResult.
  • Added mutable version of GMSCameraPosition, GMSMutableCameraPosition.
  • Delegate method for user tapping the My Location button.
  • Added GMSMapPoint for linear interpolation between points in Mercator space on the Earth.
  • My Location dot now shows compass arrow. (Issue 5325)
  • 3D building data is newly available for many places on the Earth.

Resolved issues:

  • GMSPolyline width is much closer to screen width. (Issue 5788, Issue 5265)
  • GMSPolyline performance and memory improvements. (Issue 4904)
  • Reduced memory use of OpenGL textures.
  • Floor picker is positioned correctly when My Location button is disabled. (Issue 5742)
  • cameraForBounds:insets: on GMSMapView now correctly accounts for padding. (Issue 6080)

Notes:

  • To align with other Google Maps APIs, GMSMapView no longer provides helper methods to retrieve previously added overlays, such as markers, polylines and groundOverlays.

Version 1.6.2 - January 2014

Download Version 1.6.2.

Resolved issues:

  • Resolved a gesture bug effecting full-screen maps on iOS 7. (Issue 6216)
  • Resolved an issue where overlays were sometimes not initially tappable. (Issue 6143)

Version 1.6.1 - December 2013

Version 1.6.1 has been replaced by version 1.6.2 and is no longer available for download.

Resolved issues:

  • Resolved a memory leak involving vector tiles.
  • Markers not immediately added to a GMSMapView no longer fail to appear when configured at a later point. (Issue 6092)
  • GMSMapView/GMSPanoramaView will now continue to render while your application is resigned. (Issue 5546)

Version 1.6 - November 2013

Version 1.6 has been replaced by version 1.6.2 and is no longer available for download.

Features

  • The Google Maps SDK for iOS now supports 64-bit architectures. Both 32 and 64 bit binaries are built into the single GoogleMaps framework. The correct binary will be selected by Xcode based on your build settings. For instructions on building 64-bit applications, please refer to Apple’s 64-bit transition guide. (Issue 5806)
  • Changed some instances of CGFloat to either a float or double where it was more appropriate.
  • Added the ability to restrict min and max zoom on GMSMapView. (Issue 5882)
  • Added opacity on GMSTileLayer and GMSMarker.
  • Core Animation on GMSMapView now requires model values to be set

Resolved issues:

  • Info windows and tappable regions now rotate correctly with markers. (Issue 5896, Issue 5969)
  • Padding on a GMSMapView is no longer clamped to its bounds (useful if setting padding on an initially zero-sized map). (Issue 5864)
  • Copyright information now animates when changing GMSMapView size or padding.
  • Info windows are removed if their GMSMarker is removed from a GMSMapView. (Issue 5856)
  • My Location dot uses the last known location information when enabled. (Issue 5590)
  • Resolved two rare race conditions that were causing crashes. (Issue 5795)
  • Resolved an issue where retain cycles were causing memory leaks on GMSMapView and GMSPanoramaView.

Version 1.5 - September 2013

Download Version 1.5.

Features

  • This release officially supports iOS 7, and requires iOS 6.0 or later (iOS 5.1 is no longer supported).
  • The 'animated' field on GMSMarker is now known as appearAnimation, and may be set to kGMSMarkerAnimationNone (default) or kGMSMarkerAnimationPop.
  • The Google Maps SDK for iOS now ships with an armv7s slice. (Issue 4745)
  • Several new features for GMSMarker instances:
    • Markers can be made draggable using the draggable property, and new drag delegate methods have been added to GMSMapViewDelegate. (Issue 4975)
    • Added GMSMarkerLayer, a custom CALayer subclass for GMSMarker that supports animation of marker position and rotation. (Issue 4951, Issue 5743)
    • Changing a markers position will cause the marker to animate to the new location.
    • Added support for markers that appear flat against the Earth's surface.
    • Added rotation property to rotate markers around their ground anchor.
    • The UIImage used by GMSMarker now supports the images and duration properties, and will animate images with multiple frames.
    • The UIImage used by GMSMarker now supports alignmentRectInsets, and will adjust groundAnchor, infoWindowAnchor, and the tappable region. (Issue 5729)
  • Added padding on GMSMapView, allowing you to indicate parts of the map that may be obscured by other views; setting padding re-positions the standard map controls, and the camera and camera updates will use the padded region. (Issue 5466, Issue 5728)
  • GMSPanoramaView and GMSPanoramaService now support searching for panoramas with custom radius.
  • Added cameraForBounds:insets: to GMSMapView, allowing construction of a GMSCameraPosition for the map from a specified GMSCoordinateBounds.

Resolved issues:

  • The "My Location" button now clips within GMSMapView. (Issue 5764)
  • Reduced memory usage of GMSMapView through less aggressive tile caching. (Issue 5202)
  • Reduced the time taken to obtain GMSServices by moving some startup tasks to a background thread; obtaining this object early in your application (before creating a GMSMapView or other objects) may improve performance. (Issue 5640)
  • Polylines may now be drawn twice, as required, if they have very large longitudinal span.
  • Resolved a rounding error with very small polygons far from latlng (0,0). (Issue 5413, Issue 5654)

Migration from 1.4.x:

  1. Version 1.5 requires iOS 6.0 or later. Applications that must support iOS 5.1 should continue to use the most recent 1.4.x release.
  2. The animated property of GMSMarker has been replaced with the new field: appearAnimation. To maintain previous behavior, replace all references to the animated property as follows:

    marker.animated = YES;
    

    Should be replaced with:

    marker.appearAnimation = kGMSMarkerAnimationPop;
    
  3. Changes to the GMSMarker.position property are now animated. You can disable this animation with the following sample code.

    [CATransaction begin];
    [CATransaction setDisableActions:YES];
    marker.position = ...;
    [CATransaction commit];
    

Version 1.4.3 - August 2013

Resolved issues:

  • Resolved several causes of modifying markers that could cause 'ghost' markers to appear. (Issue 5751)
  • Resolved excess texture use when modifying animated markers. (Issue 5756)

Version 1.4.2 - August 2013

Resolved issues:

  • Fixed a rare case where modifying an animated marker could cause 'ghost' markers to appear.
  • Prioritized markers over other overlays for tappability.

Version 1.4.1 - August 2013

Features

  • Tappable markers inside GMSPanoramaView using the panoramaView:didTapMarker: delegate method on GMSPanoramaViewDelegate. (Issue 5622)
  • Added GMSPanoramaLayer, a custom CALayer subclass for GMSPanoramaView that supports animation of the panorama camera.
  • GMSPanoramaCamera supports custom field of view (FOV).
  • Programmatic access to the floor picker allows you to enable or disable the selector, and set which floor should be displayed. (Issue 5623, [Issue 5666])
  • GMSTileLayer now supports high DPI tiles for use on a Retina device. (Issue 5402)
  • GMSMapView.camera is now observable via KVO.
  • Added fitBounds:withEdgeInsets: to GMSCameraUpdate. (Issue 5475)
  • The default behavior of a GMSMapView to consume all gestures within its bounds may now be disabled via consumesGesturesInView. (Issue 5552)
  • Expanded GMSGeometryUtils to include additional helper methods.
  • GMSServices may be held by applications to maintain cache and connection to Google; this can improve performance when creating and destroying many maps.
  • Improved visuals when resizing a GMSMapView via UIView animation methods.

Resolved issues:

  • Fixed crash bug during memory warning (related to indoor). (Issue 5637)
  • Fixed crash bug with indoor maps on iOS 5.1. (Issue 5664)
  • Performance improvements when using hundreds of GMSMarkers.
  • Reduced memory footprint of GMSMapView.
  • Touch target for GMSMarkers matches the size and shape of the marker when the GMSMapView is tilted. (Issue 5273)
  • GMSMapView will no longer render a single frame of black in some cases (noticable e.g., inside UISplitViewController on iPad).
  • Street View imagery is now adjusted correctly for tilted base data (e.g., data taken by a Street View car on a slope).
  • Geodesic interpolation has been tweaked to be more correct.
  • Fixed incorrect GMSGroundOverlay sizing that prevented some images from displaying. (Issue 5663)
  • fitBounds:withPadding: on GMSCameraUpdate now correctly applies padding to all edges of the bounds; previously it used 1/2 padding on each edge.

Version 1.4.0 - July 2013

Features

  • Support for Google Street View imagery, with coverage in 50+ countries.
    • Added GMSPanoramaView, a viewer for Street View imagery, that enables both programmatic and user control.
    • GMSMarkers can be shared between GMSMapView and GMSPanoramaView.
    • GMSPanoramaService may be used to load panorama data ahead of display.
  • Indoor floor plans and a floor selector control will now be displayed when available.
  • Updated map design inspired by the new Google Maps.
  • Info windows now show at 1:1 resolution on the screen regardless of tilt.
  • Additional delegate methods on GMSMapViewmapView:willMove: and mapView:idleAtCameraPosition: — allow you to detect the start and end of camera movement, respectively.
  • An improved look and feel for polylines and polygon stroke.
  • Added a zIndex property on all overlays. Z-Indexes are calculated in two groups: GMSMarkers and all other overlays.
  • Added GMSGeometryUtils methods for heading, distance, offset etc. with respect to points on the Earth.
  • To align with other Google Maps APIs, GMSGroundOverlay no longer supports the zoomLevel property. You can use the helper method groundOverlayWithPosition:icon:zoomLevel: to migrate existing code.

Resolved issues:

  • Improved the tappability of GMSPolygon.
  • The compass now disappears when the map returns to zero bearing for any reason, including animation.
  • Resolved crash issue when creating a zero-sized GMSPolygon.
  • Resolved an issue where active gestures could cause a GMSMapView to not be released until deceleration completed.
  • Info windows no longer allow taps to pass through them.
  • Accessibility elements on GMSMapView are now hidden by default. See the migration steps below if you wish to enable these elements.

Migration from 1.3.x:

Version 1.4 introduces changes to accessibility and ground overlays. If you make use of either of these in your application, you will have to modify any existing code as follows:

  1. If your application relies on the accessibility elements of GMSMapView, set the accessibilityElementsHidden property to NO.

    mapView_.accessibilityElementsHidden = NO;
    
  2. Replace direct references to the GMSGroundOverlay zoomLevel property with the new groundOverlayWithPosition:icon:zoomLevel: convenience method. Alternatively, you can position the image with a geographic bounds. The below code samples are equivalent.

Version 1.3.x assigned zoomLevel directly.

GMSGroundOverlay *groundOverlay = [[GMSGroundOverlay alloc] init];
groundOverlay.icon = [UIImage imageNamed:@"newark_nj_1922.jpg"];
groundOverlay.position = CLLocationCoordinate2DMake(40.742, -74.174);
groundOverlay.zoomLevel = 13.6;

In version 1.4 and later, you can use the convenience method.

GMSGroundOverlay *groundOverlay = [GMSGroundOverlay groundOverlayWithPosition:newark
                                                                 icon:[UIImage imageNamed:@"newark_nj_1922.jpg"]
                                                            zoomLevel:13.6];

From this release, we recommend that you position your ground overlay by defining its south west and north east corners.

CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655);
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544);
GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest
                                                                        coordinate:northEast];
UIImage *icon = [UIImage imageNamed:@"newark_nj_1922.jpg"];
GMSGroundOverlay *overlay =
    [GMSGroundOverlay groundOverlayWithBounds:overlayBounds
                                         icon:[UIImage imageNamed:@"newark_nj_1922.jpg"]];

Version 1.3.1 - June 2013

Resolved issues:

  • Shows all tiles when animating across the antimeridian
  • Performance improvements while zooming
  • Touches are consumed more agressively by GMSMapView
  • Fixed constructing a GMSMutablePath via pathFromEncodedPath:
  • Restores OpenGL state correctly in GMSMapView in applications that also use GLKView

Version 1.3 - May 2013

Features

  • Support for custom tile overlays (image-based) via GMSTileLayer.
  • Anti-aliasing for GMSPolyline and GMSPolygon stroke.
  • Support for 'invisible' base map tiles via kGMSTypeNone.
  • Basic support for CAAnimationGroup on GMSMapLayer.

Resolved issues:

  • Performance improvements with large numbers of overlays.
  • Resolved excessive memory use when device was locked/unlocked while an info window was displayed
  • Animations are stopped when a user performs a gesture
  • Animations stop any active gesture (e.g., a pan)
  • Resolved crash issue with setting/clearing My Location dot
  • GMSPolyline and GMSPolygon now support greater precision at high zoom
  • GMSPolyline and GMSPolygon use the correct alpha values
  • Touches are consumed by GMSMapView, allowing use within objects such as a scroll view

Version 1.2.2 - April 2013

Resolved issues:

  • Tappable regions for GMSMarker fixed.
  • Overlays are no longer able to render on half pixels.
  • Ground overlays appear underneath the My Location dot.
  • GMSPolyline strokeColor is no longer erroneously deallocated.

Version 1.2 - April 2013

Features

  • You can now create overlays directly, without the need for an associated options class. The GMS...Options classes have been removed from this release.
  • Map overlays, such as GMSMarker and GMSPolyline, now inherit from a shared GMSOverlay class.
  • Added support for two new overlays, GMSPolygon and GMSCircle.
  • The width and stroke properties of GMSPolyline have been renamed to strokeWidth and strokeColor to parallel GMSPolygon and GMSCircle.
  • Overlay types may now be subclassed.
  • Additional helper methods have been added to GMSCoordinateBounds. The including method has been renamed to includingCoordinate, added includingBounds.
  • A GMSMarker may be animated when added to a map.
  • GMSCameraUpdate to create camera update objects, including operations to set a camera that presents a specified GMSCoordinateBounds
  • GMSUISettings may be used to add a compass or "My Location" button (disabled by default).
  • Non-marker overlay types are tappable (see GMSMapViewDelegate).
  • The default marker image has been changed to the Google Maps for iOS marker.
  • Added markerImageWithColor: to create tinted versions of the default marker.
  • GMSMapLayer, the CALayer subclass for GMSMapView, now supports modification of its camera properties, allowing for advanced animation effects.
  • semaphore_wait_trap issue resolved.

Resolved issues:

  • visibleRegion now reports correctly sized region on Retina Devices.
  • Double-tap to zoom now centers around tapped point.
  • Disabling pan via UISettings now prevents movement with zoom gestures.
  • GMSPolyline performance is improved for large polylines.
  • GMSMapView may be subclassed.
  • My Location dot appears underneath markers.
  • Performance improvements when using the My Location dot.
  • Grayscale polylines now render correctly.
  • Calling renderInContext: on the GMSMapView layer now renders correctly; this allows for snapshots and UI effects.
  • The default behavior when a marker is tapped has been updated to also pan the camera to the marker's position.

Migration from 1.1.x:

When upgrading to the most recent version, you will have to modify any existing code as follows:

  1. Replace references to the width and stroke properties of GMSPolyline with strokeWidth and strokeColor. The behavior is otherwise the same.
  2. Replace calls to the including method of GMSCoordinateBounds with a call to includingCoordinate.
  3. Version 1.2 simplifies overlays (items added to the map) by allowing you to set overlay options directly on the object, instead of first creating an overlay options object. This change impacts existing code as follows:
    • Remove all references to GMSGroundOverlayOptions, GMSMarkerOptions or GMSPolylineOptions.
    • GMSGroundOverlay, GMSMarker and GMSPolyline are now concrete classes, not protocols. Specify them as GMSMarker *, instead of id<GMSMarker>.
    • Add an overlay to the map by setting its map property instead of calling the add...Overlay method.
    • Remove an overlay from the map by setting its map property to nil (rather than calling remove).
    • Values previously set on properties of an options object should now be set on the object itself.

Below is an example of how to add a polyline to the map in version 1.1:

GMSPolylineOptions *lineOptions = [GMSPolylineOptions options];

GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(37.35, -122.0)];
[path addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
lineOptions.color = [UIColor blueColor];
lineOptions.path = path;

id<GMSPolyline> line = [mapView_ addPolylineWithOptions:lineOptions];

The equivalent code in version 1.2.0 and later is:

GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(37.35, -122.0)];
[path addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];

GMSPolyline *line = [GMSPolyline polylineWithPath:path];
line.strokeColor = [UIColor blueColor];
line.map = mapView_;

Version 1.1.2 - March 2013

Resolved issues:

  • Updated the SDK to use libc++ instead of libstdc++.
  • Improved support for including a GMSMapView and GLKView in the same app.

Migrating from v1.1.1 or earlier:

Version 1.1.2 and later use libc++ instead of libstdc++. To upgrade to the most recent version of the SDK, do the following:

  1. In the Project Navigator, replace the previous framework with the most recent framework.
  2. Select your project from the Project Navigator, and choose your application's target.
  3. Open the Build Phases tab, and within Link Binary with Libraries:
    • Remove libstdc++.dylib.
    • Add libc++.dylib.
  4. Recompile your project.

Version 1.1.1 - March 2013

Features

  • Improved the messages that are logged to the console when a invalid key is used or a connection error occurs.
  • Added multi-line snippet support for GMSMarker.

Resolved issues:

  • GMSMapView could return a nil camera.
  • Multiple GMSMapView instances no longer 'camera crosstalk'.
  • The SDK contained unresolved external references.
  • A GMSMarker with an empty title and snippet no longer shows an empty info window.

Version 1.1 - February 2013

Features

  • The points of a GMSPolyline (and GMSPolylineOptions) are now specified as a GMSPath and built via a GMSMutablePath, rather than addVertex: etc
  • GMSPolyline may now be specified as geodesic.
  • animateToCameraPosition: method on GMSMapView.
  • GMSProjection provides containsCoordinate: and visibleRegion helpers.

Resolved issues:

  • GMSCameraPosition and animateToLocation: now clamp/wrap latitude/longitude respectively; similarly, bearing is clamped to 0 <= bearing < 360
  • GMSGroundOverlay may be modified after creation.
  • GMSPolyline may cross the antimeridian
  • Resolved a marker sorting issue.

Version 1.0.2 - January 2013

Features

  • GMSCamera was changed to GMSCameraPosition
  • Removed requirement to call start/stopRendering
  • Improved texture memory handling
  • Added UISettings to control gesture availability
  • Added Ground Overlays

Resolved issues:

  • Fixed: GMSMapViewDelegate's mapView:didTapInfoWindowOfMarker: method is unreliable
  • Selected markers are automatically brought to front
  • Polylines now render at a constant size regardless of the zoom level

Version 1.0.1 - December 2012

  • Initial release alongside Google Maps for iOS.
  • Support for 3D maps, rotation, tilt, 3D buildings, markers, polylines.
  • Satellite and terrain tiles, traffic data, and other features.

Authentication required

You need to be signed in with Google+ to do that.

Signing you in...

Google Developers needs your permission to do that.