├── example
├── ios
│ ├── Runner
│ │ ├── Runner-Bridging-Header.h
│ │ ├── Assets.xcassets
│ │ │ ├── LaunchImage.imageset
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ ├── README.md
│ │ │ │ └── Contents.json
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── Main.storyboard
│ │ │ └── LaunchScreen.storyboard
│ │ └── Info.plist
│ ├── Flutter
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── AppFrameworkInfo.plist
│ ├── Runner.xcodeproj
│ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ └── .gitignore
├── web
│ ├── favicon.png
│ ├── icons
│ │ ├── Icon-192.png
│ │ └── Icon-512.png
│ ├── manifest.json
│ └── index.html
├── android
│ ├── gradle.properties
│ ├── app
│ │ ├── src
│ │ │ ├── main
│ │ │ │ ├── res
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── drawable
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── drawable-v21
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── values
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── values-night
│ │ │ │ │ │ └── styles.xml
│ │ │ │ ├── kotlin
│ │ │ │ │ └── me
│ │ │ │ │ │ └── jpryan
│ │ │ │ │ │ └── flutter_map_example
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ └── profile
│ │ │ │ └── AndroidManifest.xml
│ │ └── build.gradle
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ ├── .gitignore
│ ├── settings.gradle
│ └── build.gradle
├── lib
│ ├── pages
│ │ ├── custom_crs
│ │ │ ├── origins.png
│ │ │ └── custom_crs.png
│ │ ├── esri.dart
│ │ ├── wms_tile_layer.dart
│ │ ├── offline_map.dart
│ │ ├── max_bounds.dart
│ │ ├── plugin_scalebar.dart
│ │ ├── circle.dart
│ │ ├── sliding_map.dart
│ │ ├── plugin_zoombuttons.dart
│ │ ├── overlay_image.dart
│ │ ├── tap_to_add.dart
│ │ ├── map_inside_listview.dart
│ │ ├── plugin_api.dart
│ │ ├── home.dart
│ │ ├── reset_tile_layer.dart
│ │ ├── moving_markers.dart
│ │ ├── network_tile_provider.dart
│ │ └── many_markers.dart
│ └── test_app.dart
├── assets
│ └── map
│ │ └── anholt_osmbright
│ │ ├── 12
│ │ ├── 2177
│ │ │ ├── 1259.png
│ │ │ ├── 1260.png
│ │ │ ├── 1261.png
│ │ │ └── 1262.png
│ │ ├── 2178
│ │ │ ├── 1259.png
│ │ │ ├── 1260.png
│ │ │ ├── 1261.png
│ │ │ └── 1262.png
│ │ ├── 2179
│ │ │ ├── 1259.png
│ │ │ ├── 1260.png
│ │ │ ├── 1261.png
│ │ │ └── 1262.png
│ │ ├── 2180
│ │ │ ├── 1259.png
│ │ │ ├── 1260.png
│ │ │ ├── 1261.png
│ │ │ └── 1262.png
│ │ └── 2181
│ │ │ ├── 1259.png
│ │ │ ├── 1260.png
│ │ │ ├── 1261.png
│ │ │ └── 1262.png
│ │ ├── 13
│ │ ├── 4354
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4355
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4356
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4357
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4358
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4359
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4360
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4361
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ ├── 4362
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ └── 4363
│ │ │ ├── 2518.png
│ │ │ ├── 2519.png
│ │ │ ├── 2520.png
│ │ │ ├── 2521.png
│ │ │ ├── 2522.png
│ │ │ ├── 2523.png
│ │ │ └── 2524.png
│ │ └── 14
│ │ ├── 8709
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8710
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8711
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8712
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8713
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8714
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8715
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8716
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8717
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8718
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8719
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8720
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8721
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8722
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8723
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8724
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8725
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ ├── 8726
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
│ │ └── 8727
│ │ ├── 5036.png
│ │ ├── 5037.png
│ │ ├── 5038.png
│ │ ├── 5039.png
│ │ ├── 5040.png
│ │ ├── 5041.png
│ │ ├── 5042.png
│ │ ├── 5043.png
│ │ ├── 5044.png
│ │ ├── 5045.png
│ │ ├── 5046.png
│ │ ├── 5047.png
│ │ ├── 5048.png
│ │ └── 5049.png
├── .metadata
├── README.md
└── .gitignore
├── test
├── res
│ └── map.png
└── helpers
│ └── core.dart
├── tool
└── history.sh
├── lib
├── plugin_api.dart
└── src
│ ├── core
│ ├── center_zoom.dart
│ ├── util.dart
│ ├── bounds.dart
│ └── point.dart
│ ├── layer
│ ├── layer.dart
│ ├── tile_provider
│ │ ├── file_tile_provider_web.dart
│ │ ├── file_tile_provider_io.dart
│ │ ├── network_image_with_retry.dart
│ │ └── tile_provider.dart
│ ├── group_layer.dart
│ └── overlay_image_layer.dart
│ ├── plugins
│ └── plugin.dart
│ ├── gestures
│ ├── latlng_tween.dart
│ ├── multi_finger_gesture.dart
│ └── interactive_flag.dart
│ └── map
│ └── map_state_widget.dart
├── .gitattributes
├── .metadata
├── .github
├── ISSUE_TEMPLATE
│ ├── config.yml
│ ├── feature-request.md
│ └── bug-report.md
└── workflows
│ ├── flutter.yml
│ └── stale.yml
├── pubspec.yaml
├── LICENSE
├── analysis_options.yaml
└── .gitignore
/example/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/test/res/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/test/res/map.png
--------------------------------------------------------------------------------
/tool/history.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
--------------------------------------------------------------------------------
/example/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/web/favicon.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/example/lib/pages/custom_crs/origins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/lib/pages/custom_crs/origins.png
--------------------------------------------------------------------------------
/example/lib/pages/custom_crs/custom_crs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/lib/pages/custom_crs/custom_crs.png
--------------------------------------------------------------------------------
/example/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2177/1259.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2177/1259.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2177/1260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2177/1260.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2177/1261.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2177/1261.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2177/1262.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2177/1262.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2178/1259.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2178/1259.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2178/1260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2178/1260.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2178/1261.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2178/1261.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2178/1262.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2178/1262.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2179/1259.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2179/1259.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2179/1260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2179/1260.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2179/1261.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2179/1261.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2179/1262.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2179/1262.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2180/1259.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2180/1259.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2180/1260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2180/1260.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2180/1261.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2180/1261.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2180/1262.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2180/1262.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2181/1259.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2181/1259.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2181/1260.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2181/1260.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2181/1261.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2181/1261.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/12/2181/1262.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/12/2181/1262.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4354/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4354/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4354/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4354/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4354/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4354/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4354/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4354/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4354/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4354/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4354/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4354/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4354/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4354/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4355/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4355/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4355/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4355/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4355/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4355/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4355/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4355/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4355/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4355/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4355/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4355/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4355/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4355/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4356/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4356/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4356/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4356/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4356/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4356/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4356/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4356/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4356/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4356/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4356/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4356/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4356/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4356/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4357/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4357/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4357/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4357/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4357/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4357/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4357/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4357/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4357/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4357/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4357/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4357/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4357/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4357/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4358/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4358/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4358/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4358/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4358/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4358/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4358/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4358/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4358/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4358/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4358/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4358/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4358/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4358/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4359/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4359/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4359/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4359/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4359/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4359/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4359/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4359/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4359/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4359/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4359/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4359/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4359/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4359/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4360/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4360/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4360/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4360/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4360/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4360/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4360/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4360/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4360/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4360/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4360/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4360/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4360/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4360/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4361/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4361/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4361/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4361/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4361/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4361/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4361/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4361/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4361/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4361/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4361/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4361/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4361/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4361/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4362/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4362/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4362/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4362/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4362/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4362/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4362/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4362/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4362/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4362/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4362/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4362/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4362/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4362/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4363/2518.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4363/2518.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4363/2519.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4363/2519.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4363/2520.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4363/2520.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4363/2521.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4363/2521.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4363/2522.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4363/2522.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4363/2523.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4363/2523.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/13/4363/2524.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/13/4363/2524.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8709/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8709/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8710/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8710/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8711/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8711/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8712/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8712/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8713/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8713/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8714/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8714/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8715/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8715/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8716/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8716/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8717/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8717/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8718/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8718/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8719/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8719/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8720/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8720/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8721/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8721/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8722/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8722/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8723/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8723/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8724/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8724/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8725/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8725/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8726/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8726/5049.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5036.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5036.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5037.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5037.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5038.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5038.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5039.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5039.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5040.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5040.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5041.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5042.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5042.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5043.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5043.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5044.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5044.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5045.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5045.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5046.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5047.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5047.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5048.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5048.png
--------------------------------------------------------------------------------
/example/assets/map/anholt_osmbright/14/8727/5049.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/assets/map/anholt_osmbright/14/8727/5049.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Zverik/flutter_map/master/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/app/src/main/kotlin/me/jpryan/flutter_map_example/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package me.jpryan.flutter_map_example
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/lib/plugin_api.dart:
--------------------------------------------------------------------------------
1 | library flutter_map.plugin_api;
2 |
3 | export 'package:flutter_map/flutter_map.dart';
4 | export 'package:flutter_map/src/core/bounds.dart';
5 | export 'package:flutter_map/src/core/center_zoom.dart';
6 | export 'package:flutter_map/src/map/map.dart';
7 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
7 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/src/core/center_zoom.dart:
--------------------------------------------------------------------------------
1 | import 'package:latlong2/latlong.dart';
2 |
3 | /// Geographical point with applied zoom level
4 | class CenterZoom {
5 | /// Coordinates for zoomed point
6 | final LatLng center;
7 |
8 | /// Zoom value
9 | final double zoom;
10 | CenterZoom({required this.center, required this.zoom});
11 | }
12 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case people don't have core.autocrlf set.
2 | * text=auto
3 |
4 | # Declare files that will always have CRLF line endings on checkout.
5 | *.dart text eol=lf
6 | *.yaml text eol=lf
7 | *.md text eol=lf
8 |
9 | # Denote all files that are truly binary and should not be modified.
10 | *.png binary
11 | *.jpg binary
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 8962f6dc68ec8e2206ac2fa874da4a453856c7d3
8 | channel: stable
9 |
10 | project_type: package
11 |
--------------------------------------------------------------------------------
/example/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 8962f6dc68ec8e2206ac2fa874da4a453856c7d3
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/lib/src/layer/layer.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/foundation.dart';
2 |
3 | /// Common type between all LayerOptions.
4 | ///
5 | /// All LayerOptions have access to a stream that notifies when the map needs
6 | /// rebuilding.
7 | class LayerOptions {
8 | final Key? key;
9 | final Stream? rebuild;
10 | LayerOptions({this.key, this.rebuild});
11 | }
12 |
--------------------------------------------------------------------------------
/lib/src/plugins/plugin.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 | import 'package:flutter_map/src/layer/layer.dart';
3 | import 'package:flutter_map/src/map/map.dart';
4 |
5 | abstract class MapPlugin {
6 | bool supportsLayer(LayerOptions options);
7 | Widget createLayer(
8 | LayerOptions options, MapState mapState, Stream stream);
9 | }
10 |
--------------------------------------------------------------------------------
/example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: Discord Server
4 | url: https://discord.gg/egEGeByf4q
5 | about: Need more generalised help, or just want to talk? Join the Discord server!
6 | - name: Community Maintained Plugins
7 | url: https://flutter-map.vercel.app/plugins/list
8 | about: If you need help with a plugin, please ask on their issue tracker first
9 |
--------------------------------------------------------------------------------
/lib/src/layer/tile_provider/file_tile_provider_web.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 |
3 | import '../tile_layer.dart';
4 | import 'tile_provider.dart';
5 |
6 | /// FileTileProvider
7 |
8 | class FileTileProvider extends TileProvider {
9 | const FileTileProvider();
10 | @override
11 | ImageProvider getImage(Coords coords, TileLayerOptions options) {
12 | return NetworkImage(getTileUrl(coords, options));
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/src/layer/tile_provider/file_tile_provider_io.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:flutter/widgets.dart';
4 |
5 | import '../tile_layer.dart';
6 | import 'tile_provider.dart';
7 |
8 | /// FileTileProvider
9 | class FileTileProvider extends TileProvider {
10 | const FileTileProvider();
11 | @override
12 | ImageProvider getImage(Coords coords, TileLayerOptions options) {
13 | return FileImage(File(getTileUrl(coords, options)));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/example/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/src/gestures/latlng_tween.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/animation.dart';
2 | import 'package:latlong2/latlong.dart';
3 |
4 | class LatLngTween extends Tween {
5 | LatLngTween({required LatLng begin, required LatLng end})
6 | : super(begin: begin, end: end);
7 |
8 | @override
9 | LatLng lerp(double t) => LatLng(
10 | begin!.latitude + (end!.latitude - begin!.latitude) * t,
11 | begin!.longitude + (end!.longitude - begin!.longitude) * t,
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # flutter_map_example
2 |
3 | A new Flutter project.
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
13 |
14 | For help getting started with Flutter, view our
15 | [online documentation](https://flutter.dev/docs), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
--------------------------------------------------------------------------------
/.github/workflows/flutter.yml:
--------------------------------------------------------------------------------
1 | name: Tests
2 |
3 | on:
4 | push:
5 | branches: master
6 | pull_request:
7 |
8 | defaults:
9 | run:
10 | shell: bash
11 | jobs:
12 | test:
13 | name: "Analyze and test"
14 | runs-on: ubuntu-latest
15 | steps:
16 | - uses: actions/checkout@v2
17 | - uses: subosito/flutter-action@v1
18 | - run: flutter pub get
19 | - run: dart format --output=none --set-exit-if-changed .
20 | - run: dart analyze --fatal-infos --fatal-warnings
21 | - run: flutter test -r expanded
22 | # - uses: actions/setup-java@v1
23 | # with:
24 | # java-version: '12.x'
25 |
26 |
--------------------------------------------------------------------------------
/test/helpers/core.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 | import 'dart:math';
3 |
4 | bool randomBool() => Random().nextBool();
5 |
6 | int randomInt([int max = 1000, zero = true]) =>
7 | min(Random().nextInt(max) + (zero ? 0 : 1), max);
8 |
9 | double randomDouble([double max = 1000.0, zero = true]) =>
10 | min(Random().nextDouble() * max + (zero ? 0 : 1), max);
11 |
12 | DateTime randomDateTime() =>
13 | DateTime.fromMillisecondsSinceEpoch(randomInt(100000));
14 |
15 | String randomString([int max = 20]) {
16 | final random = Random();
17 | return base64Encode(
18 | List.generate(max, (i) => random.nextInt(i + 1)).toList());
19 | }
20 |
--------------------------------------------------------------------------------
/example/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/example/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flutter_map_example",
3 | "short_name": "flutter_map_example",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "A new Flutter project.",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | }
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/example/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.50'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:4.1.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | jcenter()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_map
2 | description: A Dart implementation of Leaflet to provide a Map widget for Flutter apps
3 | version: 0.14.0
4 | repository: https://github.com/fleaflet/flutter_map
5 |
6 | environment:
7 | sdk: '>=2.12.0 <3.0.0'
8 | flutter: '>=2.0.0'
9 |
10 | dependencies:
11 | async: ^2.6.1
12 | collection: ^1.15.0
13 | flutter:
14 | sdk: flutter
15 | http: ^0.13.3
16 | intl: ^0.17.0
17 | latlong2: ^0.8.0
18 | meta: ^1.3.0
19 | positioned_tap_detector_2: ^1.0.4
20 | proj4dart: ^2.0.0
21 | transparent_image: ^2.0.0
22 | tuple: ^2.0.0
23 | vector_math: ^2.1.0
24 |
25 | dev_dependencies:
26 | flutter_test:
27 | sdk: flutter
28 | location: ^4.1.1
29 | mockito: ^5.0.2
30 | pedantic: ^1.11.0
31 | test: ^1.16.8
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | name: 'Close stale issues and PR'
2 | on:
3 | schedule:
4 | - cron: '30 1 * * *'
5 |
6 | jobs:
7 | stale:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: actions/stale@v3
11 | with:
12 | repo-token: ${{ secrets.GITHUB_TOKEN }}
13 | stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
14 | stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
15 | close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
16 | days-before-stale: 30
17 | days-before-close: 5
18 | days-before-pr-close: -1
19 |
20 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature Request
3 | about: Suggest an idea for this project
4 | title: "[FEATURE] ..."
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe The Problem**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe Your Solution**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Alternatives/Workarounds**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | ---
20 |
21 | **Additional Information**
22 | Add any other context or screenshots about the feature request here.
23 |
24 | **Applicable Platforms**
25 | Select platforms that this request applies to.
26 |
27 | - [ ] All/any
28 | - [ ] Android
29 | - [ ] iOS
30 | - [ ] Web
31 | - [ ] Windows
32 | - [ ] Others (beta platforms)
33 |
--------------------------------------------------------------------------------
/example/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/lib/src/map/map_state_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 |
3 | import 'map.dart';
4 |
5 | class MapStateInheritedWidget extends InheritedWidget {
6 | final MapState mapState;
7 |
8 | MapStateInheritedWidget({
9 | Key? key,
10 | required this.mapState,
11 | required Widget child,
12 | }) : super(key: key, child: child);
13 |
14 | @override
15 | bool updateShouldNotify(MapStateInheritedWidget oldWidget) {
16 | // mapState will be the same because FlutterMapState create MapState object just once
17 | // and pass the same instance to the old / new MapStateInheritedWidget
18 | // Moreover MapStateInheritedWidget child isn't cached so all of it's content will be updated no matter if we return here with false
19 | return true;
20 | }
21 |
22 | static MapStateInheritedWidget? maybeOf(BuildContext context) {
23 | return context
24 | .dependOnInheritedWidgetOfExactType();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | .vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 | # TODO: document why we don't want this file
34 | pubspec.lock
35 |
36 | # Web related
37 | lib/generated_plugin_registrant.dart
38 |
39 | # Symbolication related
40 | app.*.symbols
41 |
42 | # Obfuscation related
43 | app.*.map.json
44 |
45 | # Android Studio will place build artifacts here
46 | /android/app/debug
47 | /android/app/profile
48 | /android/app/release
49 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/example/lib/test_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | void main() {
6 | runApp(TestApp());
7 | }
8 |
9 | class TestApp extends StatefulWidget {
10 | @override
11 | _TestAppState createState() => _TestAppState();
12 | }
13 |
14 | class _TestAppState extends State {
15 | @override
16 | void initState() {
17 | super.initState();
18 | }
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | return MaterialApp(
23 | home: Scaffold(
24 | body: Center(
25 | child: Container(
26 | width: 200,
27 | height: 200,
28 | child: FlutterMap(
29 | options: MapOptions(
30 | center: LatLng(45.5231, -122.6765),
31 | zoom: 13.0,
32 | ),
33 | layers: [
34 | TileLayerOptions(
35 | urlTemplate:
36 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
37 | subdomains: ['a', 'b', 'c']),
38 | ],
39 | ),
40 | ),
41 | ),
42 | ),
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/src/gestures/multi_finger_gesture.dart:
--------------------------------------------------------------------------------
1 | /// Use [MultiFingerGesture] to disable / enable certain gestures Use
2 | /// [MultiFingerGesture.all] to enable all gestures, use
3 | /// [MultiFingerGesture.none] to disable all gestures
4 | ///
5 | /// If you want mix gestures for example rotate and pinchZoom gestures then you
6 | /// have two options A.) add you own flags: [MultiFingerGesture.rotate] |
7 | /// [MultiFingerGesture.pinchZoom] B.) remove unnecessary flags from all:
8 | /// [MultiFingerGesture.all] & ~[MultiFingerGesture.pinchMove]
9 | class MultiFingerGesture {
10 | static const int all = pinchMove | pinchZoom | rotate;
11 | static const int none = 0;
12 |
13 | // enable move with two or more fingers
14 | static const int pinchMove = 1 << 0;
15 |
16 | // enable pinch zoom
17 | static const int pinchZoom = 1 << 1;
18 |
19 | // enable map rotate
20 | static const int rotate = 1 << 2;
21 |
22 | /// Returns `true` if [leftFlags] has at least one member in [rightFlags]
23 | /// (intersection) for example [leftFlags]= [MultiFingerGesture.pinchMove] |
24 | /// [MultiFingerGesture.rotate] and [rightFlags]= [MultiFingerGesture.rotate]
25 | /// returns true because both have [MultiFingerGesture.rotate] flag
26 | static bool hasFlag(int leftFlags, int rightFlags) {
27 | return leftFlags & rightFlags != 0;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/example/lib/pages/esri.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class EsriPage extends StatelessWidget {
8 | static const String route = 'esri';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return Scaffold(
13 | appBar: AppBar(title: Text('Esri')),
14 | drawer: buildDrawer(context, route),
15 | body: Padding(
16 | padding: EdgeInsets.all(8.0),
17 | child: Column(
18 | children: [
19 | Padding(
20 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
21 | child: Text('Esri'),
22 | ),
23 | Flexible(
24 | child: FlutterMap(
25 | options: MapOptions(
26 | center: LatLng(45.5231, -122.6765),
27 | zoom: 13.0,
28 | ),
29 | layers: [
30 | TileLayerOptions(
31 | urlTemplate:
32 | 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}',
33 | ),
34 | ],
35 | ),
36 | ),
37 | ],
38 | ),
39 | ),
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/example/lib/pages/wms_tile_layer.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class WMSLayerPage extends StatelessWidget {
8 | static const String route = 'WMS layer';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return Scaffold(
13 | appBar: AppBar(title: Text('WMS Layer')),
14 | drawer: buildDrawer(context, route),
15 | body: Padding(
16 | padding: EdgeInsets.all(8.0),
17 | child: Column(
18 | children: [
19 | Padding(
20 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
21 | child: Text('This is a map that is showing (42.58, 12.43).'),
22 | ),
23 | Flexible(
24 | child: FlutterMap(
25 | options: MapOptions(
26 | center: LatLng(42.58, 12.43),
27 | zoom: 6.0,
28 | ),
29 | layers: [
30 | TileLayerOptions(
31 | wmsOptions: WMSTileLayerOptions(
32 | baseUrl: 'https://{s}.s2maps-tiles.eu/wms/?',
33 | layers: ['s2cloudless-2018_3857'],
34 | ),
35 | subdomains: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'],
36 | )
37 | ],
38 | ),
39 | ),
40 | ],
41 | ),
42 | ),
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/src/layer/tile_provider/network_image_with_retry.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/foundation.dart';
2 | import 'package:flutter/painting.dart';
3 | import 'package:http/http.dart';
4 | import 'package:http/retry.dart';
5 |
6 | class NetworkImageWithRetry extends ImageProvider {
7 | /// The URL from which the image will be fetched.
8 | final String url;
9 |
10 | /// The scale to place in the [ImageInfo] object of the image.
11 | final double scale;
12 |
13 | /// The http RetryClient that is used for the requests
14 | final RetryClient retryClient = RetryClient(Client());
15 |
16 | NetworkImageWithRetry(this.url, {this.scale = 1.0});
17 |
18 | @override
19 | ImageStreamCompleter load(NetworkImageWithRetry key, decode) {
20 | return OneFrameImageStreamCompleter(_loadWithRetry(key, decode),
21 | informationCollector: () sync* {
22 | yield ErrorDescription('Image provider: $this');
23 | yield ErrorDescription('Image key: $key');
24 | });
25 | }
26 |
27 | @override
28 | Future obtainKey(ImageConfiguration configuration) {
29 | return SynchronousFuture(this);
30 | }
31 |
32 | Future _loadWithRetry(
33 | NetworkImageWithRetry key, DecoderCallback decode) async {
34 | assert(key == this);
35 |
36 | final uri = Uri.parse(url);
37 | final response = await retryClient.get(uri);
38 | final codec = await decode(response.bodyBytes);
39 | final image = (await codec.getNextFrame()).image;
40 |
41 | return ImageInfo(
42 | image: image,
43 | scale: key.scale,
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2020, the flutter_map authors
2 | Copyright (c) 2010-2019, Vladimir Agafonkin
3 | Copyright (c) 2010-2011, CloudMade
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | * Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | * Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:pedantic/analysis_options.yaml
2 | linter:
3 | rules:
4 | - always_declare_return_types
5 | - annotate_overrides
6 | - avoid_function_literals_in_foreach_calls
7 | - avoid_null_checks_in_equality_operators
8 | - avoid_returning_null
9 | - avoid_unused_constructor_parameters
10 | - await_only_futures
11 | - camel_case_types
12 | - cancel_subscriptions
13 | - comment_references
14 | - constant_identifier_names
15 | - control_flow_in_finally
16 | - directives_ordering
17 | - empty_statements
18 | - hash_and_equals
19 | - implementation_imports
20 | - invariant_booleans
21 | - iterable_contains_unrelated_type
22 | - list_remove_unrelated_type
23 | - no_adjacent_strings_in_list
24 | - non_constant_identifier_names
25 | - omit_local_variable_types
26 | - only_throw_errors
27 | - overridden_fields
28 | - package_names
29 | - package_prefixed_library_names
30 | - prefer_adjacent_string_concatenation
31 | - prefer_collection_literals
32 | - prefer_conditional_assignment
33 | - prefer_final_fields
34 | - prefer_initializing_formals
35 | - prefer_interpolation_to_compose_strings
36 | - prefer_null_aware_operators
37 | - prefer_single_quotes
38 | - prefer_typing_uninitialized_variables
39 | - sort_pub_dependencies
40 | - test_types_in_equals
41 | - throw_in_finally
42 | - unnecessary_brace_in_string_interps
43 | - unnecessary_getters_setters
44 | - unnecessary_lambdas
45 | - unnecessary_new
46 | - unnecessary_null_aware_assignments
47 | - unnecessary_statements
48 | - unnecessary_this
49 |
--------------------------------------------------------------------------------
/example/lib/pages/offline_map.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class OfflineMapPage extends StatelessWidget {
8 | static const String route = '/offline_map';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return Scaffold(
13 | appBar: AppBar(title: Text('Offline Map')),
14 | drawer: buildDrawer(context, route),
15 | body: Padding(
16 | padding: EdgeInsets.all(8.0),
17 | child: Column(
18 | children: [
19 | Padding(
20 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
21 | child: Text(
22 | 'This is an offline map that is showing Anholt Island, Denmark.'),
23 | ),
24 | Flexible(
25 | child: FlutterMap(
26 | options: MapOptions(
27 | center: LatLng(56.704173, 11.543808),
28 | minZoom: 12.0,
29 | maxZoom: 14.0,
30 | zoom: 13.0,
31 | swPanBoundary: LatLng(56.6877, 11.5089),
32 | nePanBoundary: LatLng(56.7378, 11.6644),
33 | ),
34 | layers: [
35 | TileLayerOptions(
36 | tileProvider: AssetTileProvider(),
37 | maxZoom: 14.0,
38 | urlTemplate: 'assets/map/anholt_osmbright/{z}/{x}/{y}.png',
39 | ),
40 | ],
41 | ),
42 | ),
43 | ],
44 | ),
45 | ),
46 | );
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/example/lib/pages/max_bounds.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class MaxBoundsPage extends StatelessWidget {
8 | static const String route = '/max_bounds';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return Scaffold(
13 | appBar: AppBar(title: Text('Max Bounds edges check')),
14 | drawer: buildDrawer(context, route),
15 | body: Padding(
16 | padding: EdgeInsets.all(8.0),
17 | child: Column(
18 | children: [
19 | Padding(
20 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
21 | child: Text(
22 | 'This is a map that has edges constrained to a latlng bounds.'),
23 | ),
24 | Flexible(
25 | child: FlutterMap(
26 | options: MapOptions(
27 | center: LatLng(56.704173, 11.543808),
28 | zoom: 3.0,
29 | maxBounds:
30 | LatLngBounds(LatLng(-90, -180.0), LatLng(90.0, 180.0)),
31 | screenSize: MediaQuery.of(context).size,
32 | ),
33 | layers: [
34 | TileLayerOptions(
35 | maxZoom: 15.0,
36 | urlTemplate:
37 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
38 | subdomains: ['a', 'b', 'c'],
39 | ),
40 | ],
41 | ),
42 | ),
43 | ],
44 | ),
45 | ),
46 | );
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/example/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | flutter_map_example
30 |
31 |
32 |
33 |
36 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/example/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Create a bug report to help us improve
4 | title: "[BUG] ..."
5 | labels: bug, needs verification
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe The Bug**
11 | A clear and concise description of what the bug is. Try to be specific and give details when possible. Don't include your `flutter doctor` report here.
12 |
13 | **Expected Behavior**
14 | A clear and concise description of what you expected to happen.
15 |
16 | **Screenshots & Recordings**
17 | If possible, add screenshots or recordings to help explain your problem. This can quickly improve diagnosis of the issue.
18 |
19 | **Additional Information**
20 | Add any other context about the problem here, or remove this section.
21 |
22 | ---
23 |
24 | **Doctors Report**
25 |
26 | ```shell
27 | Paste your report from `flutter doctor` inside here
28 | ```
29 |
30 | **To Reproduce**
31 | Steps to reproduce the behavior:
32 |
33 | 1. Go to '...'
34 | 2. Click on '....'
35 | 3. Scroll down to '....'
36 | 4. See error
37 |
38 | ---
39 |
40 | **Severity**
41 | This will help us to label the issue quicker and decide what needs attention first. Only choose fatal if the entire app crashes, otherwise choose non-fatal.
42 |
43 | - [ ] Non-Fatal
44 | - [ ] Fatal / App Crashes
45 |
46 | **Frequency/Rarity**
47 | This will help us to label the issue quicker and decide what needs attention first.
48 |
49 | - [ ] Once
50 | - [ ] Uncommon
51 | - [ ] Common
52 | - [ ] Always
53 |
54 | **Applicable Platforms**
55 | Only select those that you've tested on - one or more. If possible, test on a variety of platforms.
56 |
57 | - [ ] Android
58 | - [ ] iOS
59 | - [ ] Web
60 | - [ ] Windows
61 | - [ ] Others (beta platforms)
62 |
--------------------------------------------------------------------------------
/example/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | flutter_map_example
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/example/lib/pages/plugin_scalebar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/plugin_api.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 | import 'scale_layer_plugin_option.dart';
7 |
8 | class PluginScaleBar extends StatelessWidget {
9 | static const String route = '/plugin_scalebar';
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Scaffold(
14 | appBar: AppBar(title: Text('ScaleBarPlugins')),
15 | drawer: buildDrawer(context, PluginScaleBar.route),
16 | body: Padding(
17 | padding: EdgeInsets.all(8.0),
18 | child: Column(
19 | children: [
20 | Flexible(
21 | child: FlutterMap(
22 | options: MapOptions(
23 | center: LatLng(51.5, -0.09),
24 | zoom: 5.0,
25 | plugins: [
26 | ScaleLayerPlugin(),
27 | ],
28 | ),
29 | layers: [
30 | TileLayerOptions(
31 | urlTemplate:
32 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
33 | subdomains: ['a', 'b', 'c'],
34 | ),
35 | ],
36 | nonRotatedLayers: [
37 | ScaleLayerPluginOption(
38 | lineColor: Colors.blue,
39 | lineWidth: 2,
40 | textStyle: TextStyle(color: Colors.blue, fontSize: 12),
41 | padding: EdgeInsets.all(10),
42 | ),
43 | ],
44 | ),
45 | ),
46 | ],
47 | ),
48 | ),
49 | );
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/example/lib/pages/circle.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class CirclePage extends StatelessWidget {
8 | static const String route = 'circle';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | var circleMarkers = [
13 | CircleMarker(
14 | point: LatLng(51.5, -0.09),
15 | color: Colors.blue.withOpacity(0.7),
16 | borderStrokeWidth: 2,
17 | useRadiusInMeter: true,
18 | radius: 2000 // 2000 meters | 2 km
19 | ),
20 | ];
21 |
22 | return Scaffold(
23 | appBar: AppBar(title: Text('Circle')),
24 | drawer: buildDrawer(context, route),
25 | body: Padding(
26 | padding: EdgeInsets.all(8.0),
27 | child: Column(
28 | children: [
29 | Padding(
30 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
31 | child: Text('This is a map that is showing (51.5, -0.9).'),
32 | ),
33 | Flexible(
34 | child: FlutterMap(
35 | options: MapOptions(
36 | center: LatLng(51.5, -0.09),
37 | zoom: 11.0,
38 | ),
39 | layers: [
40 | TileLayerOptions(
41 | urlTemplate:
42 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
43 | subdomains: ['a', 'b', 'c']),
44 | CircleLayerOptions(circles: circleMarkers)
45 | ],
46 | ),
47 | ),
48 | ],
49 | ),
50 | ),
51 | );
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/example/lib/pages/sliding_map.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class SlidingMapPage extends StatelessWidget {
8 | static const String route = '/sliding_map';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return Scaffold(
13 | appBar: AppBar(title: Text('Sliding Map')),
14 | drawer: buildDrawer(context, route),
15 | body: Padding(
16 | padding: EdgeInsets.all(8.0),
17 | child: Column(
18 | children: [
19 | Padding(
20 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
21 | child: Text(
22 | 'This is a map that can be panned smoothly when the boundaries are reached.'),
23 | ),
24 | Flexible(
25 | child: FlutterMap(
26 | options: MapOptions(
27 | center: LatLng(56.704173, 11.543808),
28 | minZoom: 12.0,
29 | maxZoom: 14.0,
30 | zoom: 13.0,
31 | swPanBoundary: LatLng(56.6877, 11.5089),
32 | nePanBoundary: LatLng(56.7378, 11.6644),
33 | slideOnBoundaries: true,
34 | screenSize: MediaQuery.of(context).size,
35 | ),
36 | layers: [
37 | TileLayerOptions(
38 | tileProvider: AssetTileProvider(),
39 | maxZoom: 14.0,
40 | urlTemplate: 'assets/map/anholt_osmbright/{z}/{x}/{y}.png',
41 | ),
42 | ],
43 | ),
44 | ),
45 | ],
46 | ),
47 | ),
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/src/gestures/interactive_flag.dart:
--------------------------------------------------------------------------------
1 | /// Use [InteractiveFlag] to disable / enable certain events Use
2 | /// [InteractiveFlag.all] to enable all events, use [InteractiveFlag.none] to
3 | /// disable all events
4 | ///
5 | /// If you want mix interactions for example drag and rotate interactions then
6 | /// you have two options A.) add you own flags: [InteractiveFlag.drag] |
7 | /// [InteractiveFlag.rotate] B.) remove unnecessary flags from all:
8 | /// [InteractiveFlag.all] & ~[InteractiveFlag.flingAnimation] &
9 | /// ~[InteractiveFlag.pinchMove] & ~[InteractiveFlag.pinchZoom] &
10 | /// ~[InteractiveFlag.doubleTapZoom]
11 | class InteractiveFlag {
12 | static const int all =
13 | drag | flingAnimation | pinchMove | pinchZoom | doubleTapZoom | rotate;
14 | static const int none = 0;
15 |
16 | // enable move with one finger
17 | static const int drag = 1 << 0;
18 |
19 | // enable fling animation when drag or pinchMove have enough Fling Velocity
20 | static const int flingAnimation = 1 << 1;
21 |
22 | // enable move with two or more fingers
23 | static const int pinchMove = 1 << 2;
24 |
25 | // enable pinch zoom
26 | static const int pinchZoom = 1 << 3;
27 |
28 | // enable double tap zoom animation
29 | static const int doubleTapZoom = 1 << 4;
30 |
31 | // enable map rotate
32 | static const int rotate = 1 << 5;
33 |
34 | /// Returns `true` if [leftFlags] has at least one member in [rightFlags]
35 | /// (intersection) for example [leftFlags]= [InteractiveFlag.drag] |
36 | /// [InteractiveFlag.rotate] and [rightFlags]= [InteractiveFlag.rotate] |
37 | /// [InteractiveFlag.flingAnimation] returns true because both have
38 | /// [InteractiveFlag.rotate] flag
39 | static bool hasFlag(int leftFlags, int rightFlags) {
40 | return leftFlags & rightFlags != 0;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/example/lib/pages/plugin_zoombuttons.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/plugin_api.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 | import 'zoombuttons_plugin_option.dart';
7 |
8 | class PluginZoomButtons extends StatelessWidget {
9 | static const String route = '/plugin_zoombuttons';
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Scaffold(
14 | appBar: AppBar(title: Text('ZoomButtonsPlugins')),
15 | drawer: buildDrawer(context, PluginZoomButtons.route),
16 | body: Padding(
17 | padding: EdgeInsets.all(8.0),
18 | child: Column(
19 | children: [
20 | Flexible(
21 | child: FlutterMap(
22 | options: MapOptions(
23 | center: LatLng(51.5, -0.09),
24 | zoom: 5.0,
25 | plugins: [
26 | ZoomButtonsPlugin(),
27 | ],
28 | ),
29 | layers: [
30 | TileLayerOptions(
31 | urlTemplate:
32 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
33 | subdomains: ['a', 'b', 'c'],
34 | tileProvider: NonCachingNetworkTileProvider(),
35 | ),
36 | ],
37 | nonRotatedLayers: [
38 | ZoomButtonsPluginOption(
39 | minZoom: 4,
40 | maxZoom: 19,
41 | mini: true,
42 | padding: 10,
43 | alignment: Alignment.bottomRight,
44 | ),
45 | ],
46 | ),
47 | ),
48 | ],
49 | ),
50 | ),
51 | );
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/example/lib/pages/overlay_image.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class OverlayImagePage extends StatelessWidget {
8 | static const String route = 'overlay_image';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | var overlayImages = [
13 | OverlayImage(
14 | bounds: LatLngBounds(LatLng(51.5, -0.09), LatLng(48.8566, 2.3522)),
15 | opacity: 0.8,
16 | imageProvider: NetworkImage(
17 | 'https://images.pexels.com/photos/231009/pexels-photo-231009.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=300&w=600')),
18 | ];
19 |
20 | return Scaffold(
21 | appBar: AppBar(title: Text('Overlay Image')),
22 | drawer: buildDrawer(context, route),
23 | body: Padding(
24 | padding: EdgeInsets.all(8.0),
25 | child: Column(
26 | children: [
27 | Padding(
28 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
29 | child: Text('This is a map that is showing (51.5, -0.9).'),
30 | ),
31 | Flexible(
32 | child: FlutterMap(
33 | options: MapOptions(
34 | center: LatLng(51.5, -0.09),
35 | zoom: 6.0,
36 | ),
37 | layers: [
38 | TileLayerOptions(
39 | urlTemplate:
40 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
41 | subdomains: ['a', 'b', 'c']),
42 | OverlayImageLayerOptions(overlayImages: overlayImages)
43 | ],
44 | ),
45 | ),
46 | ],
47 | ),
48 | ),
49 | );
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | .vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | .dart_tool/
26 | .flutter-plugins
27 | .flutter-plugins-dependencies
28 | .packages
29 | .pub-cache/
30 | .pub/
31 | build/
32 | # TODO: document why we don't want this file
33 | pubspec.lock
34 |
35 | # Android related
36 | **/android/**/gradle-wrapper.jar
37 | **/android/.gradle
38 | **/android/captures/
39 | **/android/gradlew
40 | **/android/gradlew.bat
41 | **/android/local.properties
42 | **/android/**/GeneratedPluginRegistrant.java
43 |
44 | # iOS/XCode related
45 | **/ios/**/*.mode1v3
46 | **/ios/**/*.mode2v3
47 | **/ios/**/*.moved-aside
48 | **/ios/**/*.pbxuser
49 | **/ios/**/*.perspectivev3
50 | **/ios/**/*sync/
51 | **/ios/**/.sconsign.dblite
52 | **/ios/**/.tags*
53 | **/ios/**/.vagrant/
54 | **/ios/**/DerivedData/
55 | **/ios/**/Icon?
56 | **/ios/**/Pods/
57 | **/ios/**/.symlinks/
58 | **/ios/**/profile
59 | **/ios/**/xcuserdata
60 | **/ios/.generated/
61 | **/ios/Flutter/App.framework
62 | **/ios/Flutter/Flutter.framework
63 | **/ios/Flutter/Flutter.podspec
64 | **/ios/Flutter/Generated.xcconfig
65 | **/ios/Flutter/app.flx
66 | **/ios/Flutter/app.zip
67 | **/ios/Flutter/flutter_assets/
68 | **/ios/Flutter/flutter_export_environment.sh
69 | **/ios/ServiceDefinitions.json
70 | **/ios/Runner/GeneratedPluginRegistrant.*
71 |
72 | # Exceptions to above rules.
73 | !**/ios/**/default.mode1v3
74 | !**/ios/**/default.mode2v3
75 | !**/ios/**/default.pbxuser
76 | !**/ios/**/default.perspectivev3
77 |
--------------------------------------------------------------------------------
/example/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 |
28 | android {
29 | compileSdkVersion 30
30 |
31 | sourceSets {
32 | main.java.srcDirs += 'src/main/kotlin'
33 | }
34 |
35 | defaultConfig {
36 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
37 | applicationId "me.jpryan.flutter_map_example"
38 | minSdkVersion 16
39 | targetSdkVersion 30
40 | versionCode flutterVersionCode.toInteger()
41 | versionName flutterVersionName
42 | }
43 |
44 | buildTypes {
45 | release {
46 | // TODO: Add your own signing config for the release build.
47 | // Signing with the debug keys for now, so `flutter run --release` works.
48 | signingConfig signingConfigs.debug
49 | }
50 | }
51 | }
52 |
53 | flutter {
54 | source '../..'
55 | }
56 |
57 | dependencies {
58 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
59 | }
60 |
--------------------------------------------------------------------------------
/lib/src/core/util.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:tuple/tuple.dart';
4 |
5 | var _templateRe = RegExp(r'\{ *([\w_-]+) *\}');
6 |
7 | /// Replaces the templating placeholders with the provided data map.
8 | ///
9 | /// Example input: https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
10 | ///
11 | /// Throws an [Exception] if any placeholder remains unresolved.
12 | String template(String str, Map data) {
13 | return str.replaceAllMapped(_templateRe, (Match match) {
14 | var firstMatch = match.group(1);
15 | if (firstMatch == null) {
16 | throw Exception('incorrect URL template: $str');
17 | }
18 | var value = data[firstMatch];
19 | if (value == null) {
20 | throw Exception('No value provided for variable ${match.group(1)}');
21 | } else {
22 | return value;
23 | }
24 | });
25 | }
26 |
27 | double wrapNum(double x, Tuple2 range, [bool? includeMax]) {
28 | var max = range.item2;
29 | var min = range.item1;
30 | var d = max - min;
31 | return x == max && includeMax != null ? x : ((x - min) % d + d) % d + min;
32 | }
33 |
34 | StreamTransformer throttleStreamTransformerWithTrailingCall(
35 | Duration duration) {
36 | Timer? timer;
37 | T recentData;
38 | var trailingCall = false;
39 |
40 | late final void Function(T data, EventSink sink) throttleHandler;
41 |
42 | throttleHandler = (T data, EventSink sink) {
43 | recentData = data;
44 |
45 | if (timer == null) {
46 | sink.add(recentData);
47 | timer = Timer(duration, () {
48 | timer = null;
49 |
50 | if (trailingCall) {
51 | trailingCall = false;
52 | throttleHandler(recentData, sink);
53 | }
54 | });
55 | } else {
56 | trailingCall = true;
57 | }
58 | };
59 |
60 | return StreamTransformer.fromHandlers(
61 | handleData: throttleHandler,
62 | handleDone: (EventSink sink) {
63 | timer?.cancel();
64 | sink.close();
65 | });
66 | }
67 |
--------------------------------------------------------------------------------
/example/lib/pages/tap_to_add.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 | import 'package:positioned_tap_detector_2/positioned_tap_detector_2.dart';
5 |
6 | import '../widgets/drawer.dart';
7 |
8 | class TapToAddPage extends StatefulWidget {
9 | static const String route = '/tap';
10 |
11 | @override
12 | State createState() {
13 | return TapToAddPageState();
14 | }
15 | }
16 |
17 | class TapToAddPageState extends State {
18 | List tappedPoints = [];
19 |
20 | @override
21 | Widget build(BuildContext context) {
22 | var markers = tappedPoints.map((latlng) {
23 | return Marker(
24 | width: 80.0,
25 | height: 80.0,
26 | point: latlng,
27 | builder: (ctx) => Container(
28 | child: FlutterLogo(),
29 | ),
30 | );
31 | }).toList();
32 |
33 | return Scaffold(
34 | appBar: AppBar(title: Text('Tap to add pins')),
35 | drawer: buildDrawer(context, TapToAddPage.route),
36 | body: Padding(
37 | padding: EdgeInsets.all(8.0),
38 | child: Column(
39 | children: [
40 | Padding(
41 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
42 | child: Text('Tap to add pins'),
43 | ),
44 | Flexible(
45 | child: FlutterMap(
46 | options: MapOptions(
47 | center: LatLng(45.5231, -122.6765),
48 | zoom: 13.0,
49 | onTap: _handleTap),
50 | layers: [
51 | TileLayerOptions(
52 | urlTemplate:
53 | 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
54 | ),
55 | MarkerLayerOptions(markers: markers)
56 | ],
57 | ),
58 | ),
59 | ],
60 | ),
61 | ),
62 | );
63 | }
64 |
65 | void _handleTap(TapPosition tapPosition, LatLng latlng) {
66 | setState(() {
67 | tappedPoints.add(latlng);
68 | });
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/example/lib/pages/map_inside_listview.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/plugin_api.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../pages/zoombuttons_plugin_option.dart';
6 | import '../widgets/drawer.dart';
7 |
8 | class MapInsideListViewPage extends StatelessWidget {
9 | static const String route = 'map_inside_listview';
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return Scaffold(
14 | appBar: AppBar(title: Text('Map inside ListView')),
15 | drawer: buildDrawer(context, MapInsideListViewPage.route),
16 | body: Padding(
17 | padding: EdgeInsets.all(8.0),
18 | child: ListView(
19 | scrollDirection: Axis.vertical,
20 | children: [
21 | Container(
22 | height: 300,
23 | child: FlutterMap(
24 | options: MapOptions(
25 | center: LatLng(51.5, -0.09),
26 | zoom: 5.0,
27 | plugins: [
28 | ZoomButtonsPlugin(),
29 | ],
30 | ),
31 | layers: [
32 | ZoomButtonsPluginOption(
33 | minZoom: 4,
34 | maxZoom: 19,
35 | mini: true,
36 | padding: 10,
37 | alignment: Alignment.bottomLeft,
38 | )
39 | ],
40 | children: [
41 | TileLayerWidget(
42 | options: TileLayerOptions(
43 | urlTemplate:
44 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
45 | subdomains: ['a', 'b', 'c'],
46 | ),
47 | ),
48 | ],
49 | ),
50 | ),
51 | Card(
52 | child: ListTile(
53 | title: Text(
54 | 'Scrolling inside the map does not scroll the ListView')),
55 | ),
56 | SizedBox(height: 500),
57 | Card(child: ListTile(title: Text('look at that scrolling')))
58 | ],
59 | ),
60 | ),
61 | );
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/lib/src/core/bounds.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math' as math;
2 |
3 | import 'package:flutter_map/src/core/point.dart';
4 |
5 | /// Rectangular bound delimited by orthogonal lines passing through two
6 | /// points.
7 | class Bounds {
8 | final CustomPoint min;
9 | final CustomPoint max;
10 |
11 | factory Bounds(CustomPoint a, CustomPoint b) {
12 | var bounds1 = Bounds._(a, b);
13 | var bounds2 = bounds1.extend(a);
14 | return bounds2.extend(b);
15 | }
16 |
17 | const Bounds._(this.min, this.max);
18 |
19 | /// Creates a new [Bounds] obtained by expanding the current ones with a new
20 | /// point.
21 | Bounds extend(CustomPoint point) {
22 | return Bounds._(
23 | CustomPoint(
24 | math.min(point.x, min.x),
25 | math.min(point.y, min.y),
26 | ),
27 | CustomPoint(
28 | math.max(point.x, max.x),
29 | math.max(point.y, max.y),
30 | ),
31 | );
32 | }
33 |
34 | /// This [Bounds] central point.
35 | CustomPoint get center => CustomPoint(
36 | (min.x + max.x) / 2,
37 | (min.y + max.y) / 2,
38 | );
39 |
40 | /// Bottom-Left corner's point.
41 | CustomPoint get bottomLeft => CustomPoint(min.x, max.y);
42 |
43 | /// Top-Right corner's point.
44 | CustomPoint get topRight => CustomPoint(max.x, min.y);
45 |
46 | /// Top-Left corner's point.
47 | CustomPoint get topLeft => min;
48 |
49 | /// Bottom-Right corner's point.
50 | CustomPoint get bottomRight => max;
51 |
52 | /// A point that contains the difference between the point's axis projections.
53 | CustomPoint get size {
54 | return max - min;
55 | }
56 |
57 | bool contains(CustomPoint point) {
58 | var min = point;
59 | var max = point;
60 | return containsBounds(Bounds(min, max));
61 | }
62 |
63 | bool containsBounds(Bounds b) {
64 | return (b.min.x >= min.x) &&
65 | (b.max.x <= max.x) &&
66 | (b.min.y >= min.y) &&
67 | (b.max.y <= max.y);
68 | }
69 |
70 | bool containsPartialBounds(Bounds b) {
71 | return (b.min.x <= max.x) &&
72 | (b.max.x >= min.x) &&
73 | (b.min.y <= max.y) &&
74 | (b.max.y >= min.y);
75 | }
76 |
77 | @override
78 | String toString() => 'Bounds($min, $max)';
79 | }
80 |
--------------------------------------------------------------------------------
/lib/src/layer/group_layer.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:flutter_map/src/map/map.dart';
4 |
5 | /// [LayerOptions] that describe a layer composed by multiple built-in layers.
6 | class GroupLayerOptions extends LayerOptions {
7 | List group = [];
8 |
9 | GroupLayerOptions({
10 | Key? key,
11 | this.group = const [],
12 | Stream? rebuild,
13 | }) : super(key: key, rebuild: rebuild);
14 | }
15 |
16 | class GroupLayerWidget extends StatelessWidget {
17 | final GroupLayerOptions options;
18 |
19 | GroupLayerWidget({Key? key, required this.options}) : super(key: key);
20 |
21 | @override
22 | Widget build(BuildContext context) {
23 | final mapState = MapState.maybeOf(context)!;
24 | return GroupLayer(options, mapState, mapState.onMoved);
25 | }
26 | }
27 |
28 | class GroupLayer extends StatelessWidget {
29 | final GroupLayerOptions groupOpts;
30 | final MapState map;
31 | final Stream stream;
32 |
33 | GroupLayer(this.groupOpts, this.map, this.stream) : super(key: groupOpts.key);
34 |
35 | @override
36 | Widget build(BuildContext context) {
37 | return StreamBuilder(
38 | stream: stream,
39 | builder: (BuildContext context, _) {
40 | var layers = [
41 | for (var options in groupOpts.group) _createLayer(options)
42 | ];
43 |
44 | return Container(
45 | child: Stack(
46 | children: layers,
47 | ),
48 | );
49 | },
50 | );
51 | }
52 |
53 | Widget _createLayer(LayerOptions options) {
54 | if (options is MarkerLayerOptions) {
55 | return MarkerLayer(options, map, options.rebuild);
56 | }
57 | if (options is CircleLayerOptions) {
58 | return CircleLayer(options, map, options.rebuild);
59 | }
60 | if (options is PolylineLayerOptions) {
61 | return PolylineLayer(options, map, options.rebuild);
62 | }
63 | if (options is PolygonLayerOptions) {
64 | return PolygonLayer(options, map, options.rebuild);
65 | }
66 | if (options is OverlayImageLayerOptions) {
67 | return OverlayImageLayer(options, map, options.rebuild);
68 | }
69 | throw Exception('Unknown options type for GeometryLayer: $options');
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/example/lib/pages/plugin_api.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/plugin_api.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class PluginPage extends StatelessWidget {
8 | static const String route = 'plugins';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | return Scaffold(
13 | appBar: AppBar(title: Text('Plugins')),
14 | drawer: buildDrawer(context, PluginPage.route),
15 | body: Padding(
16 | padding: EdgeInsets.all(8.0),
17 | child: Column(
18 | children: [
19 | Flexible(
20 | child: FlutterMap(
21 | options: MapOptions(
22 | center: LatLng(51.5, -0.09),
23 | zoom: 5.0,
24 | plugins: [
25 | MyCustomPlugin(),
26 | ],
27 | ),
28 | layers: [
29 | TileLayerOptions(
30 | urlTemplate:
31 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
32 | subdomains: ['a', 'b', 'c']),
33 | ],
34 | nonRotatedLayers: [
35 | MyCustomPluginOptions(text: "I'm a plugin!"),
36 | ],
37 | ),
38 | ),
39 | ],
40 | ),
41 | ),
42 | );
43 | }
44 | }
45 |
46 | class MyCustomPluginOptions extends LayerOptions {
47 | final String text;
48 | MyCustomPluginOptions({
49 | Key? key,
50 | this.text = '',
51 | Stream? rebuild,
52 | }) : super(key: key, rebuild: rebuild);
53 | }
54 |
55 | class MyCustomPlugin implements MapPlugin {
56 | @override
57 | Widget createLayer(
58 | LayerOptions options, MapState mapState, Stream stream) {
59 | if (options is MyCustomPluginOptions) {
60 | var style = TextStyle(
61 | fontWeight: FontWeight.bold,
62 | fontSize: 24.0,
63 | color: Colors.red,
64 | );
65 | return Text(
66 | options.text,
67 | key: options.key,
68 | style: style,
69 | );
70 | }
71 | throw Exception('Unknown options type for MyCustom'
72 | 'plugin: $options');
73 | }
74 |
75 | @override
76 | bool supportsLayer(LayerOptions options) {
77 | return options is MyCustomPluginOptions;
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/example/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
8 |
15 |
19 |
23 |
28 |
32 |
33 |
34 |
35 |
36 |
37 |
39 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/example/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example/lib/pages/home.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class HomePage extends StatelessWidget {
8 | static const String route = '/';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | var markers = [
13 | Marker(
14 | width: 80.0,
15 | height: 80.0,
16 | point: LatLng(51.5, -0.09),
17 | builder: (ctx) => Container(
18 | child: FlutterLogo(
19 | textColor: Colors.blue,
20 | key: ObjectKey(Colors.blue),
21 | ),
22 | ),
23 | ),
24 | Marker(
25 | width: 80.0,
26 | height: 80.0,
27 | point: LatLng(53.3498, -6.2603),
28 | builder: (ctx) => Container(
29 | child: FlutterLogo(
30 | textColor: Colors.green,
31 | key: ObjectKey(Colors.green),
32 | ),
33 | ),
34 | ),
35 | Marker(
36 | width: 80.0,
37 | height: 80.0,
38 | point: LatLng(48.8566, 2.3522),
39 | builder: (ctx) => Container(
40 | child: FlutterLogo(
41 | textColor: Colors.purple,
42 | key: ObjectKey(Colors.purple),
43 | ),
44 | ),
45 | ),
46 | ];
47 |
48 | return Scaffold(
49 | appBar: AppBar(title: Text('Home')),
50 | drawer: buildDrawer(context, route),
51 | body: Padding(
52 | padding: EdgeInsets.all(8.0),
53 | child: Column(
54 | children: [
55 | Padding(
56 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
57 | child: Text('This is a map that is showing (51.5, -0.9).'),
58 | ),
59 | Flexible(
60 | child: FlutterMap(
61 | options: MapOptions(
62 | center: LatLng(51.5, -0.09),
63 | zoom: 5.0,
64 | ),
65 | layers: [
66 | TileLayerOptions(
67 | urlTemplate:
68 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
69 | subdomains: ['a', 'b', 'c'],
70 | // For example purposes. It is recommended to use
71 | // TileProvider with a caching and retry strategy, like
72 | // NetworkTileProvider or CachedNetworkTileProvider
73 | tileProvider: NonCachingNetworkTileProvider(),
74 | ),
75 | MarkerLayerOptions(markers: markers)
76 | ],
77 | ),
78 | ),
79 | ],
80 | ),
81 | ),
82 | );
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/example/lib/pages/reset_tile_layer.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_map/flutter_map.dart';
5 | import 'package:latlong2/latlong.dart';
6 |
7 | import '../widgets/drawer.dart';
8 |
9 | class ResetTileLayerPage extends StatefulWidget {
10 | static const String route = '/reset_tilelayer';
11 | @override
12 | ResetTileLayerPageState createState() {
13 | return ResetTileLayerPageState();
14 | }
15 | }
16 |
17 | class ResetTileLayerPageState extends State {
18 | StreamController resetController = StreamController.broadcast();
19 |
20 | String layer1 = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
21 | String layer2 = 'http://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png';
22 | bool layerToggle = true;
23 |
24 | @override
25 | void initState() {
26 | super.initState();
27 | }
28 |
29 | void _resetTiles() {
30 | setState(() {
31 | layerToggle = !layerToggle;
32 | });
33 | resetController.add(null);
34 | }
35 |
36 | @override
37 | Widget build(BuildContext context) {
38 | var markers = [
39 | Marker(
40 | width: 80.0,
41 | height: 80.0,
42 | point: LatLng(51.5, -0.09),
43 | builder: (ctx) => Container(
44 | child: FlutterLogo(),
45 | ),
46 | ),
47 | ];
48 |
49 | return Scaffold(
50 | appBar: AppBar(title: Text('TileLayer Reset')),
51 | drawer: buildDrawer(context, ResetTileLayerPage.route),
52 | body: Padding(
53 | padding: EdgeInsets.all(8.0),
54 | child: Column(
55 | children: [
56 | Padding(
57 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
58 | child: Text(
59 | 'TileLayers can be progromatically reset, disposing of cached files'),
60 | ),
61 | Padding(
62 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
63 | child: Wrap(
64 | children: [
65 | MaterialButton(
66 | onPressed: _resetTiles,
67 | child: Text('Reset'),
68 | ),
69 | ],
70 | ),
71 | ),
72 | Flexible(
73 | child: FlutterMap(
74 | options: MapOptions(
75 | center: LatLng(51.5, -0.09),
76 | zoom: 5.0,
77 | ),
78 | layers: [
79 | TileLayerOptions(
80 | reset: resetController.stream,
81 | urlTemplate: layerToggle ? layer1 : layer2,
82 | subdomains: ['a', 'b', 'c']),
83 | MarkerLayerOptions(markers: markers)
84 | ],
85 | ),
86 | ),
87 | ],
88 | ),
89 | ),
90 | );
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/example/lib/pages/moving_markers.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_map/flutter_map.dart';
5 | import 'package:latlong2/latlong.dart';
6 |
7 | import '../widgets/drawer.dart';
8 |
9 | class MovingMarkersPage extends StatefulWidget {
10 | static const String route = '/moving_markers';
11 |
12 | @override
13 | _MovingMarkersPageState createState() {
14 | return _MovingMarkersPageState();
15 | }
16 | }
17 |
18 | class _MovingMarkersPageState extends State {
19 | Marker? _marker;
20 | late final Timer _timer;
21 | int _markerIndex = 0;
22 |
23 | @override
24 | void initState() {
25 | super.initState();
26 | _marker = _markers[_markerIndex];
27 | _timer = Timer.periodic(Duration(seconds: 1), (_) {
28 | setState(() {
29 | _marker = _markers[_markerIndex];
30 | _markerIndex = (_markerIndex + 1) % _markers.length;
31 | });
32 | });
33 | }
34 |
35 | @override
36 | void dispose() {
37 | super.dispose();
38 | _timer.cancel();
39 | }
40 |
41 | @override
42 | Widget build(BuildContext context) {
43 | return Scaffold(
44 | appBar: AppBar(title: Text('Home')),
45 | drawer: buildDrawer(context, MovingMarkersPage.route),
46 | body: Padding(
47 | padding: EdgeInsets.all(8.0),
48 | child: Column(
49 | children: [
50 | Padding(
51 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
52 | child: Text('This is a map that is showing (51.5, -0.9).'),
53 | ),
54 | Flexible(
55 | child: FlutterMap(
56 | options: MapOptions(
57 | center: LatLng(51.5, -0.09),
58 | zoom: 5.0,
59 | ),
60 | layers: [
61 | TileLayerOptions(
62 | urlTemplate:
63 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
64 | subdomains: ['a', 'b', 'c']),
65 | MarkerLayerOptions(markers: [_marker!])
66 | ],
67 | ),
68 | ),
69 | ],
70 | ),
71 | ),
72 | );
73 | }
74 | }
75 |
76 | List _markers = [
77 | Marker(
78 | width: 80.0,
79 | height: 80.0,
80 | point: LatLng(51.5, -0.09),
81 | builder: (ctx) => Container(
82 | child: FlutterLogo(),
83 | ),
84 | ),
85 | Marker(
86 | width: 80.0,
87 | height: 80.0,
88 | point: LatLng(53.3498, -6.2603),
89 | builder: (ctx) => Container(
90 | child: FlutterLogo(),
91 | ),
92 | ),
93 | Marker(
94 | width: 80.0,
95 | height: 80.0,
96 | point: LatLng(48.8566, 2.3522),
97 | builder: (ctx) => Container(
98 | child: FlutterLogo(),
99 | ),
100 | ),
101 | ];
102 |
--------------------------------------------------------------------------------
/lib/src/core/point.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math' as math;
2 |
3 | /// Data represenation of point located on map instance
4 | /// where [x] is horizontal and [y] is vertical pixel value
5 | class CustomPoint extends math.Point {
6 | const CustomPoint(num x, num y) : super(x as T, y as T);
7 |
8 | /// Create new [CustomPoint] whose [x] and [y] values are divided by [factor]
9 | CustomPoint operator /(num /*T|int*/ factor) {
10 | return CustomPoint(x / factor, y / factor);
11 | }
12 |
13 | /// Create new [CustomPoint] whose [x] and [y] values are rounded up
14 | /// to int
15 | CustomPoint ceil() {
16 | return CustomPoint(x.ceil(), y.ceil());
17 | }
18 |
19 | /// Create new [CustomPoint] whose [x] and [y] values are rounded down
20 | /// to int
21 | CustomPoint floor() {
22 | return CustomPoint(x.floor(), y.floor());
23 | }
24 |
25 | /// Create new [CustomPoint] whose [x] and [y] values are divided by
26 | /// other [point] values
27 | CustomPoint unscaleBy(CustomPoint point) {
28 | return CustomPoint(x / point.x, y / point.y);
29 | }
30 |
31 | /// Create new [CustomPoint] where [other] point values [x] and [y] are added
32 | @override
33 | CustomPoint operator +(math.Point other) {
34 | return CustomPoint(x + other.x, y + other.y);
35 | }
36 |
37 | /// Create new [CustomPoint] where [x] and [y] values are subtracted from
38 | /// [other] point [x] and [y] values
39 | @override
40 | CustomPoint operator -(math.Point other) {
41 | return CustomPoint(x - other.x, y - other.y);
42 | }
43 |
44 | /// Create new [CustomPoint] where [x] and [y] are multiplied by [factor]
45 | @override
46 | CustomPoint operator *(num /*T|int*/ factor) {
47 | return CustomPoint((x * factor), (y * factor));
48 | }
49 |
50 | /// Create new [CustomPoint] where [x] and [y] are scaled by [point] values
51 | CustomPoint scaleBy(CustomPoint point) {
52 | return CustomPoint(x * point.x, y * point.y);
53 | }
54 |
55 | /// Create new [CustomPoint] where [x] and [y] is rounded to int
56 | CustomPoint round() {
57 | final x = this.x is double ? this.x.round() : this.x;
58 | final y = this.y is double ? this.y.round() : this.y;
59 | return CustomPoint(x, y);
60 | }
61 |
62 | /// Create new [CustomPoint] with [x] and [y] multiplied by [n]
63 | CustomPoint multiplyBy(num n) {
64 | return CustomPoint(x * n, y * n);
65 | }
66 |
67 | /// Create new [CustomPoint] whose [x] and [y] values are rotated by [radians]
68 | /// in clockwise fashion
69 | CustomPoint rotate(num radians) {
70 | if (radians != 0.0) {
71 | final cos = math.cos(radians);
72 | final sin = math.sin(radians);
73 | final nx = (cos * x) + (sin * y);
74 | final ny = (cos * y) - (sin * x);
75 |
76 | return CustomPoint(nx, ny);
77 | }
78 |
79 | return this;
80 | }
81 |
82 | @override
83 | String toString() => 'CustomPoint ($x, $y)';
84 | }
85 |
--------------------------------------------------------------------------------
/example/lib/pages/network_tile_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 | import 'package:latlong2/latlong.dart';
4 |
5 | import '../widgets/drawer.dart';
6 |
7 | class NetworkTileProviderPage extends StatelessWidget {
8 | static const String route = 'NetworkTileProvider';
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | var markers = [
13 | Marker(
14 | width: 80.0,
15 | height: 80.0,
16 | point: LatLng(51.5, -0.09),
17 | builder: (ctx) => Container(
18 | child: FlutterLogo(
19 | textColor: Colors.blue,
20 | key: ObjectKey(Colors.blue),
21 | ),
22 | ),
23 | ),
24 | Marker(
25 | width: 80.0,
26 | height: 80.0,
27 | point: LatLng(53.3498, -6.2603),
28 | builder: (ctx) => Container(
29 | child: FlutterLogo(
30 | textColor: Colors.green,
31 | key: ObjectKey(Colors.green),
32 | ),
33 | ),
34 | ),
35 | Marker(
36 | width: 80.0,
37 | height: 80.0,
38 | point: LatLng(48.8566, 2.3522),
39 | builder: (ctx) => Container(
40 | child: FlutterLogo(
41 | textColor: Colors.purple,
42 | key: ObjectKey(Colors.purple),
43 | ),
44 | ),
45 | ),
46 | ];
47 |
48 | return Scaffold(
49 | appBar: AppBar(title: Text('NetworkTileProvider')),
50 | drawer: buildDrawer(context, route),
51 | body: Padding(
52 | padding: EdgeInsets.all(8.0),
53 | child: Column(
54 | children: [
55 | Padding(
56 | padding: EdgeInsets.only(top: 8.0, bottom: 8.0),
57 | child: Wrap(children: [
58 | Text('This Provider does not provide caching.'),
59 | Text(
60 | 'For further options about that, check flutter_map\'s README on GitHub.'),
61 | ]),
62 | ),
63 | Flexible(
64 | child: FlutterMap(
65 | options: MapOptions(
66 | center: LatLng(51.5, -0.09),
67 | zoom: 5.0,
68 | ),
69 | layers: [
70 | TileLayerOptions(
71 | urlTemplate:
72 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
73 | subdomains: ['a', 'b', 'c'],
74 | // For example purposes. It is recommended to use
75 | // TileProvider with a caching and retry strategy, like
76 | // NetworkTileProvider or CachedNetworkTileProvider
77 | tileProvider: NetworkTileProvider(),
78 | ),
79 | MarkerLayerOptions(markers: markers)
80 | ],
81 | ),
82 | ),
83 | ],
84 | ),
85 | ),
86 | );
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/lib/src/layer/overlay_image_layer.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/widgets.dart';
4 | import 'package:flutter_map/flutter_map.dart';
5 | import 'package:flutter_map/src/map/map.dart';
6 |
7 | class OverlayImageLayerOptions extends LayerOptions {
8 | final List overlayImages;
9 |
10 | OverlayImageLayerOptions({
11 | Key? key,
12 | this.overlayImages = const [],
13 | Stream? rebuild,
14 | }) : super(key: key, rebuild: rebuild);
15 | }
16 |
17 | class OverlayImage {
18 | final LatLngBounds bounds;
19 | final ImageProvider imageProvider;
20 | final double opacity;
21 | final bool gaplessPlayback;
22 |
23 | OverlayImage({
24 | required this.bounds,
25 | required this.imageProvider,
26 | this.opacity = 1.0,
27 | this.gaplessPlayback = false,
28 | });
29 | }
30 |
31 | class OverlayImageLayerWidget extends StatelessWidget {
32 | final OverlayImageLayerOptions options;
33 |
34 | OverlayImageLayerWidget({Key? key, required this.options}) : super(key: key);
35 |
36 | @override
37 | Widget build(BuildContext context) {
38 | final mapState = MapState.maybeOf(context)!;
39 | return OverlayImageLayer(options, mapState, mapState.onMoved);
40 | }
41 | }
42 |
43 | class OverlayImageLayer extends StatelessWidget {
44 | final OverlayImageLayerOptions overlayImageOpts;
45 | final MapState map;
46 | final Stream? stream;
47 |
48 | OverlayImageLayer(this.overlayImageOpts, this.map, this.stream)
49 | : super(key: overlayImageOpts.key);
50 |
51 | @override
52 | Widget build(BuildContext context) {
53 | return StreamBuilder(
54 | stream: stream,
55 | builder: (BuildContext context, _) {
56 | return ClipRect(
57 | child: Stack(
58 | children: [
59 | for (var overlayImage in overlayImageOpts.overlayImages)
60 | _positionedForOverlay(overlayImage),
61 | ],
62 | ),
63 | );
64 | },
65 | );
66 | }
67 |
68 | Positioned _positionedForOverlay(OverlayImage overlayImage) {
69 | final zoomScale =
70 | map.getZoomScale(map.zoom, map.zoom); // TODO replace with 1?
71 | final pixelOrigin = map.getPixelOrigin();
72 | final upperLeftPixel =
73 | map.project(overlayImage.bounds.northWest).multiplyBy(zoomScale) -
74 | pixelOrigin;
75 | final bottomRightPixel =
76 | map.project(overlayImage.bounds.southEast).multiplyBy(zoomScale) -
77 | pixelOrigin;
78 | return Positioned(
79 | left: upperLeftPixel.x.toDouble(),
80 | top: upperLeftPixel.y.toDouble(),
81 | width: (bottomRightPixel.x - upperLeftPixel.x).toDouble(),
82 | height: (bottomRightPixel.y - upperLeftPixel.y).toDouble(),
83 | child: Image(
84 | image: overlayImage.imageProvider,
85 | fit: BoxFit.fill,
86 | color: Color.fromRGBO(255, 255, 255, overlayImage.opacity),
87 | colorBlendMode: BlendMode.modulate,
88 | gaplessPlayback: overlayImage.gaplessPlayback,
89 | ),
90 | );
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/example/lib/pages/many_markers.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_map/flutter_map.dart';
5 | import 'package:latlong2/latlong.dart';
6 |
7 | import '../widgets/drawer.dart';
8 |
9 | const maxMarkersCount = 5000;
10 |
11 | /// On this page, [maxMarkersCount] markers are randomly generated
12 | /// across europe, and then you can limit them with a slider
13 | ///
14 | /// This way, you can test how map performs under a lot of markers
15 | class ManyMarkersPage extends StatefulWidget {
16 | static const String route = '/many_markers';
17 |
18 | @override
19 | _ManyMarkersPageState createState() => _ManyMarkersPageState();
20 | }
21 |
22 | class _ManyMarkersPageState extends State {
23 | double doubleInRange(Random source, num start, num end) =>
24 | source.nextDouble() * (end - start) + start;
25 | List allMarkers = [];
26 |
27 | int _sliderVal = maxMarkersCount ~/ 10;
28 |
29 | @override
30 | void initState() {
31 | super.initState();
32 | Future.microtask(() {
33 | var r = Random();
34 | for (var x = 0; x < maxMarkersCount; x++) {
35 | allMarkers.add(
36 | Marker(
37 | point: LatLng(
38 | doubleInRange(r, 37, 55),
39 | doubleInRange(r, -9, 30),
40 | ),
41 | builder: (context) => const Icon(
42 | Icons.circle,
43 | color: Colors.red,
44 | size: 12.0,
45 | ),
46 | ),
47 | );
48 | }
49 | setState(() {});
50 | });
51 | }
52 |
53 | @override
54 | Widget build(BuildContext context) {
55 | return Scaffold(
56 | appBar: AppBar(title: Text('A lot of markers')),
57 | drawer: buildDrawer(context, ManyMarkersPage.route),
58 | body: Column(
59 | children: [
60 | Slider(
61 | min: 0,
62 | max: maxMarkersCount.toDouble(),
63 | divisions: maxMarkersCount ~/ 500,
64 | label: 'Markers',
65 | value: _sliderVal.toDouble(),
66 | onChanged: (newVal) {
67 | _sliderVal = newVal.toInt();
68 | setState(() {});
69 | },
70 | ),
71 | Text('$_sliderVal markers'),
72 | Flexible(
73 | child: FlutterMap(
74 | options: MapOptions(
75 | center: LatLng(50, 20),
76 | zoom: 5.0,
77 | interactiveFlags: InteractiveFlag.all - InteractiveFlag.rotate,
78 | ),
79 | layers: [
80 | TileLayerOptions(
81 | urlTemplate:
82 | 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
83 | subdomains: ['a', 'b', 'c'],
84 | ),
85 | MarkerLayerOptions(
86 | markers: allMarkers.sublist(
87 | 0, min(allMarkers.length, _sliderVal))),
88 | ],
89 | ),
90 | ),
91 | ],
92 | ),
93 | );
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/lib/src/layer/tile_provider/tile_provider.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 | import 'package:flutter_map/flutter_map.dart';
3 |
4 | import 'network_image_with_retry.dart';
5 |
6 | abstract class TileProvider {
7 | const TileProvider();
8 |
9 | ImageProvider getImage(Coords coords, TileLayerOptions options);
10 |
11 | void dispose() {}
12 |
13 | String getTileUrl(Coords coords, TileLayerOptions options) {
14 | var urlTemplate = (options.wmsOptions != null)
15 | ? options.wmsOptions!
16 | .getUrl(coords, options.tileSize.toInt(), options.retinaMode)
17 | : options.urlTemplate;
18 |
19 | var z = _getZoomForUrl(coords, options);
20 |
21 | var data = {
22 | 'x': coords.x.round().toString(),
23 | 'y': coords.y.round().toString(),
24 | 'z': z.round().toString(),
25 | 's': getSubdomain(coords, options),
26 | 'r': '@2x',
27 | };
28 | if (options.tms) {
29 | data['y'] = invertY(coords.y.round(), z.round()).toString();
30 | }
31 | var allOpts = Map.from(data)
32 | ..addAll(options.additionalOptions);
33 | return options.templateFunction(urlTemplate!, allOpts);
34 | }
35 |
36 | double _getZoomForUrl(Coords coords, TileLayerOptions options) {
37 | var zoom = coords.z;
38 |
39 | if (options.zoomReverse) {
40 | zoom = options.maxZoom - zoom;
41 | }
42 |
43 | return zoom += options.zoomOffset;
44 | }
45 |
46 | int invertY(int y, int z) {
47 | return ((1 << z) - 1) - y;
48 | }
49 |
50 | String getSubdomain(Coords coords, TileLayerOptions options) {
51 | if (options.subdomains.isEmpty) {
52 | return '';
53 | }
54 | var index = (coords.x + coords.y).round() % options.subdomains.length;
55 | return options.subdomains[index];
56 | }
57 | }
58 |
59 | class NetworkTileProvider extends TileProvider {
60 | @override
61 | ImageProvider getImage(Coords coords, TileLayerOptions options) {
62 | return NetworkImageWithRetry(getTileUrl(coords, options));
63 | }
64 | }
65 |
66 | class NonCachingNetworkTileProvider extends TileProvider {
67 | const NonCachingNetworkTileProvider();
68 | @override
69 | ImageProvider getImage(Coords coords, TileLayerOptions options) {
70 | return NetworkImage(getTileUrl(coords, options));
71 | }
72 | }
73 |
74 | class AssetTileProvider extends TileProvider {
75 | const AssetTileProvider();
76 | @override
77 | ImageProvider getImage(Coords coords, TileLayerOptions options) {
78 | return AssetImage(getTileUrl(coords, options));
79 | }
80 | }
81 |
82 | class CustomTileProvider extends TileProvider {
83 | final String Function(Coords coors, TileLayerOptions options) customTileUrl;
84 |
85 | const CustomTileProvider({required this.customTileUrl});
86 |
87 | @override
88 | String getTileUrl(Coords coords, TileLayerOptions options) {
89 | return customTileUrl(coords, options);
90 | }
91 |
92 | @override
93 | ImageProvider getImage(Coords coords, TileLayerOptions options) {
94 | return AssetImage(getTileUrl(coords, options));
95 | }
96 | }
97 |
--------------------------------------------------------------------------------