[google_maps_flutter] Fix for bitmap scaling (#1821)

diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
index f90a251..fbbc3cc 100644
--- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.5.25
+
+* Add an optional param `mipmaps` for `BitmapDescriptor.fromAssetImage`.
+
 ## 0.5.24+1
 
 * Make the pedantic dev_dependency explicit.
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart
index 122d43c..7762169 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_maps_e2e.dart
@@ -823,4 +823,19 @@
     iwVisibleStatus = await controller.isMarkerInfoWindowShown(marker.markerId);
     expect(iwVisibleStatus, false);
   });
+
+  testWidgets("fromAssetImage", (WidgetTester tester) async {
+    double pixelRatio = 2;
+    final ImageConfiguration imageConfiguration =
+        ImageConfiguration(devicePixelRatio: pixelRatio);
+    final BitmapDescriptor mip = await BitmapDescriptor.fromAssetImage(
+        imageConfiguration, 'red_square.png');
+    final BitmapDescriptor scaled = await BitmapDescriptor.fromAssetImage(
+        imageConfiguration, 'red_square.png',
+        mipmaps: false);
+    // ignore: invalid_use_of_visible_for_testing_member
+    expect(mip.toJson()[2], 1);
+    // ignore: invalid_use_of_visible_for_testing_member
+    expect(scaled.toJson()[2], 2);
+  });
 }
diff --git a/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart b/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart
index ca6ed6e..7cf5b2e 100644
--- a/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/lib/src/bitmap.dart
@@ -72,13 +72,15 @@
   /// https://flutter.dev/docs/development/ui/assets-and-images#declaring-resolution-aware-image-assets
   /// This method takes into consideration various asset resolutions
   /// and scales the images to the right resolution depending on the dpi.
+  /// Set `mipmaps` to false to load the exact dpi version of the image, `mipmap` is true by default.
   static Future<BitmapDescriptor> fromAssetImage(
     ImageConfiguration configuration,
     String assetName, {
     AssetBundle bundle,
     String package,
+    bool mipmaps = true,
   }) async {
-    if (configuration.devicePixelRatio != null) {
+    if (!mipmaps && configuration.devicePixelRatio != null) {
       return BitmapDescriptor._(<dynamic>[
         'fromAssetImage',
         assetName,
@@ -104,5 +106,10 @@
 
   final dynamic _json;
 
+  /// Convert the object to a Json format.
+  /// Used for testing only.
+  @visibleForTesting
+  dynamic toJson() => _json;
+
   dynamic _toJson() => _json;
 }
diff --git a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml
index 5ff3e3f..e6dfb6b 100644
--- a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml
@@ -1,7 +1,7 @@
 name: google_maps_flutter
 description: A Flutter plugin for integrating Google Maps in iOS and Android applications.
 homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter
-version: 0.5.24+1
+version: 0.5.25
 
 dependencies:
   flutter: