From 266ee88d66f9ed572bc7dd245bc44fd17f81f19b Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 16:24:00 +0900 Subject: [PATCH 01/13] [google_maps_flutter] Add takeScreenshot --- .../googlemaps/GoogleMapController.java | 22 +++++++++++++++++++ .../ios/Classes/GoogleMapController.m | 16 ++++++++++++++ .../lib/src/controller.dart | 5 +++++ 3 files changed, 43 insertions(+) diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index b1e5ec0bb768..c71cf6babb13 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -17,6 +17,7 @@ import android.app.Application; import android.content.Context; import android.content.pm.PackageManager; +import android.graphics.Bitmap; import android.graphics.Point; import android.os.Bundle; import android.util.Log; @@ -27,6 +28,7 @@ import androidx.lifecycle.LifecycleOwner; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.GoogleMap; +import com.google.android.gms.maps.GoogleMap.SnapshotReadyCallback; import com.google.android.gms.maps.GoogleMapOptions; import com.google.android.gms.maps.MapView; import com.google.android.gms.maps.OnMapReadyCallback; @@ -44,6 +46,7 @@ import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.PluginRegistry; import io.flutter.plugin.platform.PlatformView; +import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -276,6 +279,25 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { } break; } + case "map#takeScreenshot": + { + if (googleMap != null) { + final MethodChannel.Result _result = result; + googleMap.snapshot(new SnapshotReadyCallback() { + @Override + public void onSnapshotReady(Bitmap bitmap) { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); + byte[] byteArray = stream.toByteArray(); + bitmap.recycle(); + _result.success(byteArray); + } + }); + } else { + result.error("GoogleMap uninitialized", "takeScreenshot", null); + } + break; + } case "camera#move": { final CameraUpdate cameraUpdate = diff --git a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m index d694f6f50cee..e34842ab6a1a 100644 --- a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m +++ b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m @@ -171,6 +171,22 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { } } else if ([call.method isEqualToString:@"map#waitForMap"]) { result(nil); + } else if ([call.method isEqualToString:@"map#takeScreenshot"]) { + if (_mapView != nil) { + UIGraphicsImageRendererFormat *format = [UIGraphicsImageRendererFormat defaultFormat]; + format.scale = [[UIScreen mainScreen] scale]; + UIGraphicsImageRenderer *renderer = + [[UIGraphicsImageRenderer alloc] initWithSize:_mapView.frame.size format:format]; + + UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext *context){ + [_mapView.layer renderInContext: context.CGContext]; + }]; + result([FlutterStandardTypedData typedDataWithBytes: UIImagePNGRepresentation(image)]); + } else { + result([FlutterError errorWithCode:@"GoogleMap uninitialized" + message:@"takeScreenshot called prior to map initialization" + details:nil]); + } } else if ([call.method isEqualToString:@"markers#update"]) { id markersToAdd = call.arguments[@"markersToAdd"]; if ([markersToAdd isKindOfClass:[NSArray class]]) { diff --git a/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart b/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart index 3dcea9c2bbac..f2a1e3ec2337 100644 --- a/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart +++ b/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart @@ -285,4 +285,9 @@ class GoogleMapController { await channel.invokeMethod('map#getZoomLevel'); return zoomLevel; } + + /// Returns the image bytes of the map + Future takeScreenshot() async { + return channel.invokeMethod('map#takeScreenshot'); + } } From 95ed568859ef1c872c692187534aa11221a8f8bf Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 16:24:32 +0900 Subject: [PATCH 02/13] [google_maps_flutter] Add example for takeScreenshot --- .../google_maps_flutter/example/lib/main.dart | 2 + .../example/lib/snapshot.dart | 72 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/main.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/main.dart index f4b8776559ec..a5a0f199abe4 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/lib/main.dart +++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/main.dart @@ -18,6 +18,7 @@ import 'place_marker.dart'; import 'place_polygon.dart'; import 'place_polyline.dart'; import 'scrolling_map.dart'; +import 'snapshot.dart'; final List _allPages = [ MapUiPage(), @@ -32,6 +33,7 @@ final List _allPages = [ PlacePolygonPage(), PlaceCirclePage(), PaddingPage(), + SnapshotPage(), ]; class MapsDemo extends StatelessWidget { diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart new file mode 100644 index 000000000000..a9efa1ffa989 --- /dev/null +++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart @@ -0,0 +1,72 @@ +// Copyright 2020 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// ignore_for_file: public_member_api_docs + +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import 'page.dart'; + +const CameraPosition _kInitialPosition = + CameraPosition(target: LatLng(-33.852, 151.211), zoom: 11.0); + +class SnapshotPage extends Page { + SnapshotPage() + : super(const Icon(Icons.camera_alt), 'Take a snapshot of the map'); + + @override + Widget build(BuildContext context) { + return _SnapshotBody(); + } +} + +class _SnapshotBody extends StatefulWidget { + @override + _SnapshotBodyState createState() => _SnapshotBodyState(); +} + +class _SnapshotBodyState extends State<_SnapshotBody> { + GoogleMapController _mapController; + Uint8List _imageBytes; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + SizedBox( + height: 180, + child: GoogleMap( + onMapCreated: onMapCreated, + initialCameraPosition: _kInitialPosition, + ), + ), + FlatButton( + child: Text('Take a screenshot'), + onPressed: () async { + final imageBytes = await _mapController?.takeScreenshot(); + setState(() { + _imageBytes = imageBytes; + }); + }, + ), + Container( + decoration: BoxDecoration(color: Colors.blueGrey[50]), + height: 180, + child: _imageBytes != null ? Image.memory(_imageBytes) : null, + ), + ], + ), + ); + } + + void onMapCreated(GoogleMapController controller) { + _mapController = controller; + } +} From 274fae33449717fd64ca27d1238c6295598a617c Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 17:32:44 +0900 Subject: [PATCH 03/13] [google_maps_flutter] Modify takeScreenshot --- .../google_maps_flutter/lib/src/controller.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart b/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart index f2a1e3ec2337..ccae67fe217a 100644 --- a/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart +++ b/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart @@ -288,6 +288,6 @@ class GoogleMapController { /// Returns the image bytes of the map Future takeScreenshot() async { - return channel.invokeMethod('map#takeScreenshot'); + return await channel.invokeMethod('map#takeScreenshot'); } } From 7e8738477d814fa4df959682e84ddda9bf9a52ce Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 17:36:39 +0900 Subject: [PATCH 04/13] [google_maps_flutter] Add test for takeScreenshot --- .../test_driver/google_map_inspector.dart | 6 ++++ .../example/test_driver/google_maps_e2e.dart | 30 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart index 1f87a8787a86..72f5737dd65a 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart +++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart @@ -2,6 +2,8 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +import 'dart:typed_data'; + import 'package:flutter/services.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; @@ -63,4 +65,8 @@ class GoogleMapInspector { Future isBuildingsEnabled() async { return await _channel.invokeMethod('map#isBuildingsEnabled'); } + + Future takeScreenshot() async { + return await _channel.invokeMethod('map#takeScreenshot'); + } } 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 122d43cf8a18..25cde38c46cd 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 @@ -4,12 +4,13 @@ import 'dart:async'; import 'dart:io'; +import 'dart:typed_data'; +import 'package:e2e/e2e.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; -import 'package:e2e/e2e.dart'; import 'google_map_inspector.dart'; @@ -823,4 +824,31 @@ void main() { iwVisibleStatus = await controller.isMarkerInfoWindowShown(marker.markerId); expect(iwVisibleStatus, false); }); + + testWidgets('testTakeScreenshot', (WidgetTester tester) async { + Completer inspectorCompleter = + Completer(); + + await tester.pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: GoogleMap( + initialCameraPosition: _kInitialCameraPosition, + onMapCreated: (GoogleMapController controller) { + final GoogleMapInspector inspector = + // ignore: invalid_use_of_visible_for_testing_member + GoogleMapInspector(controller.channel); + inspectorCompleter.complete(inspector); + }, + ), + ), + ); + + await tester.pumpAndSettle(const Duration(seconds: 3)); + + final GoogleMapInspector inspector = await inspectorCompleter.future; + final Uint8List bytes = await inspector.takeScreenshot(); + expect(bytes, isNotNull); + expect(bytes.isNotEmpty, true); + }); } From f1737addf3683391b0e92867f1ec9f7bad400264 Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 17:47:55 +0900 Subject: [PATCH 05/13] [google_maps_flutter] update version --- packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md | 4 ++++ packages/google_maps_flutter/google_maps_flutter/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md index f90a2517bd75..de7ab5d6c549 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 + +* Added function for taking a screenshot of the map. + ## 0.5.24+1 * Make the pedantic dev_dependency explicit. diff --git a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml index 5ff3e3f22288..e6dfb6bea412 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: From f53538a4fabfc66f021f3c89bac59503f7d37a16 Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 17:55:02 +0900 Subject: [PATCH 06/13] [google_maps_flutter] Fix format --- .../google_maps_flutter/ios/Classes/GoogleMapController.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m index e34842ab6a1a..16c8189a6ac8 100644 --- a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m +++ b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m @@ -173,15 +173,15 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { result(nil); } else if ([call.method isEqualToString:@"map#takeScreenshot"]) { if (_mapView != nil) { - UIGraphicsImageRendererFormat *format = [UIGraphicsImageRendererFormat defaultFormat]; + UIGraphicsImageRendererFormat* format = [UIGraphicsImageRendererFormat defaultFormat]; format.scale = [[UIScreen mainScreen] scale]; - UIGraphicsImageRenderer *renderer = + UIGraphicsImageRenderer* renderer = [[UIGraphicsImageRenderer alloc] initWithSize:_mapView.frame.size format:format]; - UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext *context){ + UIImage* image = [renderer imageWithActions:^(UIGraphicsImageRendererContext* context){ [_mapView.layer renderInContext: context.CGContext]; }]; - result([FlutterStandardTypedData typedDataWithBytes: UIImagePNGRepresentation(image)]); + result([FlutterStandardTypedData typedDataWithBytes:UIImagePNGRepresentation(image)]); } else { result([FlutterError errorWithCode:@"GoogleMap uninitialized" message:@"takeScreenshot called prior to map initialization" From a011122140dde1a95e5c3dff4fd93793e2150779 Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 18:13:56 +0900 Subject: [PATCH 07/13] [google_maps_flutter] Fix format --- .../googlemaps/GoogleMapController.java | 21 ++++++++++--------- .../ios/Classes/GoogleMapController.m | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index c71cf6babb13..0f3a079bb52c 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -283,16 +283,17 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { { if (googleMap != null) { final MethodChannel.Result _result = result; - googleMap.snapshot(new SnapshotReadyCallback() { - @Override - public void onSnapshotReady(Bitmap bitmap) { - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); - byte[] byteArray = stream.toByteArray(); - bitmap.recycle(); - _result.success(byteArray); - } - }); + googleMap.snapshot( + new SnapshotReadyCallback() { + @Override + public void onSnapshotReady(Bitmap bitmap) { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); + byte[] byteArray = stream.toByteArray(); + bitmap.recycle(); + _result.success(byteArray); + } + }); } else { result.error("GoogleMap uninitialized", "takeScreenshot", null); } diff --git a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m index 16c8189a6ac8..285061332d1a 100644 --- a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m +++ b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m @@ -176,10 +176,10 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { UIGraphicsImageRendererFormat* format = [UIGraphicsImageRendererFormat defaultFormat]; format.scale = [[UIScreen mainScreen] scale]; UIGraphicsImageRenderer* renderer = - [[UIGraphicsImageRenderer alloc] initWithSize:_mapView.frame.size format:format]; + [[UIGraphicsImageRenderer alloc] initWithSize:_mapView.frame.size format:format]; UIImage* image = [renderer imageWithActions:^(UIGraphicsImageRendererContext* context){ - [_mapView.layer renderInContext: context.CGContext]; + [_mapView.layer renderInContext:context.CGContext]; }]; result([FlutterStandardTypedData typedDataWithBytes:UIImagePNGRepresentation(image)]); } else { From c12c4b15db1ce34a51e550fcfd7e1fdd268ca8ec Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 18:23:59 +0900 Subject: [PATCH 08/13] [google_maps_flutter] Rename to takeSnapshot --- packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md | 2 +- .../io/flutter/plugins/googlemaps/GoogleMapController.java | 2 +- .../google_maps_flutter/example/lib/snapshot.dart | 4 ++-- .../example/test_driver/google_map_inspector.dart | 4 ++-- .../example/test_driver/google_maps_e2e.dart | 4 ++-- .../google_maps_flutter/ios/Classes/GoogleMapController.m | 2 +- .../google_maps_flutter/lib/src/controller.dart | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md index de7ab5d6c549..867216e0a482 100644 --- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.5.25 -* Added function for taking a screenshot of the map. +* Added function for taking a snapshot of the map. ## 0.5.24+1 diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index 0f3a079bb52c..e32e6486287b 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -279,7 +279,7 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { } break; } - case "map#takeScreenshot": + case "map#takeSnapshot": { if (googleMap != null) { final MethodChannel.Result _result = result; diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart index a9efa1ffa989..55d2a78b7d68 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart +++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/snapshot.dart @@ -48,9 +48,9 @@ class _SnapshotBodyState extends State<_SnapshotBody> { ), ), FlatButton( - child: Text('Take a screenshot'), + child: Text('Take a snapshot'), onPressed: () async { - final imageBytes = await _mapController?.takeScreenshot(); + final imageBytes = await _mapController?.takeSnapshot(); setState(() { _imageBytes = imageBytes; }); diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart index 72f5737dd65a..7b8d4d7d2811 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart +++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart @@ -66,7 +66,7 @@ class GoogleMapInspector { return await _channel.invokeMethod('map#isBuildingsEnabled'); } - Future takeScreenshot() async { - return await _channel.invokeMethod('map#takeScreenshot'); + Future takeSnapshot() async { + return await _channel.invokeMethod('map#takeSnapshot'); } } 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 25cde38c46cd..e4ad06bef545 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 @@ -825,7 +825,7 @@ void main() { expect(iwVisibleStatus, false); }); - testWidgets('testTakeScreenshot', (WidgetTester tester) async { + testWidgets('testTakeSnapshot', (WidgetTester tester) async { Completer inspectorCompleter = Completer(); @@ -847,7 +847,7 @@ void main() { await tester.pumpAndSettle(const Duration(seconds: 3)); final GoogleMapInspector inspector = await inspectorCompleter.future; - final Uint8List bytes = await inspector.takeScreenshot(); + final Uint8List bytes = await inspector.takeSnapshot(); expect(bytes, isNotNull); expect(bytes.isNotEmpty, true); }); diff --git a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m index 285061332d1a..93510caa5aa0 100644 --- a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m +++ b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m @@ -171,7 +171,7 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { } } else if ([call.method isEqualToString:@"map#waitForMap"]) { result(nil); - } else if ([call.method isEqualToString:@"map#takeScreenshot"]) { + } else if ([call.method isEqualToString:@"map#takeSnapshot"]) { if (_mapView != nil) { UIGraphicsImageRendererFormat* format = [UIGraphicsImageRendererFormat defaultFormat]; format.scale = [[UIScreen mainScreen] scale]; diff --git a/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart b/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart index ccae67fe217a..750bb69393e7 100644 --- a/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart +++ b/packages/google_maps_flutter/google_maps_flutter/lib/src/controller.dart @@ -287,7 +287,7 @@ class GoogleMapController { } /// Returns the image bytes of the map - Future takeScreenshot() async { - return await channel.invokeMethod('map#takeScreenshot'); + Future takeSnapshot() async { + return await channel.invokeMethod('map#takeSnapshot'); } } From 1b29a3c0a9d698ddff10ae0d4887c7a90895ee7f Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 14 Mar 2020 18:27:28 +0900 Subject: [PATCH 09/13] [google_maps_flutter] Fix format --- .../google_maps_flutter/ios/Classes/GoogleMapController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m index 93510caa5aa0..eb1a1d4ae2db 100644 --- a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m +++ b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m @@ -178,7 +178,7 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { UIGraphicsImageRenderer* renderer = [[UIGraphicsImageRenderer alloc] initWithSize:_mapView.frame.size format:format]; - UIImage* image = [renderer imageWithActions:^(UIGraphicsImageRendererContext* context){ + UIImage* image = [renderer imageWithActions:^(UIGraphicsImageRendererContext* context) { [_mapView.layer renderInContext:context.CGContext]; }]; result([FlutterStandardTypedData typedDataWithBytes:UIImagePNGRepresentation(image)]); From 4ee0fc529f26869ec8eade717963558121540e69 Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sat, 21 Mar 2020 16:37:45 +0900 Subject: [PATCH 10/13] [google_maps_flutter] Madify takeSnapshot --- .../io/flutter/plugins/googlemaps/GoogleMapController.java | 2 +- .../example/test_driver/google_maps_e2e.dart | 5 ++--- .../google_maps_flutter/ios/Classes/GoogleMapController.m | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java index e32e6486287b..9aea19696456 100644 --- a/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java +++ b/packages/google_maps_flutter/google_maps_flutter/android/src/main/java/io/flutter/plugins/googlemaps/GoogleMapController.java @@ -295,7 +295,7 @@ public void onSnapshotReady(Bitmap bitmap) { } }); } else { - result.error("GoogleMap uninitialized", "takeScreenshot", null); + result.error("GoogleMap uninitialized", "takeSnapshot", null); } break; } 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 a2c760ae18c1..347dde9bedd9 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 @@ -840,7 +840,7 @@ void main() { expect(scaled.toJson()[2], 2); }); - testWidgets('testTakeSnapshot', (WidgetTester tester) async { + testWidgets('testTakeSnapshot', (WidgetTester tester) async { Completer inspectorCompleter = Completer(); @@ -863,7 +863,6 @@ void main() { final GoogleMapInspector inspector = await inspectorCompleter.future; final Uint8List bytes = await inspector.takeSnapshot(); - expect(bytes, isNotNull); - expect(bytes.isNotEmpty, true); + expect(bytes?.isNotEmpty, true); }); } diff --git a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m index eb1a1d4ae2db..9b191979fe3d 100644 --- a/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m +++ b/packages/google_maps_flutter/google_maps_flutter/ios/Classes/GoogleMapController.m @@ -184,7 +184,7 @@ - (void)onMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { result([FlutterStandardTypedData typedDataWithBytes:UIImagePNGRepresentation(image)]); } else { result([FlutterError errorWithCode:@"GoogleMap uninitialized" - message:@"takeScreenshot called prior to map initialization" + message:@"takeSnapshot called prior to map initialization" details:nil]); } } else if ([call.method isEqualToString:@"markers#update"]) { From 0217242a8946e0ddf3216cd7ae66f1636e753ba1 Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Sun, 22 Mar 2020 09:52:45 +0900 Subject: [PATCH 11/13] Update AUTHORS --- AUTHORS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 47038c256401..2d77d920bdd3 100644 --- a/AUTHORS +++ b/AUTHORS @@ -50,4 +50,5 @@ Luigi Agosti Quentin Le Guennec Koushik Ravikumar Nissim Dsilva -Giancarlo Rocha \ No newline at end of file +Giancarlo Rocha +Ryo Miyake \ No newline at end of file From 5b83189a52ff7d13914713b097cb7cfe621a0a48 Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Tue, 24 Mar 2020 09:10:05 +0900 Subject: [PATCH 12/13] [google_maps_flutter] Update CHANGELOG and AUTHORS --- AUTHORS | 2 +- packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index 2d77d920bdd3..fe6fcee1c6bc 100644 --- a/AUTHORS +++ b/AUTHORS @@ -51,4 +51,4 @@ Quentin Le Guennec Koushik Ravikumar Nissim Dsilva Giancarlo Rocha -Ryo Miyake \ No newline at end of file +Ryo Miyake diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md index 91ae96bda2db..bf00be49c300 100644 --- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.5.25+1 -* Added function for taking a snapshot of the map. +* Add takeSnapshot that takes a snapshot of the map. ## 0.5.25 From bf964047af738f10803e45f1631c1e37d3cdf17d Mon Sep 17 00:00:00 2001 From: miyakeryo Date: Tue, 24 Mar 2020 09:13:44 +0900 Subject: [PATCH 13/13] [google_maps_flutter] Remove extra line --- .../example/test_driver/google_map_inspector.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart index 7b8d4d7d2811..a21e75ca9717 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart +++ b/packages/google_maps_flutter/google_maps_flutter/example/test_driver/google_map_inspector.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import 'dart:typed_data'; - import 'package:flutter/services.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';