[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: