in packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/method_channel/method_channel_google_maps_flutter.dart [167:263]
Future<dynamic> _handleMethodCall(MethodCall call, int mapId) async {
switch (call.method) {
case 'camera#onMoveStarted':
_mapEventStreamController.add(CameraMoveStartedEvent(mapId));
break;
case 'camera#onMove':
_mapEventStreamController.add(CameraMoveEvent(
mapId,
CameraPosition.fromMap(call.arguments['position'])!,
));
break;
case 'camera#onIdle':
_mapEventStreamController.add(CameraIdleEvent(mapId));
break;
case 'marker#onTap':
_mapEventStreamController.add(MarkerTapEvent(
mapId,
MarkerId(call.arguments['markerId']),
));
break;
case 'marker#onDragStart':
_mapEventStreamController.add(MarkerDragStartEvent(
mapId,
LatLng.fromJson(call.arguments['position'])!,
MarkerId(call.arguments['markerId']),
));
break;
case 'marker#onDrag':
_mapEventStreamController.add(MarkerDragEvent(
mapId,
LatLng.fromJson(call.arguments['position'])!,
MarkerId(call.arguments['markerId']),
));
break;
case 'marker#onDragEnd':
_mapEventStreamController.add(MarkerDragEndEvent(
mapId,
LatLng.fromJson(call.arguments['position'])!,
MarkerId(call.arguments['markerId']),
));
break;
case 'infoWindow#onTap':
_mapEventStreamController.add(InfoWindowTapEvent(
mapId,
MarkerId(call.arguments['markerId']),
));
break;
case 'polyline#onTap':
_mapEventStreamController.add(PolylineTapEvent(
mapId,
PolylineId(call.arguments['polylineId']),
));
break;
case 'polygon#onTap':
_mapEventStreamController.add(PolygonTapEvent(
mapId,
PolygonId(call.arguments['polygonId']),
));
break;
case 'circle#onTap':
_mapEventStreamController.add(CircleTapEvent(
mapId,
CircleId(call.arguments['circleId']),
));
break;
case 'map#onTap':
_mapEventStreamController.add(MapTapEvent(
mapId,
LatLng.fromJson(call.arguments['position'])!,
));
break;
case 'map#onLongPress':
_mapEventStreamController.add(MapLongPressEvent(
mapId,
LatLng.fromJson(call.arguments['position'])!,
));
break;
case 'tileOverlay#getTile':
final Map<TileOverlayId, TileOverlay>? tileOverlaysForThisMap =
_tileOverlays[mapId];
final String tileOverlayId = call.arguments['tileOverlayId'];
final TileOverlay? tileOverlay =
tileOverlaysForThisMap?[TileOverlayId(tileOverlayId)];
TileProvider? tileProvider = tileOverlay?.tileProvider;
if (tileProvider == null) {
return TileProvider.noTile.toJson();
}
final Tile tile = await tileProvider.getTile(
call.arguments['x'],
call.arguments['y'],
call.arguments['zoom'],
);
return tile.toJson();
default:
throw MissingPluginException();
}
}