setFloor method

Future<void> setFloor(
  1. int level, {
  2. bool animate = true,
})

Sets the current floor to be rendered by the map geometry.

Implementation

Future<void> setFloor(int level, {bool animate = true}) async {
  _currentFloor = level;

  // Build MapLibre filter expression:
  // Show if: (user_ordinal == currentFloor) OR (user_feature_type == 'venue') OR (user_feature_type == 'building')
  final filter = [
    'any',
    ['==', ['get', 'user_ordinal'], _currentFloor],
    ['==', ['get', 'user_feature_type'], 'venue'],
    ['==', ['get', 'user_feature_type'], 'building']
  ];

  // Apply this filter to all known geometry sources
  final sources = controller.geometry.sourceIds;
  for(final sourceId in sources) {
     await controller.geometry.setLayerFilter(sourceId, filter);
  }
}