├── 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 | --------------------------------------------------------------------------------