70 lines
2.2 KiB
Dart
70 lines
2.2 KiB
Dart
import 'package:aves/model/device.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_map/flutter_map.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
const _tileLayerBackgroundColor = Colors.transparent;
|
|
|
|
class OSMHotLayer extends StatelessWidget {
|
|
const OSMHotLayer({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return TileLayerWidget(
|
|
options: TileLayerOptions(
|
|
urlTemplate: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
|
|
subdomains: ['a', 'b', 'c'],
|
|
backgroundColor: _tileLayerBackgroundColor,
|
|
tileProvider: _NetworkTileProvider(),
|
|
retinaMode: context.select<MediaQueryData, double>((mq) => mq.devicePixelRatio) > 1,
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class StamenTonerLayer extends StatelessWidget {
|
|
const StamenTonerLayer({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return TileLayerWidget(
|
|
options: TileLayerOptions(
|
|
urlTemplate: 'https://stamen-tiles-{s}.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}{r}.png',
|
|
subdomains: ['a', 'b', 'c', 'd'],
|
|
backgroundColor: _tileLayerBackgroundColor,
|
|
tileProvider: _NetworkTileProvider(),
|
|
retinaMode: context.select<MediaQueryData, double>((mq) => mq.devicePixelRatio) > 1,
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class StamenWatercolorLayer extends StatelessWidget {
|
|
const StamenWatercolorLayer({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return TileLayerWidget(
|
|
options: TileLayerOptions(
|
|
urlTemplate: 'https://stamen-tiles-{s}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg',
|
|
subdomains: ['a', 'b', 'c', 'd'],
|
|
backgroundColor: _tileLayerBackgroundColor,
|
|
tileProvider: _NetworkTileProvider(),
|
|
retinaMode: context.select<MediaQueryData, double>((mq) => mq.devicePixelRatio) > 1,
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class _NetworkTileProvider extends NetworkTileProvider {
|
|
final Map<String, String> headers = {
|
|
'User-Agent': device.userAgent,
|
|
};
|
|
|
|
_NetworkTileProvider();
|
|
|
|
@override
|
|
ImageProvider getImage(Coords<num> coords, TileLayerOptions options) {
|
|
return NetworkImage(getTileUrl(coords, options), headers: headers);
|
|
}
|
|
}
|