Skip to content

Commit

Permalink
feat(vmt-pmtiles): add protomaps styles v4 (#47)
Browse files Browse the repository at this point in the history
* add protomaps styles v4

* enable vector_map_tiles demos in example app

* update themes, bump version, update changelog

* disable strict-inference lint
  • Loading branch information
josxha authored Oct 14, 2024
1 parent 60d098c commit be687b5
Show file tree
Hide file tree
Showing 19 changed files with 32,237 additions and 47 deletions.
8 changes: 5 additions & 3 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import 'package:flutter_map_plugins_example/flutter_map_cache/page.dart';
import 'package:flutter_map_plugins_example/flutter_map_compass/page.dart';
import 'package:flutter_map_plugins_example/flutter_map_mbtiles/page.dart';
import 'package:flutter_map_plugins_example/flutter_map_pmtiles/page.dart';
import 'package:flutter_map_plugins_example/vector_map_tiles_mbtiles/page.dart';
import 'package:flutter_map_plugins_example/vector_map_tiles_pmtiles/page.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:url_strategy/url_strategy.dart';

Expand All @@ -29,10 +31,10 @@ class MyApp extends StatelessWidget {
'/': (context) => const SelectionPage(),
'flutter_map_cache': (context) => const FlutterMapCachePage(),
'flutter_map_pmtiles': (context) => const FlutterMapPmTilesPage(),
// 'vector_map_tiles_pmtiles': (context) => VectorMapTilesPmTilesPage(),
'vector_map_tiles_pmtiles': (context) => VectorMapTilesPmTilesPage(),
'flutter_map_mbtiles': (context) => const FlutterMapMbTilesPage(),
// 'vector_map_tiles_mbtiles': (context) =>
// const VectorMapTilesMbTilesPage(),
'vector_map_tiles_mbtiles': (context) =>
const VectorMapTilesMbTilesPage(),
'flutter_map_compass': (context) => const FlutterMapCompassPage(),
},
);
Expand Down
2 changes: 1 addition & 1 deletion example/lib/vector_map_tiles_pmtiles/page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class VectorMapTilesPmTilesPage extends StatelessWidget {
///
/// Note: Styles from Mapbox, OpenMapTiles and others and not compatible
/// with Protomaps styles.
final vtr.Theme mapTheme = ProtomapsThemes.light(
final vtr.Theme mapTheme = ProtomapsThemes.lightV4(
logger: kDebugMode ? const vtr.Logger.console() : null,
);

Expand Down
4 changes: 4 additions & 0 deletions vector_map_tiles_pmtiles/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [1.5.0]

- Add Protomaps themes version 4.1.

## [1.4.0]

- Use `vector_map_tiles` version ^8.0.0 (`flutter_map` v7).
Expand Down
6 changes: 5 additions & 1 deletion vector_map_tiles_pmtiles/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
include: ../analysis_options.yaml
include: ../analysis_options.yaml

analyzer:
language:
strict-inference: false
104 changes: 78 additions & 26 deletions vector_map_tiles_pmtiles/lib/src/themes/protomaps_themes.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
import 'package:vector_map_tiles_pmtiles/src/themes/v3/_package.dart' as v3;
import 'package:vector_map_tiles_pmtiles/src/themes/v4/_package.dart' as v4;
import 'package:vector_tile_renderer/vector_tile_renderer.dart';

// ignore_for_file: prefer_single_quotes, require_trailing_commas

part 'black.dart';
part 'dark.dart';
part 'grayscale.dart';
part 'light.dart';
part 'white.dart';

/// Protomaps themes, version 3.0.1
/// Protomaps themes.
///
/// All themes are published by Protomaps under CC0 / public domain.
///
/// https://unpkg.com/browse/protomaps-themes-base@2.0.0-alpha.5/dist/layers/
/// https://unpkg.com/browse/protomaps-themes-base@4.1.0/dist/layers/
///
/// https://github.com/protomaps/basemaps/blob/main/CHANGELOG.md
class ProtomapsThemes {
Expand All @@ -29,43 +25,99 @@ class ProtomapsThemes {
},
this.glyphs =
"https://protomaps.github.io/basemaps-assets/fonts/{fontstack}/{range}.pbf",
this.sprites,
});

/// The [Logger] that gets provided to vector_map_tiles
/// The [Logger] that gets provided to vector_map_tiles.
final Logger? logger;

/// A Map of Tile Sources
/// A Map of Tile Sources.
final Map<String, Object> sources;

/// An URL template for the glyphs
/// An URL template for the glyphs.
final String glyphs;

/// An URL template for the sprites.
final String? sprites;

/// build the [Theme].
Theme build(List<Map<String, Object>> layers) =>
ThemeReader(logger: logger).read({
"version": 8,
"sources": sources,
"layers": layers,
"glyphs": glyphs,
if (sprites != null) "sprite": sprites,
});

/// Default Protomaps black theme
static Theme black({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(_themeBlack);
/// Prefer to use a versioned theme.
@Deprecated('Prefer to use a versioned theme')
static Theme black({Logger? logger}) => blackV3(logger: logger);

/// Prefer to use a versioned theme.
@Deprecated('Prefer to use a versioned theme')
static Theme dark({Logger? logger}) => darkV3(logger: logger);

/// Prefer to use a versioned theme.
@Deprecated('Prefer to use a versioned theme')
static Theme grayscale({Logger? logger}) => grayscaleV3(logger: logger);

/// Prefer to use a versioned theme.
@Deprecated('Prefer to use a versioned theme')
static Theme light({Logger? logger}) => lightV3(logger: logger);

/// Prefer to use a versioned theme.
@Deprecated('Prefer to use a versioned theme')
static Theme white({Logger? logger}) => whiteV3(logger: logger);

/// Protomaps black theme version 3.
static Theme blackV3({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(v3.themeBlack);

/// Protomaps dark theme version 3.
static Theme darkV3({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(v3.themeDark);

/// Protomaps grayscale theme version 3.
static Theme grayscaleV3({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(v3.themeGrayscale);

/// Protomaps light theme version 3.
static Theme lightV3({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(v3.themeLight);

/// Protomaps white theme version 3.
static Theme whiteV3({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(v3.themeWhite);

/// Protomaps black theme version 4.
static Theme blackV4({Logger? logger}) => ProtomapsThemes(
logger: logger,
sprites: 'https://protomaps.github.io/basemaps-assets/sprites/v4/black',
).build(v4.themeBlack);

/// Default Protomaps dark theme
static Theme dark({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(_themeDark);
/// Protomaps dark theme version 4.
static Theme darkV4({Logger? logger}) => ProtomapsThemes(
logger: logger,
sprites: 'https://protomaps.github.io/basemaps-assets/sprites/v4/dark',
).build(v4.themeDark);

/// Default Protomaps grayscale theme
static Theme grayscale({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(_themeGrayscale);
/// Protomaps grayscale theme version 4.
static Theme grayscaleV4({Logger? logger}) => ProtomapsThemes(
logger: logger,
sprites:
'https://protomaps.github.io/basemaps-assets/sprites/v4/grayscale',
).build(v4.themeGrayscale);

/// Default Protomaps light theme
static Theme light({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(_themeLight);
/// Protomaps light theme version 4.
static Theme lightV4({Logger? logger}) => ProtomapsThemes(
logger: logger,
sprites: 'https://protomaps.github.io/basemaps-assets/sprites/v4/light',
).build(v4.themeLight);

/// Default Protomaps white theme
static Theme white({Logger? logger}) =>
ProtomapsThemes(logger: logger).build(_themeWhite);
/// Protomaps white theme version 4.
static Theme whiteV4({Logger? logger}) => ProtomapsThemes(
logger: logger,
sprites: 'https://protomaps.github.io/basemaps-assets/sprites/v4/white',
).build(v4.themeWhite);
}
7 changes: 7 additions & 0 deletions vector_map_tiles_pmtiles/lib/src/themes/v3/_package.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// ignore_for_file: prefer_single_quotes, require_trailing_commas

part 'black.dart';
part 'dark.dart';
part 'grayscale.dart';
part 'light.dart';
part 'white.dart';
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
part of 'protomaps_themes.dart';
part of '_package.dart';

// ignore_for_file: prefer_single_quotes, require_trailing_commas

const _themeBlack = [
/// https://docs.protomaps.com/basemaps/themes#black
const themeBlack = [
{
"id": "background",
"type": "background",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
part of 'protomaps_themes.dart';
part of '_package.dart';

// ignore_for_file: prefer_single_quotes, require_trailing_commas

const _themeDark = [
/// https://docs.protomaps.com/basemaps/themes#dark
const themeDark = [
{
"id": "background",
"type": "background",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
part of 'protomaps_themes.dart';
part of '_package.dart';

// ignore_for_file: prefer_single_quotes, require_trailing_commas

const _themeGrayscale = [
/// https://docs.protomaps.com/basemaps/themes#grayscale
const themeGrayscale = [
{
"id": "background",
"type": "background",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
part of 'protomaps_themes.dart';
part of '_package.dart';

// ignore_for_file: prefer_single_quotes, require_trailing_commas

const _themeLight = [
/// https://docs.protomaps.com/basemaps/themes#light
const themeLight = [
{
"id": "background",
"type": "background",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
part of 'protomaps_themes.dart';
part of '_package.dart';

// ignore_for_file: prefer_single_quotes, require_trailing_commas

const _themeWhite = [
/// https://docs.protomaps.com/basemaps/themes#white
const themeWhite = [
{
"id": "background",
"type": "background",
Expand Down
7 changes: 7 additions & 0 deletions vector_map_tiles_pmtiles/lib/src/themes/v4/_package.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// ignore_for_file: prefer_single_quotes, require_trailing_commas

part 'black.dart';
part 'dark.dart';
part 'grayscale.dart';
part 'light.dart';
part 'white.dart';
Loading

0 comments on commit be687b5

Please sign in to comment.