amap_view_controller.dart 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import 'dart:async';
  2. import 'package:flutter/services.dart';
  3. import 'bean/amap_marker.dart';
  4. class AmapViewController {
  5. MethodChannel _methodChannel;
  6. StreamController _guideStreamController;
  7. Stream<Map> get guideStream => _guideStreamController.stream;
  8. AmapViewController(int id) {
  9. _methodChannel = MethodChannel("com.i2edu.mapView/map_view_$id");
  10. _methodChannel.setMethodCallHandler(platformCallHandler);
  11. _guideStreamController = StreamController<Map>.broadcast();
  12. }
  13. Future<void> platformCallHandler(MethodCall call) async {
  14. try {
  15. if (call.method == "guide") {
  16. _guideStreamController.add(call.arguments);
  17. }
  18. } catch (ex) {
  19. print('Unexpected error: $ex');
  20. }
  21. return null;
  22. }
  23. Future<void> setMapMarkers(List<AmapMarker> markers) async {
  24. return _methodChannel.invokeMethod(
  25. "setMarkers", {"markers": markers.map((f) => f.toMap()).toList()});
  26. }
  27. Future<void> onCreateMapView() async {
  28. return _methodChannel.invokeMethod('onCreate');
  29. }
  30. Future<void> onPauseMapView() async {
  31. return _methodChannel.invokeMethod('onPause');
  32. }
  33. Future<void> onResumeMapView() async {
  34. return _methodChannel.invokeMethod('onResume');
  35. }
  36. Future<void> moveCamera(Map<String,double> map) async {
  37. return _methodChannel.invokeMethod('moveCamera',{"data":map});
  38. }
  39. void dispose() {
  40. if (!_guideStreamController.isClosed) {
  41. _guideStreamController.close();
  42. }
  43. }
  44. }