<br />

This archive lists Maps SDK for Android release notes for 2024 and earlier. For 2025
and 2026 releases, see the
[Maps SDK for Android release notes](https://developers.google.com/maps/documentation/android-sdk/release-notes.md.txt).

## July 30, 2024

19.0.0 Feature You can now use data-driven styling for datasets with your apps. Data-driven styling for datasets lets you upload your own geospatial datasets, apply custom styling to their data features, and display those data features on maps.

For more information and examples, see [Data-driven styling for datasets](https://developers.google.com/maps/documentation/android-sdk/dds-datasets/overview.md.txt).
19.0.0 Feature The Maps SDK now supports data-driven styling for boundaries. Data-driven styling for boundaries lets you access Google's polygons for administrative boundaries, apply styling to boundary polygons, display them on your maps.

For more information, see [Data-driven styling for boundaries](https://developers.google.com/maps/documentation/android-sdk/dds-boundaries/overview.md.txt).

## June 25, 2024

19.0.0 Announcement **Release 19.0.0**

The Maps SDK for Android version 19.0.0 is now available. See the [Release Notes](https://developers.google.com/maps/documentation/android-sdk/release-notes.md.txt) for information about this release and for all previous releases.

If you are a new user, see [Set Up in the Google Cloud Console](https://developers.google.com/maps/documentation/android-sdk/cloud-setup) to start the installation process.

If you are an existing customer, see the upgrade instructions at [Versions](https://developers.google.com/maps/documentation/android-sdk/versions.md.txt).
19.0.0 Feature Updated the default colors for maps to match the new colors that are already available in the Google Maps app. For more information, see [New map style for Google Maps Platform](https://developers.google.com/maps/new-map-style-opt-in).
19.0.0 Feature You can now set the map color scheme to dark, light, or to use the system settings.

For more information and examples, see [Configure a map](https://developers.google.com/maps/documentation/android-sdk/configure-map.md.txt).
19.0.0 Change When you choose to upgrade your app to Maps SDK for Android version 19.0.0, you must target a `minSdkVersion` of 21 (Android version 5.0.x, Lollipop) or higher.
For example, in your app's `build.gradle` file:

    android {
        compileSdk 34
         
        defaultConfig {
            minSdk 21
            // ...
        }
    }

For more information, see [Set up an Android Studio project](https://developers.google.com/maps/documentation/android-sdk/config.md.txt).
19.0.0 Deprecated Because we will be decommissioning the legacy map renderer, the `MapsInitializer.Renderer.LEGACY` value for the [`MapsInitializer.initialize()`](https://developers.google.com/android/reference/com/google/android/gms/maps/MapsInitializer.md.txt) method in the Maps SDK for Android
is deprecated as of Maps SDK for Android v19.0.0.

Instead, use [the latest map renderer](https://developers.google.com/maps/documentation/android-sdk/renderer.md.txt).

## March 11, 2024

All versions Change In March of 2024, Google began to automatically update all the deployed apps on a device to use the upgraded renderer. Automatic updates will occur incrementally over the coming months based on the device, meaning your device might not be updated right away.

Automatic updates apply to **all apps** running on devices that meet the [minimum device requirements](https://developers.google.com/maps/documentation/android-sdk/renderer.md.txt#supported-devices), **regardless of the version of the Maps SDK for Android** used by the app.

If you encounter any issues, please file it by using our public issue tracker: <https://issuetracker.google.com/savedsearches/6719309>.

For more information, see [New Map Renderer](https://developers.google.com/maps/documentation/android-sdk/renderer.md.txt).

## February 20, 2024

18.2.0 Change In the initial release of the upgraded map renderer for Maps SDK for Android version 18.2.0, the device hosting the render required 2 GB or more of data storage. That requirement has been removed.

For more information, see [New Map Renderer](https://developers.google.com/maps/documentation/android-sdk/renderer.md.txt).

## December 07, 2023

18.2.0 Feature The Google Maps Platform now offers updated cloud-based maps styling in the Google Cloud Console, enhancing your ability to create a customized map experience for users of your Android applications. Learn more at [New Cloud Styling Overview](https://developers.google.com/maps/documentation/android-sdk/cloud-customization.md.txt).

## October 18, 2023

18.2.0 Announcement **Release 18.2.0**

The Maps SDK for Android version 18.2.0 is now available. See the [Release Notes](https://developers.google.com/maps/documentation/android-sdk/release-notes.md.txt) for information about this release and for all previous releases.

If you are a new user, see [Set Up in the Google Cloud Console](https://developers.google.com/maps/documentation/android-sdk/cloud-setup) to start the installation process.

If you are an existing customer, see the upgrade instructions at [Versions](https://developers.google.com/maps/documentation/android-sdk/versions.md.txt).
18.2.0 Change With the release of version 18.2.0 of the Maps SDK for Android, Google switched the default renderer from the legacy renderer to the upgraded map renderer. With version 18.2.0, the map renderer used when you build a new app or rebuild an existing app becomes the upgraded map renderer.

For more information, see [New Map Renderer](https://developers.google.com/maps/documentation/android-sdk/renderer.md.txt).
18.2.0 Feature Support for advanced markers has been added to this release. With advanced markers you can create and customize highly performant markers. Customize the default marker's background, border, and glyph color, and replace the default marker icon with a custom graphic image.

For more information, see the [advanced markers overview](https://developers.google.com/maps/documentation/android-sdk/advanced-markers/overview.md.txt).

## August 29, 2022

18.1.0 Change We have updated the default image used for markers in the Maps SDK for Android. This change applies to all versions of the Maps SDK for Android.

## July 18, 2022

18.1.0 Announcement **Release 18.1.0**

The Maps SDK for Android version 18.1.0 is now available. See the [Release Notes](https://developers.google.com/maps/documentation/android-sdk/release-notes.md.txt) for information about this release and for all previous releases.

If you are a new user, see [Set Up in the Google Cloud Console](https://developers.google.com/maps/documentation/android-sdk/cloud-setup) to start the installation process.

If you are an existing customer, see the upgrade instructions at [Versions](https://developers.google.com/maps/documentation/android-sdk/versions.md.txt).
18.1.0 Announcement With this release of Maps SDK for Android, we have moved the XML feed to a new location. Subscribe to the new location of the XML feed at:

<https://developers.google.com/feeds/maps-sdk-android-release-notes.xml>
18.1.0 Feature Advanced polyline customizations have been released for general availability. For usage details, see
[Polyline customization](https://developers.google.com//maps/documentation/android-sdk/shapes#polyline-customization).
18.1.0 Announcement Google has released a new client library for Maps SDK for Android,
version 18.1.0. To use this new version in your apps, be sure to
[update your dependencies](https://developers.google.com/maps/documentation/android-sdk/versions.md.txt) to
`com.google.android.gms:play-services-maps:18.1.0`.

## January 5, 2022

### Version 18.0.2

Google has released a new client library for Maps SDK for Android,
version 18.0.2. To use this new version in your apps, be sure to
[update your dependencies](https://developers.google.com/maps/documentation/android-sdk/release-notes-archive/versions) to
`com.google.android.gms:play-services-maps:18.0.2`.

**Features:**

- Includes the latest versions of `play-services-base` and `play-services-tasks` to fix the issue described in the [December 09, 2021 (Version 18.0.1) release](https://developers.google.com/maps/documentation/android-sdk/release-notes-archive.md.txt#2021-12-09).

## December 9, 2021

### Version 18.0.1

> [!WARNING]
> The libraries released with this update have known issues that can lead to runtime NPEs (`NullPointerException`) when handling `Task<Void>` results in Kotlin code. We strongly recommend that you instead use the latest version (see release notes above).

**Features:**

- Strict nullability annotations (`@NonNull` and `@Nullable`) are being used
  where previously `@RecentlyNonNull` and `@RecentlyNullable` were used. With
  this change, what once caused a nullness warning will now cause an error
  when building Kotlin code or using Java `null` checking frameworks.

- Removed deprecated fitness constants from
  [Scopes](https://developers.google.com/android/reference/com/google/android/gms/common/Scopes.md.txt).

- Added
  [`withTimeout()`](https://developers.google.com/android/reference/com/google/android/gms/tasks/Tasks.md.txt#withTimeout(com.google.android.gms.tasks.Task&lt;T&gt;,%20long,%20java.util.concurrent.TimeUnit))
  utilty method to
  [Tasks](https://developers.google.com/android/reference/com/google/android/gms/tasks/Tasks.md.txt)

## October 27, 2021

### Version 18.0.0

Google has released a new client library for Maps SDK for Android,
version 18.0.0. To use this new version in your apps, be sure to
[update your dependencies](https://developers.google.com/maps/documentation/android-sdk/release-notes-archive/versions) to
`com.google.android.gms:play-services-maps:18.0.0`.

Maps SDK for Android version 18.0.0 is supported on Android API
Level 19 (Android 4.4, KitKat) and higher. For more information on Android
support, see the
[Google Maps Platform OS version support policy](https://developers.google.com/maps/software-support.md.txt).

**Features:**

- A new map renderer is available for opt-in use, which provides improved
  performance and stability, as well as support for
  [cloud-based maps styling](https://developers.google.com/maps/documentation/android-sdk/maps-customization-overview)
  tied to a [map ID](https://developers.google.com/maps/documentation/android-sdk/get-map-id).

  For opt-in instructions to use the new renderer, see
  [New map renderer](https://developers.google.com/maps/documentation/android-sdk/renderer.md.txt).

  > [!NOTE]
  > **Note:** Usage of cloud-based maps styling is charged against the [Dynamic Maps SKU](https://developers.google.com/maps/billing-and-pricing/pricing.md.txt#dynamic-maps).

  The new renderer will become the default renderer in 2023, at which point
  explicit opt-in will not be required.
- You can now change the map background color for
  [WearOS](https://developers.google.com/maps/documentation/android-sdk/wear.md.txt#implement-a_swipe-to-dismiss-gesture-to-exit-the-app),
  which will be displayed before the actual map tiles load.

- Added `@NonNull` and `@Nullable` annotations in the API surface which
  **may break Kotlin apps that did not previously handle `null` values in
  a safe way** (see
  [Kotlin documentation about Null-safety](https://kotlinlang.org/docs/java-interop.html#null-safety-and-platform-types)).

## August 18, 2021

**Deprecation**

The Beta versions of Maps SDK for Android and iOS are now deprecated and will
be fully decommissioned in late 2022. A supported version of
the Maps SDK for Android and iOS will be made available at least
one year prior to the beta SDK being fully decommissioned, which is estimated
to occur in late 2022.

The use of the mobile Maps SDKs (Android \& iOS) Beta will be degraded per the
following schedule:

**For Android:**

- As of the date of this release note, the Maps SDK for Android Beta (versions 3.0.0 and 3.1.0) client library is deprecated.
- All features of the Beta SDK will be supported in upcoming releases of the Maps SDK for Android distributed as part of the Google Play services SDK.
- Support for the Maps SDK for Android Beta (versions 3.0.0 to and 3.1.0) will cease no earlier than November 2022.

**For iOS:**

- As the date of this release note, the Maps SDK for iOS Beta (versions v3.0.0 and v3.10.0) is deprecated.
- All features of the Beta SDK will be supported in upcoming releases of the Maps SDK for iOS distributed via CocoaPods and Carthage.
- Support for the Maps SDK for iOS Beta (versions v3.0.0 and v3.10.0) will cease no earlier than November 2022.

On all platforms, the Beta SDKs will be fully decommissioned, at least one
year after a supported (non-Beta) version is released. We will communicate
with you again once the new version is released, so that you can start
your migration efforts.

**What do you need to do?**

If you are not currently using features in Beta (maps customization,
marker collision handling, or polyline customization---[Android](https://developers.google.com/maps/documentation/android-sdk/v310-beta.md.txt),
[iOS](https://developers.google.com/maps/documentation/ios-sdk/v310-beta.md.txt)), please update your apps to use
a supported version as soon as possible before the decommission in late 2022.
See the [Android](https://developers.google.com/maps/documentation/android-sdk/start.md.txt) and
[iOS](https://developers.google.com/maps/documentation/ios-sdk/start) documentation for instructions.

> [!NOTE]
> **Note:** For Android, you can use the [Maps V3 BETA Migration Tool](https://github.com/googlemaps/android-v3-migration) to help with migrating from the deprecated Beta version to a supported version.

If you are currently using features in Beta, you should wait for upcoming
releases of the SDKs to migrate to a supported SDK version.

Contact [Google Maps Platform Support](https://developers.google.com/maps/support.md.txt#contact-maps-support)
with any questions.

## April 27, 2021

**Features:**

- Added ["non-semver-breaking"](https://semver.org/#summary) nullability annotations to the API surface.

**Resolved Issues:**

- Added the following declaration to the `AndroidManifest.xml` to support the [Package visibility filtering](https://developer.android.com/training/package-visibility)
  on Android 11 (API level 30) and above. After updating to `com.google.android.gms:play-services-maps:17.0.1`, you can remove the following line from your own `AndroidManifest.xml`.

      <queries>
          <package android:name="com.google.android.apps.maps" />
      </queries>

## February 6, 2019

**Features:**

- Added the `UiSettings.setScrollGesturesEnabledDuringRotateOrZoom(boolean)` and the `UiSettings.isScrollGesturesEnabledDuringRotateOrZoom()` methods, allowing you to set a preference for whether scroll gestures can take place at the same time as a zoom or rotate gesture. If enabled, users can scroll the map while rotating or zooming the map. If disabled, the map cannot be scrolled while the user rotates or zooms the map using gestures. This setting doesn't disable scroll gestures entirely, only during rotation and zoom gestures, nor does it restrict programmatic movements and animation of the camera.

**Resolved Issues:**

- Added the following declaration to the `AndroidManifest.xml` to support the
  Apache HTTP client on Android P and above. After updating to
  `com.google.android.gms:play-services-maps:16.1.0` you can remove this line
  from your own `AndroidManifest.xml`. ([Issue 117591497](https://issuetracker.google.com/issues/117591497))

      <uses-library android:name="org.apache.http.legacy" android:required="false"/>"


## Old Style Removed - November 1, 2018

**Features:**

- Removed support for the old basemap style. The opt-in and opt-out API options in the `AndroidManifest.xml` (see below) are no longer supported. This applies to all versions of the Maps SDK for Android. See the [blog post](https://maps-apis.googleblog.com/2018/02/updated-basemap-style-for-google-maps.html) for more information about the new style.

## October 18, 2018

**Resolved Issues**

- Resolved a StackOverflowError that occurred when viewing areas with many indoor buildings. ([Issue 35829548](https://issuetracker.google.com/issues/35829548))
- Resolved a bug where POI icons were hidden when a custom style that specified icon saturation was applied. ([Issue 65660536](https://issuetracker.google.com/issues/65660536))


## New Style Enabled by Default - June 14, 2018

**Features:**

- Enabled the new basemap style by default. You can still opt-out temporarily
  if you need time to modify your app to accommodate the new style. If you do,
  please follow [Issue 72780606](https://issuetracker.google.com/issues/72780606) which contains the timeline for end of
  support of the previous basemap style. We will be posting updates there as
  they are available.

  To opt-out, add the following tag to your `AndroidManifest.xml` file, within
  the `<application>` tag. The device must have at least Google Play Services
  version 12.0.0 in order for the opt-out to work. If you had previously
  opted-in to the new basemap style, this opt-out tag should replace the
  opt-in tag. See the
  [blog post](https://maps-apis.googleblog.com/2018/02/updated-basemap-style-for-google-maps.html)
  for more information about the new style.

      <meta-data android:name="com.google.android.gms.maps.API_OPTIONS"
          android:value="B3H9HE845CFHYG"/>


## New Style Opt-In - April 12, 2018

**Features:**

- Enabled opt-in for the new basemap style. To opt-in, add the following
  tag to your `AndroidManifest.xml` file, within the `<application>` tags. The
  device must have at least Google Play Services version 12.0.0 in order for
  the opt-in to work. See the
  [blog post](https://maps-apis.googleblog.com/2018/02/updated-basemap-style-for-google-maps.html)
  for more information about the new style.

      <meta-data android:name="com.google.android.gms.maps.API_OPTIONS"
          android:value="B3MWHUG2MR0DQW"/>

## April 10, 2018

**Features**

- Added a mechanism for developers to enable experimental features.

## March 20, 2018

**Features**

- When setting the position of a Street View Panorama, you can now provide a [`StreetViewSource`](https://developers.google.com/android/reference/com/google/android/gms/maps/model/StreetViewSource.md.txt) allowing the search to be restricted to outdoor-only results. Note this feature is experimental and some searches may still include indoor panoramas. For details, see the guide to [Street View](https://developers.google.com/maps/documentation/android-sdk/streetview.md.txt#set_the_location_of_the_panorama).

**Resolved Issues**

- Fixed a bug where [`IndoorBuilding.getDefaultLevelIndex()`](https://developers.google.com/android/reference/com/google/android/gms/maps/model/IndoorBuilding.md.txt#getDefaultLevelIndex()) was wrongly returning the active level index instead.

## November 6, 2017

**Features**

- This release expands the custom styling capabilities for polylines and for the outlines of polygons and circles in lite mode, to match the full API, by adding support for stroke patterns, joint types and caps. See examples in the tutorial on adding [polygons and polylines to represent areas and
  routes](https://developers.google.com/maps/documentation/android-sdk/polygon-tutorial).

## September 18, 2017

**Features**

- Use the new
  [`GoogleMap.OnMyLocationClickListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationClickListener.md.txt)
  to detect when the user clicks the My Location blue dot. ([Issue 35822305](https://issuetracker.google.com/issues/35822305))

      @Override
      public void onMyLocationClick(@NonNull Location location) {
        Toast.makeText(this, "Current location:\n" + location, Toast.LENGTH_LONG).show();
      }

  For details, see the guide to the
  [My Location layer](https://developers.google.com/maps/documentation/android-sdk/location.md.txt#my-location).

**Resolved Issues**

- `IllegalArgumentException: totalAngleRad must be >= 0.0f and <= 2*PI: -2.9516223E-4` occurring when you apply joint type ROUND in polyline options. ([Issue 36777405](https://issuetracker.google.com/issues/36777405))

## June 7, 2017

**Resolved Issues**

- There is no longer a requirement to call `getOpenSourceSoftwareLicenseInfo()`. The Google Play services licensing information is now visible to users in **Android Settings \> Google \> Overflow menu \> Open Source Licenses** , and the `getOpenSourceSoftwareLicenseInfo()` method in the `GoogleApiAvailability` class is deprecated as from v11.0 of the Google Play services SDK. ([Issue 35827189](https://issuetracker.google.com/issues/35827189))
- There was an issue where the Google map did not appear on devices with Android 7.x Nougat, when users increased the display size on their device. (See information about [display size settings in Android N](http://www.androidauthority.com/android-n-display-size-settings-679049/).) This issue is now fixed. ([Issue 37538038](https://issuetracker.google.com/issues/37538038))

## February 15, 2017

**Features**

- This release introduces custom styling for polylines and for the outlines of polygons and circles. Change the stroke pattern from a solid line (default) to your choice of dashes, dots, and gaps. In polylines and polygons, you can specify a bevel or round joint type to replace the default fixed miter joints. You can also change the cap at each end of a polyline from a butt (default) to a square or round cap, or specify a custom bitmap to be used as the cap. The styling of stroke patterns, joint types and start/end caps is available in the full API but not in lite mode. See examples in the tutorial on adding [polygons and polylines to represent areas and routes](https://developers.google.com/maps/documentation/android-sdk/polygon-tutorial.md.txt). (Issues [4633](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4633), [4787](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4787), [4884](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4884))
- You can now store arbitrary data objects with your geometry objects. For example, call [`setTag()`](https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polyline.md.txt#setTag(java.lang.Object)) to add a data object to a polyline. Similar methods are available for polylines, polygons, circles and ground overlays, as well as the already-existing `setTag()` and `getTag()` methods on markers. ([Issue 10306](https://code.google.com/p/gmaps-api-issues/issues/detail?id=10306))

**Resolved Issues**

- `java.lang.IllegalStateException: LruCache does not have a sizeOf
  implementation for: null`. ([Issue 8211](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8211))
- `OutOfMemoryError` while zooming or panning the map. ([Issue 5621](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5621))
- NPE on `MapView#onCreate.` ([Issue 10878](https://code.google.com/p/gmaps-api-issues/issues/detail?id=10878))
- Seeing `Suppressed StrictMode policy violation` in the logs (partially fixed). ([Issue 11077](https://code.google.com/p/gmaps-api-issues/issues/detail?id=11077))

**Notes**

- When you choose to upgrade your app to the latest version of the Google Play
  services SDK, you must target a `minSdkVersion` of 14 (Android version 4.0.x,
  Ice Cream Sandwich) or higher. Note that Android version 2.3.x (Gingerbread)
  and 3.x (Honeycomb) were deprecated in Google Play services 10.0.x. To learn
  more about your options, see the
  [Android Developers Blog](https://android-developers.googleblog.com/2016/11/google-play-services-and-firebase-for-android-will-support-api-level-14-at-minimum.html). For example, in your app's `build.gradle`
  file:

      android {
          compileSdkVersion 24
          buildToolsVersion "23.0.3"
          defaultConfig {
              applicationId "com.example.mymap"
              minSdkVersion 14
              targetSdkVersion 24
              versionCode 1
              versionName "1.0"
          }
      }

## October 24, 2016

**Resolved Issues**

- Circle filling flickers on fast update of circle radius and center. ([Issue 5707](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5707))
- Crash if Google Play app is not available. ([Issue 4862](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4862))
- Calling `Marker.showInfoWindow()` in `onMarkerClick(Marker)` and returning true causes `Marker.isInfoWindowShown` to still return false on subsequent marker clicks. ([Issue 5408](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5408))
- Poor performance when app memory footprint is large. ([Issue 5445](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5445))
- StrictMode violations shown in log. ([Issue 10170](https://code.google.com/p/gmaps-api-issues/issues/detail?id=10170))

**Notes**

- The previously-deprecated `getStreetViewPanorama()` function is no longer available in the Google Play services SDK. (It is still available in the Google Play services APK that is delivered to Android devices. Existing apps therefore continue running normally until you recompile them.) The `getStreetViewPanorama()` function has been deprecated since December 2014. Instead, you should use [`StreetViewPanoramaView.getStreetViewPanoramaAsync()`](https://developers.google.com/android/reference/com/google/android/gms/maps/StreetViewPanoramaView.md.txt#getStreetViewPanoramaAsync(com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback)) or [`StreetViewPanoramaFragment.getStreetViewPanoramaAsync()`](https://developers.google.com/android/reference/com/google/android/gms/maps/StreetViewPanoramaFragment.md.txt#getStreetViewPanoramaAsync(com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback)) to get a ready-to-use Street View panorama. See the [developer's
  guide](https://developers.google.com/maps/documentation/android-sdk/streetview#addpano).

## September 21, 2016

**Features**

- This release introduces custom styling of the base map. ([Issue 5463](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5463).) You
  can pass a JSON style declaration to your `MapStyleOptions`, changing
  the visual display of features like roads, parks, businesses,
  and other points of interest. This means that you can emphasize
  particular components of the map or make the map complement the style of your
  app. Custom styling is available for maps with a map type of `normal`.

  - See the [quick guide to styling your
    map](https://developers.google.com/maps/documentation/android-sdk/styling), using night mode as an example style.
  - Use styling to [prevent certain features from appearing on the
    map](https://developers.google.com/maps/documentation/android-sdk/hiding-features). ([Issue 4841](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4841))
  - Learn the full power of custom styling in the [style
    reference](https://developers.google.com/maps/documentation/android-sdk/style-reference).
- The new [Maps Platform Styling Wizard](https://mapstyle.withgoogle.com) provides
  a quick way to generate a JSON style declaration for your map. The
  Maps SDK for Android supports the same style declarations as the
  Maps JavaScript API.

- Business points of interest (POIs) now appear by default on the map, provided
  the map type is `normal`. (Prior to this release, local POIs appeared on the
  map, but not business POIs.) Business POIs represent businesses such as shops,
  restaurants, hotels, and more. See the
  [guide to points of interest](https://developers.google.com/maps/documentation/android-sdk/poi.md.txt).

- You can respond to [click events on a
  POI](https://developers.google.com/maps/documentation/android-sdk/poi#poi-events).

**Resolved Issues**

- Getting warning Maps SDK for Android: `GLHudOverlay deprecated; draw():
  no-op`. ([Issue 10201](https://code.google.com/p/gmaps-api-issues/issues/detail?id=10201))
- Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations. ([Issue 10166](https://code.google.com/p/gmaps-api-issues/issues/detail?id=10166))
- Android Nougat developer preview: MapView blank when resized in Multi Window mode and not focused. ([Issue 213354](https://code.google.com/p/android/issues/detail?id=213354))

**Notes**

- Forwarding of lifecycle methods: If you're using the [`MapView`](https://developers.google.com/android/reference/com/google/android/gms/maps/MapView.md.txt) class, and the API is in **fully interactive mode** rather than lite mode, your app must forward the following activity lifecycle methods to the corresponding methods in the `MapView` class: `onCreate()`, `onStart()`, `onResume()`, `onPause()`, `onStop()`, `onDestroy()`, `onSaveInstanceState()`, and `onLowMemory()`. Prior to this release, there was no need to forward `onStart()` and `onStop()`, but when you recompile your app with the new release, it's essential to forward them too. See the [documentation](https://developers.google.com/maps/documentation/android-sdk/map.md.txt#mapview) for details.

## August 1, 2016

**Features**

- This release introduces a set of new camera change listeners for camera motion
  start, ongoing, and end events. You can also see *why* the camera is moving,
  whether it's caused by user gestures, built-in API animations or
  developer-controlled movements. Below is a summary of the new listeners. For
  details, see the guide to [camera change
  events](https://developers.google.com/maps/documentation/android-sdk/events#camera-change-events).
  ([Issue 4636](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4636))

  - The `onCameraMoveStarted()` callback of the `OnCameraMoveStartedListener` is invoked when the camera starts moving. The callback method receives a `reason` for the camera motion.
  - The `onCameraMove()` callback of the `OnCameraMoveListener` is invoked multiple times while the camera is moving or the user is interacting with the touch screen.
  - The `OnCameraIdle()` callback of the `OnCameraIdleListener` is invoked when the camera stops moving and the user has stopped interacting with the map.
  - The `OnCameraMoveCanceled()` callback of the `OnCameraMoveCanceledListener` is invoked when the current camera movement has been interrupted.
- You can store an arbitrary data object with a marker using `Marker.setTag()`,
  and retrieve the data object using `Marker.getTag()`. For details, see the
  guide to [associating data with a
  marker](https://developers.google.com/maps/documentation/android-sdk/marker#marker-data).
  ([Issue 4650](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4650))

- With `GoogleMap.setMinZoomPreference()` and `GoogleMap.setMaxZoomPreference()`
  you can set a preferred minimum and/or maximum zoom level. This is useful, for
  example, if your app shows a defined area around a point of interest, or if
  you're using a custom tile overlay with a limited set of zoom levels. For
  details, see the guide to [setting minimum/maximum zoom
  preferences](https://developers.google.com/maps/documentation/android-sdk/views#changing_zoom_level).
  ([Issue 4663](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4663))

- With `GoogleMap.setLatLngBoundsForCameraTarget()`, you can constrain the
  lat/lng centre bounds of the focal point of the map (the camera target) so
  that users can only scroll and pan within these bounds. For example, a retail
  app for a shopping centre or airport may want to constrain the map to a
  particular bounds, allowing users to scroll and pan within those bounds. For
  details, see the guide to [restricting the user's panning to a given
  area](https://developers.google.com/maps/documentation/android-sdk/views#restrict-panning).

**Resolved Issues**

- Marker icon anchor breaks with Google Play services 9.0.83. ([Issue 9768](https://code.google.com/p/gmaps-api-issues/issues/detail?id=9768))
- `ActivityNotFoundException` when Google Map is uninstalled/deactivated. ([Issue 9483](https://code.google.com/p/gmaps-api-issues/issues/detail?id=9483))

**Notes**

- The [`OnCameraChangeListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.md.txt) is **deprecated** in favour of the new listeners described above - that is, `OnCameraMoveStartedListener`, `OnCameraMoveListener`, `OnCameraMoveCanceledListener` and `OnCameraIdleListener`.

## June 27, 2016

**Features**

- The new [`MarkerOptions.zIndex()`](https://developers.google.com/android/reference/com/google/android/gms/maps/model/MarkerOptions.md.txt#zIndex(float)) sets the stack order of a marker in relation to other markers on the map. Read more about [marker
  z-indexes](https://developers.google.com/maps/documentation/android-sdk/marker#z-index) and [the effect of
  z-index on click events](https://developers.google.com/maps/documentation/android-sdk/marker#click-index). ([Issue 4688](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4688))
- You can set a transparency factor on tile overlays, so users can see the base map below the overlaid tiles. Read more about [tile overlay
  transparency](https://developers.google.com/maps/documentation/android-sdk/tileoverlay#transparency) and the way it works with [fade-in
  animation](https://developers.google.com/maps/documentation/android-sdk/tileoverlay#transparent-fadein). ([Issue 4765](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4765))
- It's now easier to make circles clickable. You can enable and disable clickability by providing a [`CircleOptions`](https://developers.google.com/android/reference/com/google/android/gms/maps/model/CircleOptions.md.txt) object with a `clickable` option, or by calling `Circle.setClickable(boolean)`. Use an [`OnCircleClickListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnCircleClickListener.md.txt) to listen to click events on a clickable circle. See a [code sample](https://developers.google.com/maps/documentation/android-sdk/shapes.md.txt#circle-events).

**Resolved Issues**

- NullPointerException: Attempt to invoke virtual method `boolean java.io.File.mkdir()` on a null object reference. ([Issue 9021](https://code.google.com/p/gmaps-api-issues/issues/detail?id=9021))
- NullPointerException: Attempt to invoke interface method `java.util.Iterator java.util.List.iterator()` on a null object reference at `com.google.maps.api.android.lib6.d.ei.a()`. ([Issue 9008](https://code.google.com/p/gmaps-api-issues/issues/detail?id=9008))
- Calling `Marker.setIcon()` with resource id on marker outside view makes the marker white. ([Issue 9765](https://code.google.com/p/gmaps-api-issues/issues/detail?id=9765))
- Setting icon for google map markers will sometimes cause a flicker. ([Issue 8531](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8531))
- Calling `Marker.setIcon()` causes info window to disappear. ([Issue 5419](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5419))
- Marker stops dragging if icon is changed in `onMarkerDragStart` event. ([Issue 5932](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5932))
- Info window no longer highlights on touch when implementing custom `InfoWindowAdapter`. ([Issue 7809](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7809))
- Polylines drawn incorrectly in certain cases. ([Issue 5313](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5313))
- Strange behaviour drawing polyline. ([Issue 5123](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5123))
- Polylines which venture near the poles are drawn incorrectly. ([Issue 9176](https://code.google.com/p/gmaps-api-issues/issues/detail?id=9176))
- NullPointerException when clicking directions toolbar button. ([Issue 8817](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8817))
- Possible explicit call to the `System.gc()` in `GoogleMap.getProjection().toScreenLocation()`. ([Issue 6483](https://code.google.com/p/gmaps-api-issues/issues/detail?id=6483))
- When using `SupportMapFragment`, the API leaks memory on screen rotation until the map is loaded for the current zoom level. ([Issue 5905](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5905))
- `GoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng,zoom))` messes up the zoom if cancelled. ([Issue 6947](https://code.google.com/p/gmaps-api-issues/issues/detail?id=6947))

**Notes**

- The previously-deprecated `getMap()` function is no longer available in the Google Play services SDK. (It is still available in the Google Play services APK that is delivered to Android devices.) The `getMap()` function has been deprecated since December 2014. See the [release blog post](http://googlegeodevelopers.blogspot.com/2016/06/marker-zindex-and-more-come-to-google.html) for help with converting from `getMap()` to `getMapAsync()`.
- **Deprecation notice:** In a future release, indoor maps will only be available on `normal` type maps. From that future release, indoor maps will not be supported on `satellite`, `terrain` or `hybrid` maps. Even where indoor is not supported, `isIndoorEnabled()` will continue to return the value that has been set via `setIndoorEnabled()`, as it does now. By default, `setIndoorEnabled` is `true`. [Subscribe](https://developers.google.com/static/maps/documentation/android-sdk/feeds/releases.xml) to these release notes for a notification of each release.

## December 17, 2015

**Features**

This release introduces a number of new event listeners:

- [`OnInfoWindowLongClickListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowLongClickListener.md.txt) triggers a callback to `onInfoWindowLongClick(Marker)` when the user long clicks on an info window. This listener behaves similarly to the existing click listener.
- [`OnInfoWindowCloseListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowCloseListener.md.txt) triggers a callback to `onInfoWindowClose(Marker)` when an info window closes. For details, see the guide to [info window events](https://developers.google.com/maps/documentation/android-sdk/infowindows.md.txt#info_window_events). ([Issue 5469](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5469))
- [`OnPolylineClickListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnPolylineClickListener.md.txt) triggers a callback to `onPolylineClick(Polyline)` when the user clicks on a polyline. See the guide to [polyline events](https://developers.google.com/maps/documentation/android-sdk/shapes.md.txt#polyline-events).
- [`OnPolygonClickListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnPolygonClickListener.md.txt) triggers a callback to `onPolygonClick(Polygon)` when the user clicks on a polygon. See the guide to [polygon events](https://developers.google.com/maps/documentation/android-sdk/shapes.md.txt#polygon-events). ([Issue 4683](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4683))
- [`OnGroundOverlayClickListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnGroundOverlayClickListener.md.txt) triggers a callback to `onGroundOverlayClick(GroundOverlay)` when the user clicks on a ground overlay. See the guide to [ground overlay events](https://developers.google.com/maps/documentation/android-sdk/groundoverlay.md.txt#overlay-events).
- You can enable or disable the clickability of polylines, polygons and ground overlays by calling `setClickable(boolean)` on the relevant object.

**Resolved Issues**

- Zoom into maximum level when info window is double tapped. ([Issue 4640](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4640))
- Android maps v2 marker infowindow RTL text problem. ([Issue 5608](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5608))
- Correct tiles generated by TileProvider but rendered solid white on the map. ([Issue 8084](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8084))
- Memory leak. ([Issue 8696](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8696))
- Turning on the my location layer leaks the Activity. ([Issue 8111](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8111))

## November 5, 2015

**Notes**

- If you're targeting version 8.3 or later of the Google Play services SDK, you no longer need the `WRITE_EXTERNAL_STORAGE` permission to use the Maps SDK for Android. For details, see the [configuration guide](https://developers.google.com/maps/documentation/android-sdk/config.md.txt#specify_android_permissions).
- All the code samples for the Maps SDK for Android are now available on [GitHub](https://github.com/googlemaps/android-samples).

**Resolved Issues**

- Memory leak: obfuscated class in "chimera" package. ([Issue 8472](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8472))

## September 24, 2015

**Features**

- The Maps SDK for Android now supports [ambient mode for wearable apps](https://developers.google.com/maps/documentation/android/wear#ambient). Ambient mode is for *always on* apps, and is activated when the user is no longer actively using the app, allowing the app to remain visible on the wearable device. The Maps SDK for Android provides a simplified, low-color rendering of the map. This mode reduces the power consumption of your app and ensures a consistent look and feel with other ambient apps, such as watch faces.

**Notes**

- Android 6.0 (Marshmallow) introduces a new model for handling permissions, which streamlines the process for users when they install and upgrade apps. If your app targets API level 23 or later, you can use the new permissions model. This is particularly important if you're using the My Location layer in the Maps SDK for Android. To learn more, see the documentation for the [My Location layer](https://developers.google.com/maps/documentation/android-sdk/location.md.txt).

**Resolved Issues**

- java.lang.IllegalStateException: CreatorImpl not initialized properly. ([Issue 8314](https://code.google.com/p/gmaps-api-issues/issues/detail?id=8314))

## May 28, 2015

**Features**

- The Maps SDK for Android is now available on [Android Wear](https://developers.google.com/maps/documentation/android-sdk/wear.md.txt). Create map-based apps that run directly on wearable devices.

**Resolved Issues**

- Problems rendering a map in a `MapView` when setting the `zOrderOnTop` property to true or when embedding a `MapView` in a scrollable container. ([Issue 7936](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7936))
- Map toolbar always visible in lite mode, even if disabled. ([Issue 7947](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7947))

## April 28, 2015

**Features**

- A new interface, [`StreetViewPanorama.OnStreetViewPanoramaLongClickListener`](https://developers.google.com/android/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.md.txt), supports long-clicking (tapping and holding down the finger) on a Street View panorama.
- When using the `MapView` class in lite mode, forwarding lifecycle events is now optional, with some exceptions as noted in the [documentation](https://developers.google.com/maps/documentation/android-sdk/lite.md.txt#lifecycle).
- To disable click events on a map in lite mode, you can call `setClickable()` on the view that contains the `MapView` or `MapFragment`. This is useful, for example, when displaying a map or maps in a list view, where you want the click event to invoke an action unrelated to the map. For details, see the [documentation](https://developers.google.com/maps/documentation/android-sdk/events.md.txt).

**Resolved Issues**

- `showInfoWindow()` now works in lite mode as well as full mode.
- `TileOverlay.clearTileCache()` works as expected after returning `NO_TILE`. ([Issue 4755](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4755))
- The API is more selective in its logging behavior in lite mode, when reporting the functions that are not supported in lite mode. It no longer logs the default calls that are made at app startup.
- CameraUpdateFactory is now properly initialized, so you should no longer see a NullPointerException 'CameraUpdateFactory is not initialized' after `MapView.getMap()` returns a valid GoogleMap. ([Issue 6499](https://code.google.com/p/gmaps-api-issues/issues/detail?id=6499))
- App launch performance is improved, and the main thread is no longer blocked on app launch. ([Issue 7532](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7532))
- StreetViewPanoramaView no longer requests focus in `onCreate()`, thus no longer causing the view to scroll to make Street View visible. ([Issue 7566](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7566))
- Fixed a resource leak that showed itself in strict mode. ([Issue 5992](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5992))
- Fixed a NullPointerException that occurred with `setPadding()` in accessibility mode. ([Issue 7619](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7619))
- Fixed a bug crashing apps when loading an icon from an asset. ([Issue 7696](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7696))

## December 8, 2014

**Features**

- The API offers a new [lite mode](https://developers.google.com/maps/documentation/android-sdk/lite.md.txt). When lite mode is enabled, the API serves a bitmap image instead of a fully-interactive map. Lite mode supports all of the map types and a subset of the functionality supplied by the full API. Markers and shapes are drawn on top of the static image client-side, so you still have full control over them. A lite-mode map is useful when you want to display a number of small maps, or a map that is too small to offer meaningful interactivity.
- A new [map toolbar](https://developers.google.com/maps/documentation/android-sdk/controls.md.txt#toolbar) is available in both lite mode and full mode, and is enabled by default in both modes for apps that are recompiled against the new client library. Tapping on the toolbar opens the Google Maps mobile app, giving users quick access to directions and turn-by-turn navigation to the selected marker. In lite mode the toolbar is static, whereas in full mode it slides in when the user taps a marker. You can disable the toolbar in both modes, by calling `UiSettings.setMapToolbarEnabled(false)`.
- The API supports a new `onMapReady()` callback which you can set by calling `MapView.getMapAsync()` or `MapFragment.getMapAsync()`. The `onMapReady()` method is called when the map is ready to be used, and provides a non-null instance of `GoogleMap`. This means that you no longer need to check for a non-null map before using the map. See the guide to [adding a map](https://developers.google.com/maps/documentation/android-sdk/map.md.txt#addmap).
- Similarly, you can now use `StreetViewPanoramaView.getStreetViewPanoramaAsync()` or `StreetViewPanoramaFragment.getStreetViewPanoramaAsync()` to get a ready-to-use Street View panorama. See the [documentation](https://developers.google.com/maps/documentation/android-sdk/streetview.md.txt#addpano).

**Resolved Issues**

- `GoogleMap.CancelableCallback()` now behaves correctly when animating/moving the camera. ([Issue 5208](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5208))
- The visible region's `LatLngBounds` are now calculated correctly in landscape mode. ([Issue 5285](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5285))
- A marker performance regression is fixed. ([Issue 7174](https://code.google.com/p/gmaps-api-issues/issues/detail?id=7174))
- The problem with arrowhead shapes in triangulating convex quadrilaterals is fixed. ([Issue 6197](https://code.google.com/p/gmaps-api-issues/issues/detail?id=6197) - the initial problem reported is now fixed)

**Notes**

- `getMap()` is **deprecated** in favour of the new `getMapAsync()`, described above. Similarly, `getStreetViewPanorama()` is deprecated in favor of the new `getStreetViewPanoramaAsync()`.
- For apps that are recompiled against the new client library, the map's [zoom controls](https://developers.google.com/maps/documentation/android-sdk/controls.md.txt#zoom_controls) are **disabled by default** . Up to this release, they have been enabled by default. You can still enable and disable them by calling `UiSettings.setZoomControlsEnabled()`.

## October 16, 2014

- Updated some assets to use [material design](https://developer.android.com/preview/material/index.html).

## May 2014

**Features**

- Added [Street View](https://developers.google.com/maps/documentation/android-sdk/streetview.md.txt) for embedding and controlling panoramic 360-degree views.
- Added functionality to [indoor maps](https://developers.google.com/maps/documentation/android-sdk/map.md.txt#indoor_maps) so that you can respond to indoor and level change events, and replace the level picker with your own. ([Issue 5939](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5939))
- Improved [accessibility](https://developers.google.com/maps/documentation/android-sdk/overview.md.txt#accessibility) features across various embedded controls.

## January 2014

**Features**

- Added a [`fadeIn`](https://developers.google.com/android/reference/com/google/android/gms/maps/model/TileOverlayOptions.md.txt#fadeIn(boolean)) flag to `TileOverlayOptions` to toggle the fade-in of tiles.

**Resolved Issues**

- Failed API key authentication attempts are no longer cached. ([Issue 6099](https://code.google.com/p/gmaps-api-issues/issues/detail?id=6099))

## October 2013

**Features**

- Added a `setImage` method to the `GroundOverlay` class that allows you to change the image of a ground overlay. ([Issue 4847](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4847))
- Added an `alpha` option and `setAlpha` method to Markers. ([Issue 4768](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4768))
- Added a `setOnMapLoadedCallback` method to the `GoogleMap` class. `onMapLoaded` is called when the map has completely finished rendering. ([Issue 5779](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5779))
- Added a `setBuildingsEnabled` method to the `GoogleMap` class. Buildings are still enabled by default. ([Issue 5550](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5550))
- The Google logo has been updated.

**Resolved Issues**

- `CameraPosition` returned in a `OnCameraChangeListener` now respects map padding. ([Issue 5844](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5844))
- `GroundOverlay.setPositionFromBounds` now redraws the ground overlay.

## September 2013

**Features**

- Added a [`setPadding`](https://developers.google.com/maps/documentation/android-sdk/map.md.txt#map_padding) method to the `GoogleMap` class that allows you to indicate parts of the map that may be obscured by other views. Setting padding re-positions the standard map controls, and camera updates will use the padded region. ([Issue 4670](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4670), [Issue 5321](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5321))
- Added the `LatLngBounds.getCenter` method. ([Issue 4664](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4664))
- Added methods to `Marker`:
  - `setFlat`, which toggles between billboarded (default) and flat markers. ([Issue 4881](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4881))
  - `setInfoWindowAnchor`. ([Issue 5338](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5338), [Issue 5131](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5131))
  - `setRotation`.

**Resolved issues**

- `GooglePlayServicesUtil.getErrorDialog` always returns a dialog, except when Google Play services is available. ([Issue 4720](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4720))

## August 2013

**Resolved issues**

- The map is now rendered using `TextureView` on Jelly Bean 4.1+ (API 16+) devices. This should resolves several issues, including black rectangles when a map view is moved on the screen. ([Issue 4659](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4659), [Issue 4639](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4639), [Issue 4865](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4865), [Issue 4782](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4782), [Issue 4839](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4839))

## August 2013

**Features**

- Added a [`snapshot()`](https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.md.txt#snapshot(com.google.android.gms.maps.GoogleMap.SnapshotReadyCallback,%20android.graphics.Bitmap)) method to the `GoogleMap` class that returns a bitmap of the current map. Snapshots can be used elsewhere on the device, or in your app, to show a map when a `MapFragment` or `MapView` would not be feasible; they shouldn't be transmitted off the device. ([Issue 4898](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4898))
- Added a click event listener to the My Location button. ([Issue 4789](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4789))

**Resolved issues**

- Fixed info window sprites for xxhdpi devices. ([Issue 5439](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5439))
- Clickable regions on custom markers more closely match the size of the custom image. ([Issue 5368](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5368))
- Added implementations for `canScrollHorizontally` and `canScrollVertically`. This improves behavior for maps appearing inside of scrollable containers, such as `ViewPager`.

## July 2013

**Features**

- The `MAPS_RECEIVE` permission is no longer required. You can remove this permission from your manifest.
- Updated map design inspired by the new Google Maps.
- You can now save Maps API Parcelable classes (e.g. LatLng, GoogleMapOptions) in the state Bundle of a MapFragment. ([Issue 4713](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4713))

**Resolved issues**

- Fixed an issue that would cause a `NullPointerException`. ([Issue 5395](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5395))

## May 2013

**Features**

- Added the `Marker.setIcon` method. ([Issue 5075](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5075))
- Added the `Marker.setAnchor` method.
- Android emulator support. ([Issue 4627](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4627))
- My Location layer is backed by the fused location provider in the Android Location API. Location accuracy should be greatly improved. ([Issue 4660](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4660), [Issue 4682](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4682))

**Resolved issues**

- A number of memory leaks were fixed. ([Issue 4766](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4766), [Issue 4703](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4703))
- OpenGL ES 2.0 feature requirement is no longer required to be included in AndroidManifest. Note: OpenGL ES 2.0 is still required for Maps to function. ([Issue 4699](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4699))
- `MapView(Context)` constructor no longer throws a `NullPointerException`. ([Issue 4903](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4903))
- `LayoutParams` no longer need to be set on a `RelativeLayout` returned by an `InfoWindowAdapter`. ([Issue 4748](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4748))
- `OnMapClickListener` is now called when a user clicks on a map icon (e.g. transit station). ([Issue 5062](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5062))
- The Google Maps application is no longer required to be installed. ([Issue 4914](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4914))
- Pre-multiplied alphas in ground overlays are now blended correctly. ([Issue 4924](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4924))
- Documentation added for `zOrderOnTop`. ([Issue 4812](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4812))

*Note* : `OnMyLocationChangedListener` and `GoogleMap.getMyLocation()` are
deprecated in favor of the new [Android Location
APIs](https://developer.android.com/google/play-services/location.html).

## March 2013

**Resolved Issues**

- Maps can now be rendered offline ([Issue 5017](https://code.google.com/p/gmaps-api-issues/issues/detail?id=5017))

## February 2013

**Features**

- Added `OnMyLocationChangeListener`, which is called when a change in location is detected. ([Issue 4644](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4644))
- Added the `BitmapDescriptor.fromPath` method. ([Issue 4637](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4637))
- Added support for `Circle` overlays. ([Issue 4819](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4819))
- Added support for the `hybrid` map type when using XML attributes.

**Resolved issues**

- Improvements to memory management, minimizing memory leaks. ([Issue 4766](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4766))
- OpenGL ES 2.0 feature requirement is no longer required to be included in AndroidManifest. *Note* : OpenGL ES 2.0 is still required for Maps to function. ([Issue 4699](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4699))
- Fixed blurry markers due to non-rounded pixel alignment. ([Issue 4667](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4667))
- Greatly improved performance of adding many markers. ([Issue 4669](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4669))
- Fixed an occasional 1px gap in a info windows. ([Issue 4666](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4666))
- Calling `MarkerOptions.visible(false)` will now make the marker invisible. ([Issue 4677](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4677))
- Invisible markers are no longer clickable. ([Issue 4668](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4668))
- Copyrights are no longer visible when `mapType` is set to `MAP_TYPE_NONE`. ([Issue 4834](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4834))
- Fixed incorrect sizing of `GroundOverlay`s. ([Issue 4723](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4723))
- Improved recovery from gaining network connectivity. This fix requires the `ACCESS_NETWORK_STATE` permission. ([Issue 4817](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4817))
- Fixed disappearing info window while the map is moving. ([Issue 4657](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4657))
- Info window is now selectable after being double tapped. ([Issue 4641](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4641))
- The double tap and drag gesture is disabled when zoom gestures are disabled. ([Issue 4694](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4694))
- Several improvements to product documentation. ([Issue 4675](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4675), [Issue 4676](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4676), [Issue 4653](https://code.google.com/p/gmaps-api-issues/issues/detail?id=4653))
- Polygon vertices may now be ordered in clockwise or counterclockwise order.
- `CancelableCallback` now calls `onCancel()` instead of `onFinish()` when interrupted by a user interaction.
- Text labels are now sized correctly on tablets.
- `TileFetcher` no longer continues to fetch after a `TileOverlay` is removed from the map.

## December 2012

- Initial release. Included as part of Google Play Services SDK.