The Google Maps API team updates this changelog with each new release of the Google Maps SDK for iOS. The changelog lists the releases by date and includes any new features, bug fixes or significant performance improvements.
Consult the getting started guide for information on how to download the most recent version of the Google Maps SDK for iOS.
Version 1.10.2 - August 2015
- Fixed a crash releasing a map view while in background. (Issue 8200.)
- Resolved a conflict with apps using gtm-session-fetcher resumable downloads.
- Recompiled with Xcode 6.4 to avoid some bugs in Xcode 6.3 compiler.
- Updated GoogleMaps.bundle info.plist to avoid triggering new checks in pre-submission verification. (Issue 8488.)
Version 1.10.1 - June 2015
- Fixed an issue where instantiating GMSPlacesClient triggered a request to the user to enable Bluetooth on the device.
- Miscellaneous improvements to the GMSPlacePicker UI.
Version 1.10.0 - May 2015
- The Google Places API for iOS is now included in the SDK framework, so you can connect people to places in your iOS apps. If you want to use the Google Places API for iOS in your project, please refer to the getting started guide.
- CocoaPods is now the fully-supported means of installing and upgrading the Google Maps SDK for iOS. CocoaPods is an open source dependency manager for Swift and Objective-C Cocoa projects. Below is a short guide to migrating from earlier versions of the Google Maps SDK for iOS. See the getting started guide for full instructions.
- A new
GMSUISettingsallows you to control whether the user can scroll by panning during multi-touch rotate or zoom gestures. (Issue 7737.)
GMSPanoramaViewnow supports being used in storyboard.
GMSGeocodernow supports being used while the app is in the background.
GMSServices sharedServicescan now be called while the app is in the background. Note that if the first call to
sharedServicesoccurs while the app is in the background, some async initialization work will be deferred until the first time a map is shown where it will be performed synchronously.
GMSPanoramaViewinit messages can now be handled while the app is in the background. This should remove the last case where
GMSPanoramaViewcould not be used in the background. (Issues 7860, 8007, 8037, 7896, 7951.)
GMSPanormaViewdelegate properties now support
IBOutletfor easier use in storyboard. (Progress towards a fix for issue 6866.)
mapView:didTapMyLocationButtonForMapView:is now correctly called even if no location is available. (Issue 7742.)
GMSGroundOverlaynow shows correctly when rotated if image aspect ratio doesn't match the selected ground region. (Issue 7772.)
- Fixed an issue resizing the map on iOS 8.
- Fixed a rare crash under fast camera changes. (Issue 7885.)
- Map no longer hangs when adding a ground overlay with certain invalid bounds. (Issue 7701.)
- Fixed a crash when texture memory is exhausted by markers. (Issue 7638.)
- Correctly returns the tapped
mapView:didTapOverlay:for tappable circles. (Issue 6890.)
mapView:idleAtCameraPosition:is now called even if there is an ongoing update of the My Location dot. (Issue 7889.)
- Due to an ABI change in the Xcode compiler, Xcode 6.3 is now the only supported version for compiling against Google Maps SDK for iOS. (Issue 7900.)
- The minimum target iOS version for Google Maps SDK for iOS is now 7.0. Version 6.0 is no longer supported.
Versions 1.9.2 and earlier of the Google Maps SDK for iOS were available as a zip file containing a static framework. There was also the option to install recent versions from a CocoaPods pod. From version 1.10.0 onwards, the Google Maps SDK for iOS is available for installation only via CocoaPods.
If you previously installed the Google Maps SDK for iOS from a zip file containing a static framework:
- Remove all references to the previous framework from your Xcode project.
- Follow the instructions in the getting started guide to install the Google Maps SDK for iOS using CocoaPods.
If you previously installed the Google Maps SDK for iOS from the
- Change your pod name to
Version 1.9.2 - February 2015
Download version 1.9.2.
- Show correct characters for Myanmar place labels. (Issue 7576)
- Fixed a small memory leak related to font registration. (Issue 7559)
- Fixed a large memory leak in rare cases where My Location is enabled and the user rotates the screen.
- Correctly show ground overlays defined by zoom level which extend across more than 180 degrees of longitude.
- Allow selected marker to be set during
mapView:didTapAtCoordinate:. (Issue 7222)
- Throw exception rather than crash when map services are initialized while the application is in the background.
mapView:idleAtCameraPosition:even for swipe motions which last less than 30ms. (Issue 7206)
- Correctly handle animations starting while a gesture is decelerating. (Issue 7348)
- Always return an error from
GMSPanoramaServicecallbacks if the panorama is nil.
- Don't attempt to navigate to an empty panorama if
moveNearCoordinate:resolves to nil. (Issue 7109)
Version 1.9.1 - December 2014
Download version 1.9.1.
- Added workaround for false positive on
userEmailprivate selector. (Issue 7310)
- Improved handling of info windows for iPhone 6+ running applications in scaled mode. (Issue 7323)
Version 1.9.0 - October 2014
Download version 1.9.0.
- Support for iOS 8.
- Support for iPhone 6/6+. (Issue 7140)
- Support for Swift.
- UI elements have been updated for material design.
- Fixed some memory reclamation issues.
- Improved handling of application background state transition.
- In order to improve compatibility with Swift, two geometry library
functions have been renamed to avoid function overloading.
The new names are
Version 1.8.1 - May 2014
Download version 1.8.1.
- Resolved GMSTileLayer not displaying. (Issue 6686)
- Resolved a rare case where an app would crash when displaying polylines while accessibility features are enabled. (Issue 6689)
mapView:willMove:is no longer called alongside a tap gesture. (Issue 6702)
- Resolved symbol collisions with the Protocol Buffer library.
Version 1.8.0 - May 2014
Version 1.8.0 has been replaced by version 1.8.1 and is no longer available for download.
- Resolved threading deadlock prominent on iPhone 4 running iOS 7.1 or later. (Issue 6484, Issue 6524)
GMSMapViewcorrectly releases some shared GL state previously causing memory leak. (Issue 5941, Issue 6265, Issue 6629)
GMSPolylineno longer crashes in some cases where its path contained more than 1024 segments. (Issue 6542)
- The delegate method
mapView:idleAtCameraPosition:is now only called once all user gestures are complete. (Issue 5718)
- The Google Maps SDK for iOS now includes fonts for languages currently
unsupported by the iOS system, such as Khmer. (Issue 5228)
- These fonts may be safely removed from your
GoogleMaps.frameworkif you have no interest in these regions, but some text may render as "[?]".
- These fonts may be safely removed from your
Version 1.7.2 - March 2014
Download version 1.7.2.
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.
- 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
GMSPanoramaViewconstruction 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.
- 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
GMSStyleSpaninstances, configuring a unique color or gradient over an arbitrary number of segments.
- Gradient or color may be specified via a
GMSPathprovides a helper category to determine distance along a path.
GMSStyleSpanshelper to apply repeated styles along a polyline.
- Each polyline may be drawn with many
GMSGeocodernow provides structured addresses via
- Added mutable version of
- Delegate method for user tapping the My Location button.
GMSMapPointfor 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.
GMSPolylinewidth is much closer to screen width. (Issue 5788, Issue 5265)
GMSPolylineperformance and memory improvements. (Issue 4904)
- Reduced memory use of OpenGL textures.
- Floor picker is positioned correctly when My Location button is disabled. (Issue 5742)
GMSMapViewnow correctly accounts for padding. (Issue 6080)
- To align with other Google Maps APIs,
GMSMapViewno longer provides helper methods to retrieve previously added overlays, such as
Version 1.6.2 - January 2014
Download Version 1.6.2.
- 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 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.
- 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
CGFloatto either a
doublewhere it was more appropriate.
- Added the ability to restrict min and max zoom on
GMSMapView. (Issue 5882)
- Added opacity on
- Core Animation on
GMSMapViewnow requires model values to be set
- Info windows and tappable regions now rotate correctly with markers. (Issue 5896, Issue 5969)
- Padding on a
GMSMapViewis no longer clamped to its bounds (useful if setting padding on an initially zero-sized map). (Issue 5864)
- Copyright information now animates when changing
GMSMapViewsize or padding.
- Info windows are removed if their
GMSMarkeris 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
Version 1.5 - September 2013
Download Version 1.5.
- This release officially supports iOS 7, and requires iOS 6.0 or later (iOS 5.1 is no longer supported).
- The 'animated' field on
GMSMarkeris now known as
appearAnimation, and may be set to
- The Google Maps SDK for iOS now ships with an
armv7sslice. (Issue 4745)
- Several new features for
- Markers can be made draggable using the
draggableproperty, and new drag delegate methods have been added to
GMSMapViewDelegate. (Issue 4975)
GMSMarkerLayer, a custom
GMSMarkerthat supports animation of marker position and rotation. (Issue 4951, Issue 5743)
- Changing a markers
positionwill 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.
GMSMarkernow supports the images and duration properties, and will animate images with multiple frames.
alignmentRectInsets, and will adjust
infoWindowAnchor, and the tappable region. (Issue 5729)
- Markers can be made draggable using the
- 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)
GMSPanoramaServicenow support searching for panoramas with custom radius.
GMSMapView, allowing construction of a
GMSCameraPositionfor the map from a specified
- The "My Location" button now clips within
GMSMapView. (Issue 5764)
- Reduced memory usage of
GMSMapViewthrough less aggressive tile caching. (Issue 5202)
- Reduced the time taken to obtain
GMSServicesby moving some startup tasks to a background thread; obtaining this object early in your application (before creating a
GMSMapViewor 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:
- 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.
animatedproperty of GMSMarker has been replaced with the new field:
appearAnimation. To maintain previous behavior, replace all references to the
animatedproperty as follows:
marker.animated = YES;
Should be replaced with:
marker.appearAnimation = kGMSMarkerAnimationPop;
Changes to the
positionproperty 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 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
- 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
- Tappable markers inside
panoramaView:didTapMarker:delegate method on
GMSPanoramaViewDelegate. (Issue 5622)
GMSPanoramaLayer, a custom
GMSPanoramaViewthat supports animation of the panorama camera.
GMSPanoramaCamerasupports 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)
GMSTileLayernow supports high DPI tiles for use on a Retina device. (Issue 5402)
GMSMapView.camerais now observable via KVO.
GMSCameraUpdate. (Issue 5475)
- The default behavior of a
GMSMapViewto consume all gestures within its bounds may now be disabled via
consumesGesturesInView. (Issue 5552)
GMSGeometryUtilsto include additional helper methods.
GMSServicesmay 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
- 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
- Reduced memory footprint of
- Touch target for
GMSMarkersmatches the size and shape of the marker when the
GMSMapViewis tilted. (Issue 5273)
GMSMapViewwill no longer render a single frame of black in some cases (noticable e.g., inside
- 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
GMSGroundOverlaysizing that prevented some images from displaying. (Issue 5663)
GMSCameraUpdatenow correctly applies padding to all edges of the bounds; previously it used 1/2 padding on each edge.
Version 1.4.0 - July 2013
- Support for Google Street View imagery, with coverage in 50+ countries.
GMSPanoramaView, a viewer for Street View imagery, that enables both programmatic and user control.
GMSMarkers can be shared between
GMSPanoramaServicemay 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
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
zIndexproperty on all overlays. Z-Indexes are calculated in two groups:
GMSMarkers and all other overlays.
GMSGeometryUtilsmethods for heading, distance, offset etc. with respect to points on the Earth.
- To align with other Google Maps APIs,
GMSGroundOverlayno longer supports the
zoomLevelproperty. You can use the helper method
groundOverlayWithPosition:icon:zoomLevel:to migrate existing code.
- Improved the tappability of
- The compass now disappears when the map returns to zero bearing for any reason, including animation.
- Resolved crash issue when creating a zero-sized
- Resolved an issue where active gestures could cause a
GMSMapViewto not be released until deceleration completed.
- Info windows no longer allow taps to pass through them.
- Accessibility elements on
GMSMapVieware 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:
If your application relies on the accessibility elements of
GMSMapView, set the
mapView_.accessibilityElementsHidden = NO;
Replace direct references to the
zoomLevelproperty 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
- Shows all tiles when animating across the antimeridian
- Performance improvements while zooming
- Touches are consumed more agressively by
- Fixed constructing a
- Restores OpenGL state correctly in
GMSMapViewin applications that also use
Version 1.3 - May 2013
- Support for custom tile overlays (image-based) via
- Anti-aliasing for
- Support for 'invisible' base map tiles via
- Basic support for
- 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
GMSPolygonnow support greater precision at high zoom
GMSPolygonuse the correct alpha values
- Touches are consumed by
GMSMapView, allowing use within objects such as a scroll view
Version 1.2.2 - April 2013
- Tappable regions for
- Overlays are no longer able to render on half pixels.
- Ground overlays appear underneath the My Location dot.
strokeColoris no longer erroneously deallocated.
Version 1.2 - April 2013
- You can now create overlays directly, without the need for an associated
options class. The
GMS...Optionsclasses have been removed from this release.
- Map overlays, such as
GMSPolyline, now inherit from a shared
- Added support for two new overlays,
GMSPolylinehave been renamed to
- Overlay types may now be subclassed.
- Additional helper methods have been added to
includingmethod has been renamed to
GMSMarkermay be animated when added to a map.
GMSCameraUpdateto create camera update objects, including operations to set a camera that presents a specified
GMSUISettingsmay be used to add a compass or "My Location" button (disabled by default).
- Non-marker overlay types are tappable (see
- The default marker image has been changed to the Google Maps for iOS marker.
markerImageWithColor:to create tinted versions of the default marker.
GMSMapView, now supports modification of its camera properties, allowing for advanced animation effects.
visibleRegionnow reports correctly sized region on Retina Devices.
- Double-tap to zoom now centers around tapped point.
- Disabling pan via
UISettingsnow prevents movement with zoom gestures.
GMSPolylineperformance is improved for large polylines.
GMSMapViewmay be subclassed.
- My Location dot appears underneath markers.
- Performance improvements when using the My Location dot.
- Grayscale polylines now render correctly.
GMSMapViewlayer 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:
- Replace references to the
strokeColor. The behavior is otherwise the same.
- Replace calls to the
GMSCoordinateBoundswith a call to
- 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
GMSPolylineare now concrete classes, not protocols. Specify them as
GMSMarker *, instead of
- Add an overlay to the map by setting its
mapproperty instead of calling the
- Remove an overlay from the map by setting its
nil(rather than calling
- Values previously set on properties of an options object should now be set on the object itself.
- Remove all references to
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
- Updated the SDK to use libc++ instead of libstdc++.
- Improved support for including a
GLKViewin 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:
- In the Project Navigator, replace the previous framework with the most recent framework.
- Select your project from the Project Navigator, and choose your application's target.
- Open the Build Phases tab, and within Link Binary with Libraries:
- Recompile your project.
Version 1.1.1 - March 2013
- 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
GMSMapViewcould return a
GMSMapViewinstances no longer 'camera crosstalk'.
- The SDK contained unresolved external references.
GMSMarkerwith an empty title and snippet no longer shows an empty info window.
Version 1.1 - February 2013
- The points of a
GMSPolylineOptions) are now specified as a
GMSPathand built via a
GMSMutablePath, rather than
GMSPolylinemay now be specified as geodesic.
animateToLocation:now clamp/wrap latitude/longitude respectively; similarly, bearing is clamped to
0 <= bearing < 360
GMSGroundOverlaymay be modified after creation.
GMSPolylinemay cross the antimeridian
- Resolved a marker sorting issue.
Version 1.0.2 - January 2013
- GMSCamera was changed to GMSCameraPosition
- Removed requirement to call start/stopRendering
- Improved texture memory handling
- Added UISettings to control gesture availability
- Added Ground Overlays
- 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.