67 lines
2.0 KiB
Dart
67 lines
2.0 KiB
Dart
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter_map/flutter_map.dart';
|
||
|
import 'package:latlong/latlong.dart';
|
||
|
import 'package:flutter_map_mbtiles_provider/flutter_map_mbtiles_provider.dart';
|
||
|
|
||
|
void main() {
|
||
|
runApp(FlutterMapApp());
|
||
|
}
|
||
|
|
||
|
class FlutterMapApp extends StatelessWidget {
|
||
|
// This widget is the root of your application.
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return MaterialApp(
|
||
|
title: 'Flutter Demo',
|
||
|
theme: ThemeData(
|
||
|
primarySwatch: Colors.blue,
|
||
|
),
|
||
|
home: OfflineMBTilesMapPage(),
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class OfflineMBTilesMapPage extends StatelessWidget {
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return Scaffold(
|
||
|
appBar: AppBar(title: Text('Offline Map (using MBTiles)')),
|
||
|
body: Padding(
|
||
|
padding: EdgeInsets.all(8.0),
|
||
|
child: Column(
|
||
|
children: [
|
||
|
Padding(
|
||
|
padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
|
||
|
child: Text(
|
||
|
'This is an offline map of Berlin, Germany using a single MBTiles file. The file was built from the Stamen toner map data (http://maps.stamen.com).\n\n'
|
||
|
'(Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.)'),
|
||
|
),
|
||
|
Flexible(
|
||
|
child: FlutterMap(
|
||
|
options: MapOptions(
|
||
|
center: LatLng(
|
||
|
52.516144,
|
||
|
13.404938,
|
||
|
),
|
||
|
minZoom: 12.0,
|
||
|
maxZoom: 14.0,
|
||
|
zoom: 12.0,
|
||
|
swPanBoundary: LatLng(52.492205, 13.282081),
|
||
|
nePanBoundary: LatLng(52.540084, 13.527795),
|
||
|
),
|
||
|
layers: [
|
||
|
TileLayerOptions(
|
||
|
tileProvider: MBTilesImageProvider.fromAsset('assets/berlin.mbtiles'),
|
||
|
maxZoom: 14.0,
|
||
|
backgroundColor: Colors.white,
|
||
|
tms: true),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|