read method

Future<Style> read()

Implementation

Future<Style> read() async {
  final url = StyleUriMapper(key: apiKey).map(uri);
  final styleText = await _httpGet(url);
  final style = await compute(jsonDecode, styleText);
  if (style is! Map<String, dynamic>) {
    throw _invalidStyle(url);
  }
  final sources = style['sources'];
  if (sources is! Map) {
    throw _invalidStyle(url);
  }
  final providerByName = await _readProviderByName(sources);
  final name = style['name'] as String?;

  final center = style['center'];
  LatLng? centerPoint;
  if (center is List && center.length == 2) {
    centerPoint =
        LatLng((center[1] as num).toDouble(), (center[0] as num).toDouble());
  }
  double? zoom = (style['zoom'] as num?)?.toDouble();
  if (zoom != null && zoom < 2) {
    zoom = null;
    centerPoint = null;
  }
  return Style(
      theme: ThemeReader(logger: logger).read(style),
      providers: TileProviders(providerByName),
      name: name,
      center: centerPoint,
      zoom: zoom);
}