flutter_map_plugins
flutter_map_plugins copied to clipboard
[BUG] pmtiles Invalid argument(s): `wmsOptions` or `urlTemplate`
Package
flutter_map_pmtiles
Bug Description
pmtiles has stopped working in flutter map v7 for some reason. I get this error now. Not exactly sure what to add in wmsOptions or urlTemplate. There is a buffer overflow of some sort and my vscode will start to freeze.
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): `wmsOptions` or `urlTemplate` must be provided to generate a tile URL
E/flutter (24312): #0 TileProvider.getTileUrl (package:flutter_map/src/layer/tile_layer/tile_provider/base_tile_provider.dart:231:14)
E/flutter (24312): #1 NetworkTileProvider.getImage (package:flutter_map/src/layer/tile_layer/tile_provider/network_tile_provider.dart:62:14)
E/flutter (24312): #2 _TileLayerState._createTileImage (package:flutter_map/src/layer/tile_layer/tile_layer.dart:554:31)
E/flutter (24312): #3 _TileLayerState._loadTiles.<anonymous closure> (package:flutter_map/src/layer/tile_layer/tile_layer.dart:643:36)
E/flutter (24312): #4 TileImageManager.createMissingTiles (package:flutter_map/src/layer/tile_layer/tile_image_manager.dart:58:54)
E/flutter (24312): #5 _TileLayerState._loadTiles (package:flutter_map/src/layer/tile_layer/tile_layer.dart:640:43)
E/flutter (24312): #6 _TileLayerState._onTileUpdateEvent (package:flutter_map/src/layer/tile_layer/tile_layer.dart:585:7)
E/flutter (24312): #7 _RootZone.runUnaryGuarded (dart:async/zone.dart:1594:10)
E/flutter (24312): #8 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:365:11)
Steps to Reproduce
- Create pmtiles
- load it from the assets folder to the app directory
- use it in TileLayer under FlutterMap
Expected Results
Ofcourse to show pmtiles :)
Actual Results
getting the error as shown above
Code Sample
PmTilesTileProvider? _pmTilesTileProvider;
//MARK: INIT STATE
@override
void initState() {
print('MainScreen initState');
super.initState();
_loadPmTiles();
}
//*MARK: LOAD PMTILES
Future<void> _loadPmTiles() async {
// Copy the PMTiles file from assets to a temporary directory
final ByteData data = await rootBundle.load("assets/terrain.pmtiles");
final Uint8List bytes = data.buffer.asUint8List();
final tempDir = await getTemporaryDirectory();
final tempFile = File('${tempDir.path}/terrain.pmtiles');
await tempFile.writeAsBytes(bytes);
print('tempFile.path ${tempFile.path}');
// Use the PmTilesTileProvider.fromSource method to load the PMTiles archive
final provider = await PmTilesTileProvider.fromSource(tempFile.path);
setState(() {
_pmTilesTileProvider = provider;
});
}
// add it in flutter_map down the line as Tilelayer
TileLayer(
// minZoom: 0,
// maxZoom: 3,
tileProvider: _pmTilesTileProvider,
urlTemplate: null,
wmsOptions: null,
// urlTemplate: null,
),
Platforms
all