├── .fvm ├── flutter_sdk └── fvm_config.json ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .metadata ├── CHANGELOG.md ├── LICENSE ├── README.md ├── analysis_options.yaml ├── example ├── .fvm │ ├── flutter_sdk │ └── fvm_config.json ├── .gitignore ├── .metadata ├── README.md ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── example │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── 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 │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── 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-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── Runner-Bridging-Header.h ├── lib │ ├── data.dart │ └── main.dart ├── pubspec.lock ├── pubspec.yaml └── test │ └── widget_test.dart ├── lib └── flutter_map_tappable_polyline.dart ├── pubspec.lock └── pubspec.yaml /.fvm/flutter_sdk: -------------------------------------------------------------------------------- 1 | /Users/hugo/fvm/versions/3.10.3 -------------------------------------------------------------------------------- /.fvm/fvm_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "flutterSdkVersion": "3.10.3", 3 | "flavors": {} 4 | } -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the master branch 7 | on: 8 | push: 9 | branches: [ master ] 10 | pull_request: 11 | branches: [ master ] 12 | 13 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 14 | jobs: 15 | # This workflow contains a single job called "build" 16 | analysis: 17 | # The type of runner that the job will run on 18 | runs-on: ubuntu-latest 19 | 20 | # Steps represent a sequence of tasks that will be executed as part of the job 21 | steps: 22 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 23 | - uses: actions/checkout@v2 24 | - uses: axel-op/dart-package-analyzer@v3 25 | with: 26 | # Required: 27 | githubToken: ${{ secrets.GITHUB_TOKEN }} 28 | - name: Check scores 29 | env: 30 | # NB: "analysis" is the id set above. Replace it with the one you used if different. 31 | TOTAL: ${{ steps.analysis.outputs.total }} 32 | run: | 33 | if (( $TOTAL < 110 )) 34 | then 35 | echo Score too low! 36 | exit 1 37 | fi 38 | -------------------------------------------------------------------------------- /.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 | 33 | # Android related 34 | **/android/**/gradle-wrapper.jar 35 | **/android/.gradle 36 | **/android/captures/ 37 | **/android/gradlew 38 | **/android/gradlew.bat 39 | **/android/local.properties 40 | **/android/**/GeneratedPluginRegistrant.java 41 | 42 | # iOS/XCode related 43 | **/ios/**/*.mode1v3 44 | **/ios/**/*.mode2v3 45 | **/ios/**/*.moved-aside 46 | **/ios/**/*.pbxuser 47 | **/ios/**/*.perspectivev3 48 | **/ios/**/*sync/ 49 | **/ios/**/.sconsign.dblite 50 | **/ios/**/.tags* 51 | **/ios/**/.vagrant/ 52 | **/ios/**/DerivedData/ 53 | **/ios/**/Icon? 54 | **/ios/**/Pods/ 55 | **/ios/**/.symlinks/ 56 | **/ios/**/profile 57 | **/ios/**/xcuserdata 58 | **/ios/.generated/ 59 | **/ios/Flutter/App.framework 60 | **/ios/Flutter/Flutter.framework 61 | **/ios/Flutter/Flutter.podspec 62 | **/ios/Flutter/Generated.xcconfig 63 | **/ios/Flutter/app.flx 64 | **/ios/Flutter/app.zip 65 | **/ios/Flutter/flutter_assets/ 66 | **/ios/Flutter/flutter_export_environment.sh 67 | **/ios/ServiceDefinitions.json 68 | **/ios/Runner/GeneratedPluginRegistrant.* 69 | 70 | # Exceptions to above rules. 71 | !**/ios/**/default.mode1v3 72 | !**/ios/**/default.mode2v3 73 | !**/ios/**/default.pbxuser 74 | !**/ios/**/default.perspectivev3 75 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 76 | -------------------------------------------------------------------------------- /.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: 27321ebbad34b0a3fafe99fac037102196d655ff 8 | channel: stable 9 | 10 | project_type: package 11 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 6.0.0 - 2023-10-31 🎃 2 | - **[BREAKING]** Upgrade `flutter_map` to `^6.0.0`. 3 | 4 | ## 5.0.0 - 2023-06-05 5 | - **[BREAKING]** Upgrade `flutter_map` to `^5.0.0`. *Thanks [@azaderdogan](https://github.com/azaderdogan) and [@JaffaKetchup](https://github.com/JaffaKetchup) 👏* 6 | 7 | ## 4.0.0+1 - 2023-04-13 8 | - Fixed flutter_map version in README 9 | 10 | ## 4.0.0 - 2023-04-13 11 | - **[BREAKING]** Upgrade `flutter_map` to 3.1.0. *Thanks [@jtthrillson](https://github.com/jtthrillson) 👏* 12 | - Fixed example app android embedding. *Thanks [@k5924](https://github.com/k5924)* 13 | 14 | ## 3.2.0 15 | - Upgrade `flutter_map` to 1.0.0 16 | 17 | ## 3.1.0 18 | - Upgrade `flutter_map` to 0.14.0 19 | 20 | ## 3.0.0 21 | - [BREAKING] Add support for overlapping lines (see [#31](https://github.com/OwnWeb/flutter_map_tappable_polyline/pull/31)), thanks [@FaFre](https://github.com/FaFre) 22 | - The `onTap` callback is now called with a list of `TaggedPolyline` instead of one 23 | - [BREAKING] Add tap position to onTap and onMiss callbacks 24 | - The `onTap` and `onMiss` callbacks now receive the position of the tap that (`TapUpDetails`) 25 | - Add LayerWidget (see [#31](https://github.com/OwnWeb/flutter_map_tappable_polyline/pull/31)), [@S-Man42](https://github.com/S-Man42) 26 | 27 | ## 2.0.0 28 | 29 | - Null safety (see [#27](https://github.com/OwnWeb/flutter_map_tappable_polyline/pull/27/files), thanks [@sbu](https://github.com/sbu-WBT)!) 30 | - Upgrade `flutter_map` to 0.13.1 31 | 32 | ## 1.3.1 33 | 34 | - Upgrade flutter map 35 | 36 | ## 1.3.0+1 37 | 38 | - Fix changelog deprecation notice about `TappablePolylineLayer.distance` 39 | 40 | ## 1.3.0 41 | 42 | - Update `flutter_map` dependency to 1.11.0 (see issue [#23](https://github.com/OwnWeb/flutter_map_tappable_polyline/issues/23), thanks [@S-Man42](https://github.com/S-Man42)) 43 | - Fix null pointer error when no onMiss callback was passed (see issue [#20](https://github.com/OwnWeb/flutter_map_tappable_polyline/issues/20)) 44 | 45 | ## 1.2.0 46 | 47 | - Trigger only one `onTap` event when multiple polylines are close to each other (#14, #18) @MKohm 48 | - *Deprecated*: `TappablePolylineLayer.distance` should no longer be part of public API and is now deprecated 49 | 50 | ## 1.1.1 51 | 52 | - Add missing latlong dependency @tuarrep 53 | 54 | ## 1.1.0 55 | 56 | - Center the map on the tap location when zooming (#17) @Mkohm 57 | 58 | ## 1.0.0 59 | 60 | - Allow zooming underlying map with double tap (#12) @Mkohm 61 | - Add `onMiss` callback when tap missed polyline (#12) @Mkohm 62 | 63 | ## 0.5.0 64 | 65 | - Detect tapping between polyline points (#8) @Mkohm 66 | 67 | ## 0.4.0 68 | 69 | - Add support for Polyline culling (#5) @Mkohm 70 | 71 | ## 0.3.3 72 | 73 | - Upgrade flutter_map to ^0.10.1 74 | 75 | ## 0.3.2 76 | 77 | - Upgrade flutter_map to ^0.9.0 78 | 79 | ## 0.3.1 80 | 81 | - Add example 82 | - Format code 83 | 84 | ## 0.3.0 85 | 86 | - Fix onTap callback 87 | 88 | ## 0.2.0 89 | 90 | - Better gesture handling to allow double tap on underlying map 91 | 92 | ## 0.1.0 93 | 94 | - Initial release 95 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 OwnWeb 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flutter Map Tappable Polyline 2 | 3 | [![pub package](https://img.shields.io/pub/v/flutter_map_tappable_polyline.svg)](https://pub.dartlang.org/packages/flutter_map_tappable_polyline) 4 | 5 | A Polyline with `onTap` event listener 6 | This is a plugin for [flutter_map](https://github.com/johnpryan/flutter_map) package 7 | 8 | ## Usage 9 | 10 | Add [`flutter_map`](https://github.com/johnpryan/flutter_map) and `flutter_map_tappable_polyline` to your pubspec: 11 | 12 | ```yaml 13 | dependencies: 14 | flutter_map: ^6.0.1 15 | flutter_map_tappable_polyline: any # take latest version on Pub 16 | ``` 17 | 18 | Add it in you FlutterMap and configure it using `TappablePolylineLayerOptions`. 19 | 20 | ```dart 21 | Widget build(BuildContext context) { 22 | return FlutterMap( 23 | options: new MapOptions( 24 | plugins: [ 25 | TappablePolylineMapPlugin(), 26 | ], 27 | ), 28 | layers: [ 29 | TileLayerOptions( 30 | urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 31 | subdomains: ['a', 'b', 'c'], 32 | ), 33 | TappablePolylineLayerOptions( 34 | // Will only render visible polylines, increasing performance 35 | polylineCulling: true, 36 | polylines: [ 37 | TaggedPolyline( 38 | tag: "My Polyline", // An optional tag to distinguish polylines in `onTap` callback 39 | // ...all other Polyline options 40 | ), 41 | ], 42 | onTap: (polylines, tapPosition) => print('Tapped: ' + 43 | polylines.map((polyline) => polyline.tag).join(',') + 44 | ' at ' + 45 | tapPosition.globalPosition.toString()), 46 | onMiss: (tapPosition) { 47 | print('No polyline was tapped at position ' + 48 | tapPosition.globalPosition.toString()); 49 | } 50 | ) 51 | ], 52 | ); 53 | } 54 | ``` 55 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:pedantic/analysis_options.yaml 2 | 3 | linter: 4 | rules: 5 | omit_local_variable_types: false 6 | -------------------------------------------------------------------------------- /example/.fvm/flutter_sdk: -------------------------------------------------------------------------------- 1 | /Users/hugo/fvm/versions/3.10.3 -------------------------------------------------------------------------------- /example/.fvm/fvm_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "flutterSdkVersion": "3.10.3", 3 | "flavors": {} 4 | } -------------------------------------------------------------------------------- /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 | .dart_tool/ 26 | .flutter-plugins 27 | .flutter-plugins-dependencies 28 | .packages 29 | .pub-cache/ 30 | .pub/ 31 | /build/ 32 | 33 | # Web related 34 | lib/generated_plugin_registrant.dart 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Exceptions to above rules. 43 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 44 | -------------------------------------------------------------------------------- /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: 8857c4cec89164fdb6293bef69f9d62c62733efa 8 | channel: master 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | # 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 | -------------------------------------------------------------------------------- /example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | -------------------------------------------------------------------------------- /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 31 30 | 31 | sourceSets { 32 | main.java.srcDirs += 'src/main/kotlin' 33 | } 34 | 35 | lintOptions { 36 | disable 'InvalidPackage' 37 | } 38 | 39 | defaultConfig { 40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 41 | applicationId "com.example.example" 42 | minSdkVersion 21 43 | targetSdkVersion 28 44 | versionCode flutterVersionCode.toInteger() 45 | versionName flutterVersionName 46 | } 47 | 48 | buildTypes { 49 | release { 50 | // TODO: Add your own signing config for the release build. 51 | // Signing with the debug keys for now, so `flutter run --release` works. 52 | signingConfig signingConfigs.debug 53 | } 54 | } 55 | } 56 | 57 | flutter { 58 | source '../..' 59 | } 60 | 61 | dependencies { 62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 63 | } 64 | -------------------------------------------------------------------------------- /example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 8 | 12 | 19 | 20 | 21 | 22 | 23 | 28 | 31 | 35 | 38 | 39 | 41 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /example/android/app/src/main/kotlin/com/example/example/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.example 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /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/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.7.10' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.1.3' 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 | tasks.register("clean", Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /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-7.5.1-all.zip 7 | -------------------------------------------------------------------------------- /example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /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/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 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 | 11.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXCopyFilesBuildPhase section */ 19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 20 | isa = PBXCopyFilesBuildPhase; 21 | buildActionMask = 2147483647; 22 | dstPath = ""; 23 | dstSubfolderSpec = 10; 24 | files = ( 25 | ); 26 | name = "Embed Frameworks"; 27 | runOnlyForDeploymentPostprocessing = 0; 28 | }; 29 | /* End PBXCopyFilesBuildPhase section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 9740EEB11CF90186004384FC /* Flutter */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 65 | ); 66 | name = Flutter; 67 | sourceTree = ""; 68 | }; 69 | 97C146E51CF9000F007C117D = { 70 | isa = PBXGroup; 71 | children = ( 72 | 9740EEB11CF90186004384FC /* Flutter */, 73 | 97C146F01CF9000F007C117D /* Runner */, 74 | 97C146EF1CF9000F007C117D /* Products */, 75 | ); 76 | sourceTree = ""; 77 | }; 78 | 97C146EF1CF9000F007C117D /* Products */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 97C146EE1CF9000F007C117D /* Runner.app */, 82 | ); 83 | name = Products; 84 | sourceTree = ""; 85 | }; 86 | 97C146F01CF9000F007C117D /* Runner */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 92 | 97C147021CF9000F007C117D /* Info.plist */, 93 | 97C146F11CF9000F007C117D /* Supporting Files */, 94 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 95 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 96 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 97 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 98 | ); 99 | path = Runner; 100 | sourceTree = ""; 101 | }; 102 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | ); 106 | name = "Supporting Files"; 107 | sourceTree = ""; 108 | }; 109 | /* End PBXGroup section */ 110 | 111 | /* Begin PBXNativeTarget section */ 112 | 97C146ED1CF9000F007C117D /* Runner */ = { 113 | isa = PBXNativeTarget; 114 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 115 | buildPhases = ( 116 | 9740EEB61CF901F6004384FC /* Run Script */, 117 | 97C146EA1CF9000F007C117D /* Sources */, 118 | 97C146EB1CF9000F007C117D /* Frameworks */, 119 | 97C146EC1CF9000F007C117D /* Resources */, 120 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 121 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 122 | ); 123 | buildRules = ( 124 | ); 125 | dependencies = ( 126 | ); 127 | name = Runner; 128 | productName = Runner; 129 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 130 | productType = "com.apple.product-type.application"; 131 | }; 132 | /* End PBXNativeTarget section */ 133 | 134 | /* Begin PBXProject section */ 135 | 97C146E61CF9000F007C117D /* Project object */ = { 136 | isa = PBXProject; 137 | attributes = { 138 | LastUpgradeCheck = 1300; 139 | ORGANIZATIONNAME = ""; 140 | TargetAttributes = { 141 | 97C146ED1CF9000F007C117D = { 142 | CreatedOnToolsVersion = 7.3.1; 143 | LastSwiftMigration = 1100; 144 | }; 145 | }; 146 | }; 147 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 148 | compatibilityVersion = "Xcode 9.3"; 149 | developmentRegion = en; 150 | hasScannedForEncodings = 0; 151 | knownRegions = ( 152 | en, 153 | Base, 154 | ); 155 | mainGroup = 97C146E51CF9000F007C117D; 156 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 157 | projectDirPath = ""; 158 | projectRoot = ""; 159 | targets = ( 160 | 97C146ED1CF9000F007C117D /* Runner */, 161 | ); 162 | }; 163 | /* End PBXProject section */ 164 | 165 | /* Begin PBXResourcesBuildPhase section */ 166 | 97C146EC1CF9000F007C117D /* Resources */ = { 167 | isa = PBXResourcesBuildPhase; 168 | buildActionMask = 2147483647; 169 | files = ( 170 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 171 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 172 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 173 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 174 | ); 175 | runOnlyForDeploymentPostprocessing = 0; 176 | }; 177 | /* End PBXResourcesBuildPhase section */ 178 | 179 | /* Begin PBXShellScriptBuildPhase section */ 180 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 181 | isa = PBXShellScriptBuildPhase; 182 | alwaysOutOfDate = 1; 183 | buildActionMask = 2147483647; 184 | files = ( 185 | ); 186 | inputPaths = ( 187 | "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", 188 | ); 189 | name = "Thin Binary"; 190 | outputPaths = ( 191 | ); 192 | runOnlyForDeploymentPostprocessing = 0; 193 | shellPath = /bin/sh; 194 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 195 | }; 196 | 9740EEB61CF901F6004384FC /* Run Script */ = { 197 | isa = PBXShellScriptBuildPhase; 198 | alwaysOutOfDate = 1; 199 | buildActionMask = 2147483647; 200 | files = ( 201 | ); 202 | inputPaths = ( 203 | ); 204 | name = "Run Script"; 205 | outputPaths = ( 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | shellPath = /bin/sh; 209 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 210 | }; 211 | /* End PBXShellScriptBuildPhase section */ 212 | 213 | /* Begin PBXSourcesBuildPhase section */ 214 | 97C146EA1CF9000F007C117D /* Sources */ = { 215 | isa = PBXSourcesBuildPhase; 216 | buildActionMask = 2147483647; 217 | files = ( 218 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 219 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 220 | ); 221 | runOnlyForDeploymentPostprocessing = 0; 222 | }; 223 | /* End PBXSourcesBuildPhase section */ 224 | 225 | /* Begin PBXVariantGroup section */ 226 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 227 | isa = PBXVariantGroup; 228 | children = ( 229 | 97C146FB1CF9000F007C117D /* Base */, 230 | ); 231 | name = Main.storyboard; 232 | sourceTree = ""; 233 | }; 234 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 235 | isa = PBXVariantGroup; 236 | children = ( 237 | 97C147001CF9000F007C117D /* Base */, 238 | ); 239 | name = LaunchScreen.storyboard; 240 | sourceTree = ""; 241 | }; 242 | /* End PBXVariantGroup section */ 243 | 244 | /* Begin XCBuildConfiguration section */ 245 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 246 | isa = XCBuildConfiguration; 247 | buildSettings = { 248 | ALWAYS_SEARCH_USER_PATHS = NO; 249 | CLANG_ANALYZER_NONNULL = YES; 250 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 251 | CLANG_CXX_LIBRARY = "libc++"; 252 | CLANG_ENABLE_MODULES = YES; 253 | CLANG_ENABLE_OBJC_ARC = YES; 254 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 255 | CLANG_WARN_BOOL_CONVERSION = YES; 256 | CLANG_WARN_COMMA = YES; 257 | CLANG_WARN_CONSTANT_CONVERSION = YES; 258 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 259 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 260 | CLANG_WARN_EMPTY_BODY = YES; 261 | CLANG_WARN_ENUM_CONVERSION = YES; 262 | CLANG_WARN_INFINITE_RECURSION = YES; 263 | CLANG_WARN_INT_CONVERSION = YES; 264 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 265 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 266 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 267 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 268 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 269 | CLANG_WARN_STRICT_PROTOTYPES = YES; 270 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 271 | CLANG_WARN_UNREACHABLE_CODE = YES; 272 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 273 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 274 | COPY_PHASE_STRIP = NO; 275 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 276 | ENABLE_NS_ASSERTIONS = NO; 277 | ENABLE_STRICT_OBJC_MSGSEND = YES; 278 | GCC_C_LANGUAGE_STANDARD = gnu99; 279 | GCC_NO_COMMON_BLOCKS = YES; 280 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 281 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 282 | GCC_WARN_UNDECLARED_SELECTOR = YES; 283 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 284 | GCC_WARN_UNUSED_FUNCTION = YES; 285 | GCC_WARN_UNUSED_VARIABLE = YES; 286 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 287 | MTL_ENABLE_DEBUG_INFO = NO; 288 | SDKROOT = iphoneos; 289 | SUPPORTED_PLATFORMS = iphoneos; 290 | TARGETED_DEVICE_FAMILY = "1,2"; 291 | VALIDATE_PRODUCT = YES; 292 | }; 293 | name = Profile; 294 | }; 295 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 296 | isa = XCBuildConfiguration; 297 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 298 | buildSettings = { 299 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 300 | CLANG_ENABLE_MODULES = YES; 301 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 302 | ENABLE_BITCODE = NO; 303 | FRAMEWORK_SEARCH_PATHS = ( 304 | "$(inherited)", 305 | "$(PROJECT_DIR)/Flutter", 306 | ); 307 | INFOPLIST_FILE = Runner/Info.plist; 308 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 309 | LIBRARY_SEARCH_PATHS = ( 310 | "$(inherited)", 311 | "$(PROJECT_DIR)/Flutter", 312 | ); 313 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example; 314 | PRODUCT_NAME = "$(TARGET_NAME)"; 315 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 316 | SWIFT_VERSION = 5.0; 317 | VERSIONING_SYSTEM = "apple-generic"; 318 | }; 319 | name = Profile; 320 | }; 321 | 97C147031CF9000F007C117D /* Debug */ = { 322 | isa = XCBuildConfiguration; 323 | buildSettings = { 324 | ALWAYS_SEARCH_USER_PATHS = NO; 325 | CLANG_ANALYZER_NONNULL = YES; 326 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 327 | CLANG_CXX_LIBRARY = "libc++"; 328 | CLANG_ENABLE_MODULES = YES; 329 | CLANG_ENABLE_OBJC_ARC = YES; 330 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 331 | CLANG_WARN_BOOL_CONVERSION = YES; 332 | CLANG_WARN_COMMA = YES; 333 | CLANG_WARN_CONSTANT_CONVERSION = YES; 334 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 335 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 336 | CLANG_WARN_EMPTY_BODY = YES; 337 | CLANG_WARN_ENUM_CONVERSION = YES; 338 | CLANG_WARN_INFINITE_RECURSION = YES; 339 | CLANG_WARN_INT_CONVERSION = YES; 340 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 341 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 342 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 343 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 344 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 345 | CLANG_WARN_STRICT_PROTOTYPES = YES; 346 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 347 | CLANG_WARN_UNREACHABLE_CODE = YES; 348 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 349 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 350 | COPY_PHASE_STRIP = NO; 351 | DEBUG_INFORMATION_FORMAT = dwarf; 352 | ENABLE_STRICT_OBJC_MSGSEND = YES; 353 | ENABLE_TESTABILITY = YES; 354 | GCC_C_LANGUAGE_STANDARD = gnu99; 355 | GCC_DYNAMIC_NO_PIC = NO; 356 | GCC_NO_COMMON_BLOCKS = YES; 357 | GCC_OPTIMIZATION_LEVEL = 0; 358 | GCC_PREPROCESSOR_DEFINITIONS = ( 359 | "DEBUG=1", 360 | "$(inherited)", 361 | ); 362 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 363 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 364 | GCC_WARN_UNDECLARED_SELECTOR = YES; 365 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 366 | GCC_WARN_UNUSED_FUNCTION = YES; 367 | GCC_WARN_UNUSED_VARIABLE = YES; 368 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 369 | MTL_ENABLE_DEBUG_INFO = YES; 370 | ONLY_ACTIVE_ARCH = YES; 371 | SDKROOT = iphoneos; 372 | TARGETED_DEVICE_FAMILY = "1,2"; 373 | }; 374 | name = Debug; 375 | }; 376 | 97C147041CF9000F007C117D /* Release */ = { 377 | isa = XCBuildConfiguration; 378 | buildSettings = { 379 | ALWAYS_SEARCH_USER_PATHS = NO; 380 | CLANG_ANALYZER_NONNULL = YES; 381 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 382 | CLANG_CXX_LIBRARY = "libc++"; 383 | CLANG_ENABLE_MODULES = YES; 384 | CLANG_ENABLE_OBJC_ARC = YES; 385 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 386 | CLANG_WARN_BOOL_CONVERSION = YES; 387 | CLANG_WARN_COMMA = YES; 388 | CLANG_WARN_CONSTANT_CONVERSION = YES; 389 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 390 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 391 | CLANG_WARN_EMPTY_BODY = YES; 392 | CLANG_WARN_ENUM_CONVERSION = YES; 393 | CLANG_WARN_INFINITE_RECURSION = YES; 394 | CLANG_WARN_INT_CONVERSION = YES; 395 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 396 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 397 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 398 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 399 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 400 | CLANG_WARN_STRICT_PROTOTYPES = YES; 401 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 402 | CLANG_WARN_UNREACHABLE_CODE = YES; 403 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 404 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 405 | COPY_PHASE_STRIP = NO; 406 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 407 | ENABLE_NS_ASSERTIONS = NO; 408 | ENABLE_STRICT_OBJC_MSGSEND = YES; 409 | GCC_C_LANGUAGE_STANDARD = gnu99; 410 | GCC_NO_COMMON_BLOCKS = YES; 411 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 412 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 413 | GCC_WARN_UNDECLARED_SELECTOR = YES; 414 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 415 | GCC_WARN_UNUSED_FUNCTION = YES; 416 | GCC_WARN_UNUSED_VARIABLE = YES; 417 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 418 | MTL_ENABLE_DEBUG_INFO = NO; 419 | SDKROOT = iphoneos; 420 | SUPPORTED_PLATFORMS = iphoneos; 421 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 422 | TARGETED_DEVICE_FAMILY = "1,2"; 423 | VALIDATE_PRODUCT = YES; 424 | }; 425 | name = Release; 426 | }; 427 | 97C147061CF9000F007C117D /* Debug */ = { 428 | isa = XCBuildConfiguration; 429 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 430 | buildSettings = { 431 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 432 | CLANG_ENABLE_MODULES = YES; 433 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 434 | ENABLE_BITCODE = NO; 435 | FRAMEWORK_SEARCH_PATHS = ( 436 | "$(inherited)", 437 | "$(PROJECT_DIR)/Flutter", 438 | ); 439 | INFOPLIST_FILE = Runner/Info.plist; 440 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 441 | LIBRARY_SEARCH_PATHS = ( 442 | "$(inherited)", 443 | "$(PROJECT_DIR)/Flutter", 444 | ); 445 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example; 446 | PRODUCT_NAME = "$(TARGET_NAME)"; 447 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 448 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 449 | SWIFT_VERSION = 5.0; 450 | VERSIONING_SYSTEM = "apple-generic"; 451 | }; 452 | name = Debug; 453 | }; 454 | 97C147071CF9000F007C117D /* Release */ = { 455 | isa = XCBuildConfiguration; 456 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 457 | buildSettings = { 458 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 459 | CLANG_ENABLE_MODULES = YES; 460 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 461 | ENABLE_BITCODE = NO; 462 | FRAMEWORK_SEARCH_PATHS = ( 463 | "$(inherited)", 464 | "$(PROJECT_DIR)/Flutter", 465 | ); 466 | INFOPLIST_FILE = Runner/Info.plist; 467 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 468 | LIBRARY_SEARCH_PATHS = ( 469 | "$(inherited)", 470 | "$(PROJECT_DIR)/Flutter", 471 | ); 472 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example; 473 | PRODUCT_NAME = "$(TARGET_NAME)"; 474 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 475 | SWIFT_VERSION = 5.0; 476 | VERSIONING_SYSTEM = "apple-generic"; 477 | }; 478 | name = Release; 479 | }; 480 | /* End XCBuildConfiguration section */ 481 | 482 | /* Begin XCConfigurationList section */ 483 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 484 | isa = XCConfigurationList; 485 | buildConfigurations = ( 486 | 97C147031CF9000F007C117D /* Debug */, 487 | 97C147041CF9000F007C117D /* Release */, 488 | 249021D3217E4FDB00AE95B9 /* Profile */, 489 | ); 490 | defaultConfigurationIsVisible = 0; 491 | defaultConfigurationName = Release; 492 | }; 493 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 494 | isa = XCConfigurationList; 495 | buildConfigurations = ( 496 | 97C147061CF9000F007C117D /* Debug */, 497 | 97C147071CF9000F007C117D /* Release */, 498 | 249021D4217E4FDB00AE95B9 /* Profile */, 499 | ); 500 | defaultConfigurationIsVisible = 0; 501 | defaultConfigurationName = Release; 502 | }; 503 | /* End XCConfigurationList section */ 504 | }; 505 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 506 | } 507 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/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/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /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/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OwnWeb/flutter_map_tappable_polyline/66bdee432bf1b418b024c6b9745eb0023c398308/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /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. -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | 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 | CADisableMinimumFrameDurationOnPhone 45 | 46 | UIApplicationSupportsIndirectInputEvents 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /example/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /example/lib/data.dart: -------------------------------------------------------------------------------- 1 | import 'package:latlong2/latlong.dart'; 2 | 3 | final lines = [ 4 | [ 5 | [5.58213, 45.13065, 1005], 6 | [5.58209, 45.13078, 1004], 7 | [5.58186, 45.13091, 1003], 8 | [5.58184, 45.13099, 1003], 9 | [5.58178, 45.13105, 1003], 10 | [5.5817, 45.13109, 1003], 11 | [5.58163, 45.1311, 1003], 12 | [5.58149, 45.13108, 1004], 13 | [5.58141, 45.13103, 1005], 14 | [5.58138, 45.13099, 1005], 15 | [5.58136, 45.13093, 1004], 16 | [5.58125, 45.13084, 1005], 17 | [5.5812, 45.1308, 1005], 18 | [5.58116, 45.13077, 1005], 19 | [5.58113, 45.13072, 1005], 20 | [5.581, 45.13062, 1006], 21 | [5.58081, 45.13058, 1006], 22 | [5.58072, 45.13058, 1007], 23 | [5.58082, 45.13044, 1006], 24 | [5.58077, 45.13033, 1006], 25 | [5.58068, 45.13019, 1007], 26 | [5.58064, 45.13006, 1006], 27 | [5.5806, 45.13001, 1006], 28 | [5.58025, 45.12956, 1007], 29 | [5.57994, 45.12918, 1007], 30 | [5.57987, 45.12909, 1007], 31 | [5.5787, 45.12762, 1005], 32 | [5.57772, 45.12636, 1002], 33 | [5.57736, 45.12593, 1003], 34 | [5.5773, 45.12584, 1003], 35 | [5.57676, 45.1251, 1002], 36 | [5.57673, 45.12506, 1002], 37 | [5.57667, 45.12499, 1002], 38 | [5.57652, 45.1248, 1002], 39 | [5.57641, 45.12466, 1002], 40 | [5.57606, 45.12424, 1002], 41 | [5.57604, 45.12422, 1002], 42 | [5.57581, 45.12392, 999], 43 | [5.57571, 45.12379, 999], 44 | [5.57416, 45.12181, 999], 45 | [5.57391, 45.1216, 1002], 46 | [5.57302, 45.12092, 1010], 47 | [5.57277, 45.12064, 1013], 48 | [5.57255, 45.12027, 1015], 49 | [5.57223, 45.11914, 1012], 50 | [5.57193, 45.11807, 1013], 51 | [5.57189, 45.11778, 1013], 52 | [5.57187, 45.11766, 1013], 53 | [5.57179, 45.11704, 1013], 54 | [5.57182, 45.11694, 1013], 55 | [5.57191, 45.11667, 1012], 56 | [5.57208, 45.11638, 1010], 57 | [5.5722, 45.11622, 1009], 58 | [5.57233, 45.116, 1008], 59 | [5.57246, 45.11574, 1007], 60 | [5.57277, 45.11439, 1003], 61 | [5.57277, 45.11419, 1003], 62 | [5.57273, 45.114, 1002], 63 | [5.57262, 45.1138, 1002], 64 | [5.57247, 45.11362, 1001], 65 | [5.57222, 45.11343, 1001], 66 | [5.57208, 45.11335, 1001], 67 | [5.57177, 45.11325, 1001], 68 | [5.57124, 45.11312, 1002], 69 | [5.57079, 45.11299, 1001], 70 | [5.57042, 45.11285, 999], 71 | [5.56923, 45.11222, 996], 72 | [5.56901, 45.11207, 996], 73 | [5.56877, 45.11193, 996], 74 | [5.56846, 45.11178, 995], 75 | [5.56757, 45.11126, 991], 76 | [5.56741, 45.11114, 992], 77 | [5.56716, 45.11095, 992], 78 | [5.56715, 45.11095, 993], 79 | [5.56648, 45.11026, 995], 80 | [5.56579, 45.10956, 994], 81 | [5.5652, 45.10886, 993], 82 | [5.5639, 45.10713, 989], 83 | [5.56303, 45.10581, 991], 84 | [5.5624, 45.10465, 988], 85 | [5.56162, 45.10301, 989], 86 | [5.56159, 45.10296, 989], 87 | [5.56141, 45.10264, 990], 88 | [5.56107, 45.10207, 991], 89 | [5.56094, 45.10191, 991], 90 | [5.56079, 45.10168, 992], 91 | [5.56014, 45.10073, 989], 92 | [5.55997, 45.10053, 988], 93 | [5.55984, 45.10041, 988], 94 | [5.55935, 45.10003, 986], 95 | [5.55908, 45.09982, 987], 96 | [5.55867, 45.09953, 987], 97 | [5.55838, 45.0992, 984], 98 | [5.55805, 45.09866, 986], 99 | [5.55783, 45.0983, 989], 100 | [5.55758, 45.09789, 989], 101 | [5.55747, 45.09762, 988], 102 | [5.55738, 45.09724, 987], 103 | [5.55722, 45.09673, 985], 104 | [5.55706, 45.09627, 986], 105 | [5.55697, 45.09595, 986], 106 | [5.55683, 45.09539, 984], 107 | [5.55681, 45.0953, 983], 108 | [5.55579, 45.09082, 976], 109 | [5.55556, 45.09035, 976], 110 | [5.55547, 45.09034, 976], 111 | [5.55538, 45.09029, 976], 112 | [5.55533, 45.09024, 976], 113 | [5.55529, 45.09015, 976], 114 | [5.55533, 45.09006, 976], 115 | [5.5554, 45.08999, 976], 116 | [5.55544, 45.08985, 977], 117 | [5.55537, 45.08942, 977], 118 | [5.55423, 45.08553, 977], 119 | [5.55379, 45.08386, 980], 120 | [5.55378, 45.08359, 981], 121 | [5.554, 45.08174, 985], 122 | [5.55399, 45.08162, 986], 123 | [5.55395, 45.08149, 986], 124 | [5.5537, 45.08111, 986], 125 | [5.55321, 45.08046, 986], 126 | [5.55311, 45.08025, 986], 127 | [5.55308, 45.08002, 987], 128 | [5.55313, 45.07973, 986], 129 | [5.55336, 45.07941, 985], 130 | [5.55326, 45.07935, 984], 131 | [5.55323, 45.07925, 983], 132 | [5.5533, 45.07917, 983], 133 | [5.55343, 45.07913, 983], 134 | [5.55339, 45.07886, 981], 135 | [5.55341, 45.07863, 979], 136 | [5.5534, 45.07842, 977], 137 | [5.55336, 45.07829, 977], 138 | [5.55323, 45.0781, 978], 139 | [5.5531, 45.078, 978], 140 | [5.55295, 45.07792, 978], 141 | [5.55237, 45.07765, 976], 142 | [5.55172, 45.0773, 979], 143 | [5.55141, 45.07711, 979], 144 | [5.55095, 45.07678, 977], 145 | [5.5508, 45.07665, 977], 146 | [5.5506, 45.07642, 976], 147 | [5.55051, 45.07624, 976], 148 | [5.55022, 45.0758, 975], 149 | [5.5499, 45.07535, 974], 150 | [5.54974, 45.07515, 974], 151 | [5.54948, 45.07487, 973], 152 | [5.54925, 45.07469, 972], 153 | [5.54853, 45.07403, 972], 154 | [5.54832, 45.07388, 971], 155 | [5.54803, 45.07376, 970], 156 | [5.54782, 45.07371, 968], 157 | [5.54725, 45.07367, 965], 158 | [5.54712, 45.07367, 965], 159 | [5.54704, 45.07373, 965], 160 | [5.54695, 45.07376, 965], 161 | [5.54684, 45.07374, 964], 162 | [5.54663, 45.07382, 965], 163 | [5.54645, 45.07384, 967], 164 | [5.54627, 45.07388, 970], 165 | [5.5461, 45.07391, 973], 166 | [5.54603, 45.07393, 974], 167 | [5.54589, 45.07392, 976], 168 | [5.54525, 45.07378, 985], 169 | [5.54502, 45.07369, 987], 170 | [5.54424, 45.07314, 983], 171 | [5.54406, 45.07308, 983], 172 | [5.54383, 45.0731, 978], 173 | [5.54369, 45.07316, 974], 174 | [5.54359, 45.07324, 970], 175 | [5.54337, 45.07346, 969], 176 | [5.54319, 45.07357, 973], 177 | [5.54296, 45.07366, 974], 178 | [5.54281, 45.07371, 973], 179 | [5.54274, 45.07374, 973], 180 | [5.54209, 45.07387, 967], 181 | [5.54167, 45.07401, 965], 182 | [5.54146, 45.07405, 966], 183 | [5.54128, 45.07405, 967], 184 | [5.54115, 45.07403, 968], 185 | [5.54093, 45.07393, 967], 186 | [5.54086, 45.07386, 965], 187 | [5.5408, 45.07376, 963], 188 | [5.54071, 45.0734, 955], 189 | [5.54066, 45.07331, 954], 190 | [5.54058, 45.07324, 956], 191 | [5.54047, 45.07322, 956], 192 | [5.54034, 45.07323, 955], 193 | [5.54022, 45.0733, 952], 194 | [5.53929, 45.07457, 952], 195 | [5.5383, 45.07587, 951], 196 | [5.53822, 45.07594, 953], 197 | [5.53806, 45.07601, 955], 198 | [5.5373, 45.07624, 960], 199 | [5.53712, 45.07635, 960], 200 | [5.53705, 45.07644, 960], 201 | [5.53697, 45.07663, 957], 202 | [5.5369, 45.07761, 963], 203 | [5.53688, 45.07771, 964], 204 | [5.5368, 45.07787, 965], 205 | [5.53673, 45.07795, 965], 206 | [5.53654, 45.07808, 964], 207 | [5.53591, 45.07839, 957], 208 | [5.53521, 45.07882, 959], 209 | [5.53464, 45.0792, 953], 210 | [5.53448, 45.07932, 953], 211 | [5.5342, 45.07959, 951], 212 | [5.5337, 45.08031, 953], 213 | [5.53318, 45.08113, 950], 214 | [5.53281, 45.08185, 951], 215 | [5.53254, 45.0822, 949], 216 | [5.53147, 45.0834, 959], 217 | [5.53085, 45.08397, 960], 218 | [5.53031, 45.08434, 962], 219 | [5.53016, 45.0844, 962], 220 | [5.52995, 45.08446, 961], 221 | [5.52944, 45.08455, 958], 222 | [5.52852, 45.08466, 952], 223 | [5.5273, 45.08492, 944], 224 | [5.52602, 45.08526, 940], 225 | [5.52525, 45.08544, 936], 226 | [5.52449, 45.08565, 934], 227 | [5.52422, 45.08576, 933], 228 | [5.52398, 45.08579, 933], 229 | [5.52372, 45.08584, 934], 230 | [5.52322, 45.08596, 934], 231 | [5.52297, 45.08601, 934], 232 | [5.52284, 45.08603, 934], 233 | [5.52272, 45.08602, 934], 234 | [5.52248, 45.08594, 934], 235 | [5.52236, 45.08588, 934], 236 | [5.52199, 45.08556, 937], 237 | [5.52183, 45.08544, 937], 238 | [5.52147, 45.08529, 939], 239 | [5.52116, 45.08512, 941], 240 | [5.52043, 45.08467, 953], 241 | [5.52032, 45.08459, 955], 242 | [5.52026, 45.08451, 956], 243 | [5.52024, 45.08439, 957], 244 | [5.52026, 45.08407, 956], 245 | [5.52001, 45.08342, 961], 246 | [5.52, 45.08329, 962], 247 | [5.52001, 45.08314, 965], 248 | [5.52018, 45.08266, 971], 249 | [5.52027, 45.0825, 971], 250 | [5.52036, 45.08243, 971], 251 | [5.52046, 45.08238, 969], 252 | [5.52075, 45.08231, 965], 253 | [5.52095, 45.08225, 964], 254 | [5.52108, 45.08217, 965], 255 | [5.52118, 45.08208, 965], 256 | [5.52125, 45.08193, 966], 257 | [5.52125, 45.08177, 967], 258 | [5.52112, 45.0815, 970], 259 | [5.52111, 45.08139, 970], 260 | [5.52114, 45.08128, 970], 261 | [5.5214, 45.08069, 968], 262 | [5.52174, 45.08013, 965], 263 | [5.52171, 45.08005, 965], 264 | [5.52134, 45.07962, 971], 265 | [5.52124, 45.07947, 973], 266 | [5.52115, 45.07885, 973], 267 | [5.5212, 45.07843, 973], 268 | [5.52117, 45.07826, 974], 269 | [5.5211, 45.07799, 976], 270 | [5.52099, 45.07779, 977], 271 | [5.52096, 45.07768, 978], 272 | [5.52096, 45.07757, 978], 273 | [5.52099, 45.07744, 978], 274 | [5.52114, 45.07715, 978], 275 | [5.52125, 45.07669, 979], 276 | [5.52134, 45.07645, 972], 277 | [5.52131, 45.07591, 960], 278 | [5.5212, 45.07559, 960], 279 | [5.52106, 45.07543, 958], 280 | [5.52059, 45.07518, 958], 281 | [5.52044, 45.07507, 962], 282 | [5.52039, 45.07494, 963], 283 | [5.52041, 45.0739, 960], 284 | [5.52037, 45.07353, 952], 285 | [5.5203, 45.0733, 949], 286 | [5.5202, 45.0729, 947], 287 | [5.52014, 45.07237, 946], 288 | [5.51993, 45.07199, 952], 289 | [5.51988, 45.07176, 956], 290 | [5.51976, 45.07155, 959], 291 | [5.51959, 45.07138, 962], 292 | [5.51959, 45.07113, 956], 293 | [5.51963, 45.0709, 948], 294 | [5.51961, 45.07068, 937], 295 | [5.51951, 45.07049, 926], 296 | [5.51922, 45.07021, 903], 297 | [5.51881, 45.06986, 913], 298 | [5.5182, 45.06947, 920], 299 | [5.51757, 45.06894, 947], 300 | [5.51746, 45.06883, 948], 301 | [5.51709, 45.06853, 938], 302 | [5.51673, 45.06807, 937], 303 | [5.51648, 45.06801, 934], 304 | [5.5162, 45.06805, 926], 305 | [5.5154, 45.06826, 903], 306 | [5.51509, 45.0683, 894], 307 | [5.51469, 45.06823, 900], 308 | [5.51435, 45.06823, 905], 309 | [5.5142, 45.06826, 904], 310 | [5.51382, 45.06838, 901], 311 | [5.51338, 45.06845, 902], 312 | [5.51309, 45.06854, 891], 313 | [5.51236, 45.06882, 867], 314 | [5.51166, 45.06896, 848], 315 | [5.51122, 45.06912, 842], 316 | [5.51067, 45.06928, 842], 317 | [5.51037, 45.06934, 840], 318 | [5.50949, 45.06934, 828], 319 | [5.50888, 45.06938, 824], 320 | [5.50839, 45.06948, 825], 321 | [5.5078, 45.06957, 822], 322 | [5.50736, 45.06965, 818], 323 | [5.50683, 45.06994, 810], 324 | [5.50646, 45.07007, 808], 325 | [5.50626, 45.07017, 811], 326 | [5.50612, 45.07029, 815], 327 | [5.50578, 45.07046, 819], 328 | [5.50552, 45.07053, 825], 329 | [5.50524, 45.07057, 831], 330 | [5.50498, 45.07056, 834], 331 | [5.50474, 45.0705, 835], 332 | [5.50395, 45.07027, 849], 333 | [5.5034, 45.07031, 858], 334 | [5.50281, 45.07032, 860], 335 | [5.50264, 45.07029, 863], 336 | [5.50249, 45.07023, 868], 337 | [5.50235, 45.0702, 868], 338 | [5.50222, 45.07021, 866], 339 | [5.50186, 45.07039, 849], 340 | [5.50144, 45.07042, 842], 341 | [5.5011, 45.07054, 832], 342 | [5.50079, 45.0706, 828], 343 | [5.50007, 45.0707, 831], 344 | [5.49986, 45.07067, 837], 345 | [5.49957, 45.07068, 844], 346 | [5.49918, 45.07076, 848], 347 | [5.49842, 45.07107, 849], 348 | [5.49773, 45.0714, 852], 349 | [5.49703, 45.07154, 857], 350 | [5.49653, 45.0715, 865], 351 | [5.49591, 45.07155, 864], 352 | [5.49557, 45.07153, 865], 353 | [5.49507, 45.07139, 878], 354 | [5.49477, 45.07139, 876], 355 | [5.49415, 45.07144, 864], 356 | [5.49382, 45.0715, 862], 357 | [5.49352, 45.07159, 856], 358 | [5.49316, 45.07185, 842], 359 | [5.49291, 45.07197, 837], 360 | [5.49273, 45.07245, 803], 361 | [5.49247, 45.07288, 793], 362 | [5.49228, 45.07309, 793], 363 | [5.49215, 45.07344, 777], 364 | [5.49211, 45.07364, 766], 365 | [5.49204, 45.07376, 757], 366 | [5.4921, 45.07382, 756], 367 | [5.49234, 45.07414, 751], 368 | [5.49239, 45.07421, 754], 369 | [5.49236, 45.0743, 754], 370 | [5.49221, 45.07446, 749], 371 | [5.49167, 45.07483, 727], 372 | [5.49153, 45.07499, 725], 373 | [5.49135, 45.07547, 732], 374 | [5.49118, 45.07573, 729], 375 | [5.49079, 45.07622, 720], 376 | [5.49049, 45.07651, 717], 377 | [5.49039, 45.07666, 715], 378 | [5.48999, 45.07782, 704], 379 | [5.48994, 45.07807, 705], 380 | [5.49004, 45.07847, 713], 381 | [5.49, 45.07867, 713], 382 | [5.48951, 45.07934, 704], 383 | [5.48935, 45.07962, 702], 384 | [5.4888, 45.08082, 699], 385 | [5.48864, 45.08108, 698], 386 | [5.48842, 45.08135, 695], 387 | [5.48813, 45.08167, 694], 388 | [5.4879, 45.08176, 693], 389 | [5.48732, 45.08183, 688], 390 | [5.48656, 45.0819, 683], 391 | [5.48617, 45.08189, 681], 392 | [5.48581, 45.08192, 680], 393 | [5.48563, 45.08198, 679], 394 | [5.48542, 45.08211, 679], 395 | [5.48511, 45.08235, 678], 396 | [5.48503, 45.08245, 677], 397 | [5.48492, 45.08266, 678], 398 | [5.48471, 45.08357, 682], 399 | [5.48457, 45.08385, 683], 400 | [5.48447, 45.08393, 682], 401 | [5.48433, 45.08399, 681], 402 | [5.48407, 45.08402, 681], 403 | [5.48392, 45.08401, 683], 404 | [5.48377, 45.08403, 685], 405 | [5.48333, 45.08417, 693], 406 | [5.48318, 45.08418, 693], 407 | [5.48283, 45.08413, 690], 408 | [5.48267, 45.08413, 689], 409 | [5.48189, 45.0843, 684], 410 | [5.48169, 45.0844, 685], 411 | [5.4815, 45.08451, 690], 412 | [5.48079, 45.08498, 686], 413 | [5.48058, 45.08508, 691], 414 | [5.47988, 45.08524, 687], 415 | [5.47964, 45.08532, 687], 416 | [5.47909, 45.08562, 685], 417 | [5.47887, 45.0857, 683], 418 | [5.47866, 45.08574, 680], 419 | [5.47823, 45.08576, 673], 420 | [5.47804, 45.08581, 671], 421 | [5.47788, 45.08588, 671], 422 | [5.47727, 45.08622, 675], 423 | [5.47651, 45.08649, 672], 424 | [5.47581, 45.08691, 674], 425 | [5.47469, 45.08743, 670], 426 | [5.47432, 45.08759, 667], 427 | [5.47415, 45.08765, 667], 428 | [5.47382, 45.08773, 665], 429 | [5.47369, 45.08779, 665], 430 | [5.47295, 45.08826, 665], 431 | [5.47225, 45.08867, 666], 432 | [5.47117, 45.08935, 662], 433 | [5.47091, 45.08953, 661], 434 | [5.47095, 45.0897, 664], 435 | [5.47095, 45.08982, 666], 436 | [5.47086, 45.08994, 666], 437 | [5.47072, 45.08999, 665], 438 | [5.47014, 45.09002, 661], 439 | [5.46987, 45.09, 663], 440 | [5.46939, 45.08994, 674], 441 | [5.4692, 45.08997, 679], 442 | [5.46914, 45.09005, 683], 443 | [5.46926, 45.09048, 689], 444 | [5.46958, 45.09122, 692], 445 | [5.46995, 45.09199, 691], 446 | [5.46996, 45.09254, 700], 447 | [5.47, 45.09263, 700], 448 | [5.47007, 45.09272, 701], 449 | [5.47038, 45.09301, 704], 450 | [5.47053, 45.09313, 704], 451 | [5.47071, 45.09323, 703], 452 | [5.47112, 45.09341, 705], 453 | [5.47158, 45.09353, 709], 454 | [5.47166, 45.09356, 709], 455 | [5.47175, 45.09365, 713], 456 | [5.47177, 45.09371, 714], 457 | [5.47174, 45.09384, 715], 458 | [5.47161, 45.09394, 715], 459 | [5.4714, 45.09397, 716], 460 | [5.47107, 45.09397, 716], 461 | [5.47078, 45.09394, 717], 462 | [5.4705, 45.09382, 717], 463 | [5.47033, 45.09372, 717], 464 | [5.47012, 45.09364, 718], 465 | [5.46946, 45.09347, 723], 466 | [5.46921, 45.09329, 724], 467 | [5.46913, 45.09319, 725], 468 | [5.46907, 45.09316, 725], 469 | [5.46894, 45.09314, 726], 470 | [5.4688, 45.09319, 726], 471 | [5.46872, 45.09329, 727], 472 | [5.4687, 45.09343, 728], 473 | [5.46873, 45.0936, 728], 474 | [5.46877, 45.09369, 729], 475 | [5.46925, 45.09428, 736], 476 | [5.46937, 45.09447, 738], 477 | [5.46961, 45.09531, 747], 478 | [5.46976, 45.09566, 751], 479 | [5.47005, 45.09605, 756], 480 | [5.47021, 45.09623, 757], 481 | [5.47038, 45.09635, 759], 482 | [5.4706, 45.09648, 760], 483 | [5.47182, 45.09698, 759], 484 | [5.47249, 45.09728, 763], 485 | [5.47271, 45.09732, 764], 486 | [5.47294, 45.09731, 767], 487 | [5.47321, 45.09733, 770], 488 | [5.47352, 45.09739, 772], 489 | [5.4737, 45.09749, 772], 490 | [5.47378, 45.09761, 772], 491 | [5.47385, 45.09781, 771], 492 | [5.47399, 45.09807, 772], 493 | [5.47437, 45.09856, 776], 494 | [5.47455, 45.09872, 779], 495 | [5.47475, 45.09885, 782], 496 | [5.4749, 45.09898, 784], 497 | [5.47517, 45.09906, 789], 498 | [5.47527, 45.0991, 790], 499 | [5.47525, 45.09919, 790], 500 | [5.47499, 45.09949, 787], 501 | [5.47483, 45.09971, 785], 502 | [5.47483, 45.09983, 785], 503 | [5.47487, 45.09991, 787], 504 | [5.47512, 45.10024, 792], 505 | [5.47534, 45.10042, 796], 506 | [5.47534, 45.10055, 795], 507 | [5.47524, 45.1007, 791], 508 | [5.475, 45.10095, 786], 509 | [5.47485, 45.10131, 793], 510 | [5.47471, 45.10145, 795], 511 | [5.47453, 45.10152, 795], 512 | [5.47426, 45.10154, 794], 513 | [5.47405, 45.10152, 793], 514 | [5.47382, 45.10148, 791], 515 | [5.47356, 45.10147, 791], 516 | [5.47275, 45.10152, 790], 517 | [5.47259, 45.10157, 790], 518 | [5.47238, 45.10171, 791], 519 | [5.47213, 45.10197, 791], 520 | [5.47205, 45.1021, 791], 521 | [5.47205, 45.10221, 792], 522 | [5.47232, 45.10266, 797], 523 | [5.47248, 45.10284, 798], 524 | [5.4728, 45.10314, 800], 525 | [5.47293, 45.10331, 801], 526 | [5.47306, 45.10355, 803], 527 | [5.47316, 45.10381, 805], 528 | [5.47319, 45.10398, 805], 529 | [5.47316, 45.10427, 806], 530 | [5.47305, 45.1044, 806], 531 | [5.47293, 45.10452, 806], 532 | [5.47271, 45.10467, 805], 533 | [5.47267, 45.10477, 806], 534 | [5.47253, 45.10495, 805], 535 | [5.47248, 45.10506, 805], 536 | [5.47248, 45.10515, 806], 537 | [5.47256, 45.10543, 811], 538 | [5.47257, 45.10562, 813], 539 | [5.47254, 45.10577, 814], 540 | [5.4724, 45.10598, 813], 541 | [5.47231, 45.10611, 812], 542 | [5.47215, 45.10626, 811], 543 | [5.47207, 45.10634, 810], 544 | [5.47204, 45.10636, 810], 545 | [5.47181, 45.10653, 807], 546 | [5.47175, 45.1066, 807], 547 | [5.47173, 45.1067, 807], 548 | [5.47177, 45.10677, 808], 549 | [5.47208, 45.10705, 813], 550 | [5.47234, 45.10724, 815], 551 | [5.47261, 45.10753, 817], 552 | [5.47272, 45.1077, 819], 553 | [5.47282, 45.10803, 822], 554 | [5.47279, 45.10851, 822], 555 | [5.47283, 45.10875, 823], 556 | [5.47292, 45.10898, 825], 557 | [5.47306, 45.10931, 828], 558 | [5.47346, 45.10969, 834], 559 | [5.47349, 45.10977, 834], 560 | [5.47341, 45.11011, 833], 561 | [5.47345, 45.11027, 834], 562 | [5.4736, 45.11037, 836], 563 | [5.47422, 45.1105, 847], 564 | [5.47455, 45.11091, 856], 565 | [5.47463, 45.11105, 858], 566 | [5.47462, 45.11118, 858], 567 | [5.47456, 45.11125, 857], 568 | [5.47443, 45.11129, 855], 569 | [5.47409, 45.11124, 850], 570 | [5.47393, 45.11126, 848], 571 | [5.47383, 45.11129, 847], 572 | [5.47373, 45.11134, 847], 573 | [5.47344, 45.11165, 850], 574 | [5.47333, 45.11171, 851], 575 | [5.47318, 45.11172, 851], 576 | [5.47258, 45.11164, 850], 577 | [5.47212, 45.11171, 854], 578 | [5.47191, 45.11176, 855], 579 | [5.47182, 45.11178, 856], 580 | [5.47165, 45.1118, 857], 581 | [5.47158, 45.11182, 859], 582 | [5.47156, 45.11191, 860], 583 | [5.47168, 45.11221, 863], 584 | [5.47195, 45.11309, 873], 585 | [5.47199, 45.11346, 876], 586 | [5.47207, 45.11382, 878], 587 | [5.4722, 45.11408, 878], 588 | [5.47236, 45.1142, 878], 589 | [5.47261, 45.11428, 879], 590 | [5.47296, 45.11449, 880], 591 | [5.47324, 45.11483, 879], 592 | [5.47331, 45.11529, 882], 593 | [5.47338, 45.11676, 897], 594 | [5.47348, 45.11735, 905], 595 | [5.47347, 45.11799, 912], 596 | [5.47357, 45.11861, 913], 597 | [5.47361, 45.11922, 916], 598 | [5.47356, 45.11968, 920], 599 | [5.47364, 45.11983, 919], 600 | [5.47375, 45.11994, 918], 601 | [5.47386, 45.12005, 917], 602 | [5.47409, 45.1204, 919], 603 | [5.475, 45.12119, 928], 604 | [5.47524, 45.12133, 933], 605 | [5.47547, 45.12142, 936], 606 | [5.47576, 45.12149, 938], 607 | [5.47606, 45.12153, 940], 608 | [5.47633, 45.12152, 942], 609 | [5.47651, 45.12154, 943], 610 | [5.4766, 45.12163, 945], 611 | [5.47657, 45.12171, 947], 612 | [5.47646, 45.12177, 948], 613 | [5.47624, 45.12178, 947], 614 | [5.47608, 45.12175, 945], 615 | [5.47576, 45.12174, 944], 616 | [5.47512, 45.12178, 944], 617 | [5.47481, 45.12172, 943], 618 | [5.4743, 45.12156, 943], 619 | [5.47415, 45.12156, 944], 620 | [5.47403, 45.12162, 945], 621 | [5.47397, 45.12176, 947], 622 | [5.47411, 45.1225, 956], 623 | [5.47421, 45.12262, 957], 624 | [5.47434, 45.12271, 958], 625 | [5.47453, 45.12279, 959], 626 | [5.47488, 45.12288, 961], 627 | [5.475, 45.12295, 962], 628 | [5.47507, 45.12304, 963], 629 | [5.47508, 45.12323, 964], 630 | [5.47497, 45.12344, 964], 631 | [5.47466, 45.12365, 963], 632 | [5.47446, 45.12389, 964], 633 | [5.47445, 45.12419, 967], 634 | [5.47451, 45.12433, 968], 635 | [5.47462, 45.12444, 969], 636 | [5.47486, 45.1246, 970], 637 | [5.47523, 45.12476, 973], 638 | [5.47554, 45.12487, 975], 639 | [5.47593, 45.12497, 979], 640 | [5.47621, 45.12507, 980], 641 | [5.47636, 45.12522, 982], 642 | [5.47646, 45.12536, 983], 643 | [5.47648, 45.12546, 984], 644 | [5.47638, 45.12557, 984], 645 | [5.47604, 45.12568, 981], 646 | [5.4759, 45.12575, 980], 647 | [5.47582, 45.12589, 979], 648 | [5.47589, 45.12611, 981], 649 | [5.47606, 45.12655, 985], 650 | [5.47607, 45.12671, 986], 651 | [5.47602, 45.12677, 986], 652 | [5.4759, 45.12683, 986], 653 | [5.47561, 45.12693, 986], 654 | [5.47552, 45.12699, 986], 655 | [5.47546, 45.1271, 987], 656 | [5.47528, 45.12781, 993], 657 | [5.47528, 45.12797, 994], 658 | [5.47533, 45.12816, 995], 659 | [5.47552, 45.12859, 998], 660 | [5.47556, 45.12911, 1002], 661 | [5.47561, 45.12917, 1002], 662 | [5.47566, 45.12933, 1002], 663 | [5.47562, 45.12947, 1004], 664 | [5.47555, 45.12955, 1005], 665 | [5.4755, 45.12976, 1008], 666 | [5.47575, 45.13089, 1016], 667 | [5.47588, 45.13116, 1017], 668 | [5.47605, 45.13137, 1018], 669 | [5.47636, 45.13226, 1022], 670 | [5.47657, 45.13293, 1022], 671 | [5.47664, 45.13307, 1021], 672 | [5.47675, 45.13316, 1021], 673 | [5.47684, 45.13335, 1022], 674 | [5.47788, 45.1367, 1040], 675 | [5.47842, 45.13825, 1041], 676 | [5.47861, 45.13912, 1050], 677 | [5.47876, 45.13986, 1055], 678 | [5.47872, 45.14013, 1058], 679 | [5.47885, 45.14112, 1061], 680 | [5.4789, 45.14134, 1062], 681 | [5.47941, 45.14238, 1064], 682 | [5.47972, 45.14277, 1067], 683 | [5.4798, 45.14298, 1068], 684 | [5.47979, 45.14317, 1070], 685 | [5.47965, 45.14386, 1071], 686 | [5.47969, 45.1443, 1071], 687 | [5.47968, 45.14482, 1070], 688 | [5.47973, 45.14522, 1070], 689 | [5.47989, 45.14599, 1067], 690 | [5.48001, 45.14688, 1064], 691 | [5.4801, 45.14722, 1065], 692 | [5.48019, 45.14747, 1064], 693 | [5.48063, 45.1484, 1059], 694 | [5.48085, 45.14896, 1056], 695 | [5.48203, 45.15112, 1047], 696 | [5.48238, 45.15192, 1048], 697 | [5.48245, 45.15217, 1049], 698 | [5.48274, 45.15284, 1046], 699 | [5.48316, 45.15367, 1040], 700 | [5.48362, 45.15447, 1034], 701 | [5.48391, 45.15512, 1032], 702 | [5.48423, 45.15603, 1029], 703 | [5.48461, 45.15729, 1024], 704 | [5.48491, 45.15802, 1025], 705 | [5.48546, 45.15925, 1023], 706 | [5.4857, 45.16003, 1023], 707 | [5.4859, 45.16082, 1026], 708 | [5.48616, 45.16123, 1021], 709 | [5.48646, 45.16178, 1017], 710 | [5.48676, 45.16227, 1014], 711 | [5.48717, 45.16316, 1007], 712 | [5.48826, 45.16567, 999], 713 | [5.48961, 45.16811, 997], 714 | [5.4897, 45.16822, 996], 715 | [5.49098, 45.16955, 983], 716 | [5.4924, 45.17093, 965], 717 | [5.49338, 45.17201, 957], 718 | [5.49445, 45.17308, 945], 719 | [5.496, 45.17483, 924], 720 | [5.49693, 45.17592, 917], 721 | [5.49795, 45.17707, 907], 722 | [5.49797, 45.17715, 908], 723 | [5.49793, 45.17739, 911], 724 | [5.49752, 45.17781, 925], 725 | [5.4973, 45.17815, 938], 726 | [5.49728, 45.17823, 940], 727 | [5.49731, 45.17863, 937], 728 | [5.49722, 45.17871, 940], 729 | [5.49702, 45.17881, 944], 730 | [5.49695, 45.17887, 945], 731 | [5.49686, 45.17902, 942], 732 | [5.49677, 45.17906, 942], 733 | [5.49633, 45.17905, 936], 734 | [5.49607, 45.17907, 929], 735 | [5.49417, 45.17653, 977], 736 | [5.49347, 45.17583, 899], 737 | [5.49275, 45.17545, 845], 738 | [5.49237, 45.17519, 829], 739 | [5.49156, 45.17435, 841], 740 | [5.49137, 45.17426, 842], 741 | [5.49107, 45.17422, 836], 742 | [5.49064, 45.17436, 823], 743 | [5.49005, 45.17453, 818], 744 | [5.48979, 45.17452, 824], 745 | [5.4893, 45.17456, 829], 746 | [5.48902, 45.17464, 824], 747 | [5.48803, 45.17503, 782], 748 | [5.48783, 45.17509, 779], 749 | [5.48767, 45.17512, 778], 750 | [5.48725, 45.17495, 797], 751 | [5.48715, 45.17499, 794], 752 | [5.48693, 45.17529, 776], 753 | [5.48682, 45.17536, 773], 754 | [5.48642, 45.17548, 768], 755 | [5.48438, 45.17589, 759], 756 | [5.48422, 45.17598, 757], 757 | [5.48407, 45.17622, 747], 758 | [5.48392, 45.17635, 740], 759 | [5.48339, 45.1766, 726], 760 | [5.48327, 45.17708, 713], 761 | [5.48362, 45.17785, 697], 762 | [5.48374, 45.17802, 692], 763 | [5.48431, 45.17801, 698], 764 | [5.48449, 45.17797, 696], 765 | [5.48455, 45.17783, 699], 766 | [5.48454, 45.17752, 709], 767 | [5.48455, 45.17723, 714], 768 | [5.48454, 45.17702, 718], 769 | [5.48469, 45.17677, 718], 770 | [5.48501, 45.17665, 715], 771 | [5.48529, 45.1766, 710], 772 | [5.48711, 45.17641, 697], 773 | [5.48735, 45.17622, 707], 774 | [5.48754, 45.17615, 710], 775 | [5.48769, 45.17617, 708], 776 | [5.48791, 45.17637, 693], 777 | [5.48969, 45.1764, 687], 778 | [5.49035, 45.17679, 678], 779 | [5.49086, 45.1774, 657], 780 | [5.49156, 45.17755, 662], 781 | [5.49173, 45.17761, 663], 782 | [5.49256, 45.17824, 647], 783 | [5.49273, 45.17831, 659], 784 | [5.49317, 45.1783, 704], 785 | [5.49342, 45.17832, 727], 786 | [5.49371, 45.17856, 747], 787 | [5.49384, 45.17873, 754], 788 | [5.49379, 45.17886, 743], 789 | [5.49357, 45.1791, 709], 790 | [5.49348, 45.17915, 698], 791 | [5.49311, 45.17917, 664], 792 | [5.4928, 45.17929, 645], 793 | [5.49226, 45.17959, 632], 794 | [5.49198, 45.17971, 629], 795 | [5.49179, 45.17975, 624], 796 | [5.49107, 45.18008, 626], 797 | [5.49081, 45.18017, 623], 798 | [5.49041, 45.1802, 612], 799 | [5.48987, 45.18032, 599], 800 | [5.48972, 45.18027, 594], 801 | [5.48957, 45.1801, 588], 802 | [5.48934, 45.17999, 582], 803 | [5.48895, 45.17995, 574], 804 | [5.48874, 45.18, 573], 805 | [5.48858, 45.1802, 570], 806 | [5.4886, 45.18027, 570], 807 | [5.48863, 45.18031, 571], 808 | [5.48867, 45.18037, 572], 809 | [5.48897, 45.18054, 578], 810 | [5.48928, 45.18084, 590], 811 | [5.48943, 45.18108, 597], 812 | [5.48945, 45.18132, 600], 813 | [5.48944, 45.1814, 600], 814 | [5.48943, 45.18156, 601], 815 | [5.48932, 45.18165, 596], 816 | [5.48912, 45.18173, 591], 817 | [5.48893, 45.18175, 582], 818 | [5.4886, 45.18189, 572], 819 | [5.48834, 45.18218, 566], 820 | [5.48819, 45.18238, 567], 821 | [5.48784, 45.18259, 563], 822 | [5.48763, 45.18278, 563], 823 | [5.48747, 45.18298, 564], 824 | [5.48683, 45.18331, 553], 825 | [5.48652, 45.18349, 551], 826 | [5.48649, 45.18349, 550], 827 | [5.48634, 45.18351, 547], 828 | [5.48611, 45.18351, 541], 829 | [5.48591, 45.1836, 539], 830 | [5.48573, 45.18383, 539], 831 | [5.48566, 45.18411, 543], 832 | [5.48565, 45.18434, 546], 833 | [5.48572, 45.18454, 552], 834 | [5.48565, 45.18463, 550], 835 | [5.48555, 45.18472, 547], 836 | [5.48543, 45.1848, 543], 837 | [5.48519, 45.18485, 533], 838 | [5.48498, 45.18496, 526], 839 | [5.48488, 45.18568, 529], 840 | [5.48469, 45.18599, 523], 841 | [5.48467, 45.18648, 521], 842 | [5.48468, 45.18729, 514], 843 | [5.48465, 45.1875, 511], 844 | [5.4844, 45.18796, 500], 845 | [5.48435, 45.18817, 498], 846 | [5.48435, 45.18844, 496], 847 | [5.48449, 45.18875, 495], 848 | [5.4849, 45.18951, 491], 849 | [5.48422, 45.18895, 480], 850 | [5.48398, 45.18866, 476], 851 | [5.48311, 45.18784, 458], 852 | [5.48293, 45.18746, 459], 853 | [5.48278, 45.18746, 457], 854 | [5.48269, 45.18747, 456], 855 | [5.48255, 45.18735, 452], 856 | [5.4823, 45.18719, 446], 857 | [5.48225, 45.18721, 445], 858 | [5.4822, 45.18729, 445], 859 | [5.48216, 45.18738, 445], 860 | [5.48221, 45.1876, 444], 861 | [5.48255, 45.18835, 434], 862 | [5.48272, 45.18856, 432], 863 | [5.48296, 45.1892, 419], 864 | [5.48313, 45.18928, 423], 865 | [5.48337, 45.18961, 421], 866 | [5.48374, 45.19023, 413], 867 | [5.48384, 45.19043, 409], 868 | [5.48415, 45.19141, 388], 869 | [5.48413, 45.19163, 380], 870 | [5.48422, 45.19201, 373], 871 | [5.48423, 45.19246, 361], 872 | [5.48409, 45.19267, 354], 873 | [5.48391, 45.19276, 349], 874 | [5.48387, 45.19283, 348], 875 | [5.48397, 45.19298, 348], 876 | [5.48397, 45.19311, 346], 877 | [5.48407, 45.19358, 340], 878 | [5.48419, 45.19381, 338], 879 | [5.4843, 45.19416, 334], 880 | [5.48424, 45.19438, 331], 881 | [5.48419, 45.19509, 322], 882 | [5.48429, 45.19548, 316], 883 | [5.4843, 45.19565, 313], 884 | [5.48425, 45.19583, 308], 885 | [5.48431, 45.19604, 306], 886 | [5.48431, 45.19624, 303], 887 | [5.48426, 45.19644, 299], 888 | [5.48424, 45.19655, 297], 889 | [5.48401, 45.19686, 290], 890 | [5.48404, 45.19709, 287], 891 | [5.4842, 45.19729, 287], 892 | [5.48467, 45.19774, 295], 893 | [5.48472, 45.19794, 294], 894 | [5.48455, 45.19812, 288], 895 | [5.48446, 45.19818, 286], 896 | [5.48429, 45.19834, 281], 897 | [5.48405, 45.19861, 278], 898 | [5.48402, 45.19877, 277], 899 | [5.4841, 45.19894, 277], 900 | [5.48443, 45.19941, 277], 901 | [5.48444, 45.19942, 277], 902 | [5.4846, 45.19965, 276], 903 | [5.48471, 45.19991, 273], 904 | [5.48463, 45.2, 272], 905 | [5.48428, 45.20029, 271], 906 | [5.48421, 45.20044, 271], 907 | [5.48425, 45.20057, 270], 908 | [5.48431, 45.20079, 269], 909 | [5.48432, 45.20082, 268], 910 | [5.48456, 45.20101, 265], 911 | [5.485, 45.20125, 261], 912 | [5.48525, 45.20143, 262], 913 | [5.48535, 45.20158, 262], 914 | [5.48541, 45.20185, 260], 915 | [5.48541, 45.20192, 260], 916 | [5.48483, 45.20216, 254], 917 | [5.4843, 45.20237, 249], 918 | [5.48407, 45.20227, 248], 919 | [5.48384, 45.20197, 249], 920 | [5.48365, 45.20192, 248], 921 | [5.48327, 45.20193, 242], 922 | [5.48312, 45.20199, 237], 923 | [5.48294, 45.20203, 231], 924 | [5.48267, 45.20204, 224], 925 | [5.48254, 45.20197, 222], 926 | [5.48145, 45.20153, 210], 927 | [5.48122, 45.20133, 211], 928 | [5.48093, 45.20118, 207], 929 | [5.4807, 45.20117, 204], 930 | [5.4791, 45.20141, 199], 931 | [5.47511, 45.20195, 197], 932 | [5.47383, 45.20247, 194], 933 | [5.47253, 45.20327, 192], 934 | [5.47206, 45.20362, 192], 935 | [5.47143, 45.20432, 191], 936 | [5.47099, 45.20423, 191], 937 | [5.46986, 45.20407, 188], 938 | [5.46911, 45.204, 187], 939 | [5.46835, 45.20396, 187], 940 | [5.46767, 45.20393, 185], 941 | [5.46748, 45.20393, 185], 942 | [5.46583, 45.20385, 189], 943 | [5.46551, 45.20385, 190], 944 | [5.46488, 45.20383, 193], 945 | [5.46459, 45.20382, 195], 946 | [5.46445, 45.20382, 196], 947 | [5.46314, 45.20377, 200], 948 | [5.46221, 45.20374, 203], 949 | [5.46186, 45.20373, 205], 950 | [5.46145, 45.20369, 205], 951 | [5.46104, 45.20362, 203], 952 | [5.4607, 45.20353, 202], 953 | [5.46038, 45.20341, 200], 954 | [5.46015, 45.20331, 198], 955 | [5.45994, 45.20318, 198], 956 | [5.45869, 45.20239, 198], 957 | [5.45672, 45.20138, 205], 958 | [5.45247, 45.1996, 207], 959 | [5.45198, 45.19941, 209], 960 | [5.4516, 45.1993, 210], 961 | [5.44997, 45.19891, 211], 962 | [5.44727, 45.19829, 210], 963 | [5.44662, 45.19819, 211], 964 | [5.44595, 45.19815, 211], 965 | [5.4372, 45.19817, 219], 966 | [5.43677, 45.19813, 219], 967 | [5.4321, 45.19728, 217], 968 | [5.43132, 45.19713, 218], 969 | [5.43109, 45.19706, 218], 970 | [5.43089, 45.19701, 218], 971 | [5.43062, 45.19691, 217], 972 | [5.43032, 45.19676, 216], 973 | [5.42998, 45.19655, 217], 974 | [5.4293, 45.19602, 218], 975 | [5.42836, 45.19514, 222], 976 | [5.42723, 45.19411, 225], 977 | [5.42694, 45.19425, 223], 978 | [5.42672, 45.19435, 222], 979 | [5.42661, 45.1944, 222], 980 | [5.426, 45.19463, 216], 981 | [5.42576, 45.19472, 213], 982 | [5.4242, 45.1952, 196], 983 | [5.42302, 45.19553, 218], 984 | [5.42293, 45.19552, 220], 985 | [5.42295, 45.19558, 221], 986 | [5.42308, 45.19579, 225], 987 | [5.42324, 45.19596, 226], 988 | [5.42329, 45.19599, 225], 989 | [5.42336, 45.19599, 224], 990 | [5.42337, 45.19596, 223], 991 | [5.42337, 45.19591, 222], 992 | [5.42332, 45.19583, 221], 993 | [5.42312, 45.19558, 217], 994 | [5.42285, 45.19529, 214], 995 | [5.42246, 45.19501, 215], 996 | [5.42238, 45.19491, 213], 997 | [5.42219, 45.19461, 208], 998 | [5.42203, 45.19421, 200], 999 | [5.42195, 45.19404, 198], 1000 | [5.4219, 45.19398, 198], 1001 | [5.42182, 45.19394, 198], 1002 | [5.42132, 45.19389, 202], 1003 | [5.42123, 45.19386, 202], 1004 | [5.4212, 45.19383, 202], 1005 | [5.42128, 45.19379, 201], 1006 | [5.42144, 45.19377, 199], 1007 | [5.42176, 45.1938, 197], 1008 | [5.42196, 45.19384, 195], 1009 | [5.42233, 45.19401, 193], 1010 | [5.42247, 45.19405, 192], 1011 | [5.42254, 45.19404, 191], 1012 | [5.4226, 45.194, 190], 1013 | [5.42259, 45.19393, 189], 1014 | [5.42246, 45.19386, 189], 1015 | [5.42213, 45.19361, 189], 1016 | [5.42173, 45.19342, 191], 1017 | [5.42163, 45.19336, 192], 1018 | [5.42162, 45.19329, 191], 1019 | [5.42147, 45.19322, 193], 1020 | [5.42136, 45.19316, 194], 1021 | [5.42131, 45.19312, 195], 1022 | [5.42132, 45.19307, 194], 1023 | [5.42146, 45.19288, 192], 1024 | [5.42144, 45.19284, 192], 1025 | [5.42132, 45.19277, 193], 1026 | [5.42105, 45.19252, 196], 1027 | [5.42091, 45.19243, 197], 1028 | [5.42069, 45.19239, 199], 1029 | [5.42042, 45.19216, 198], 1030 | [5.42012, 45.19207, 200], 1031 | [5.41991, 45.19191, 201], 1032 | [5.41985, 45.19188, 201], 1033 | [5.41973, 45.19187, 204], 1034 | [5.41948, 45.19192, 209], 1035 | [5.4193, 45.19191, 212], 1036 | [5.4188, 45.19181, 222], 1037 | [5.41848, 45.19166, 230], 1038 | [5.41841, 45.19161, 231], 1039 | [5.41834, 45.19145, 232], 1040 | [5.41835, 45.19137, 232], 1041 | [5.41841, 45.19121, 229], 1042 | [5.41841, 45.19108, 228], 1043 | [5.41834, 45.19105, 230], 1044 | [5.41825, 45.19106, 231], 1045 | [5.41801, 45.19122, 234], 1046 | [5.41722, 45.19076, 237], 1047 | [5.41661, 45.19007, 238], 1048 | [5.41604, 45.18914, 241], 1049 | [5.41524, 45.18842, 243], 1050 | [5.41447, 45.18799, 242], 1051 | [5.41386, 45.18738, 241], 1052 | [5.41356, 45.1865, 241], 1053 | [5.41373, 45.18599, 241], 1054 | [5.41348, 45.18574, 240], 1055 | [5.41255, 45.1856, 239], 1056 | [5.41206, 45.18521, 239], 1057 | [5.41169, 45.18489, 239], 1058 | [5.41122, 45.18467, 239], 1059 | [5.41039, 45.18425, 238], 1060 | [5.40953, 45.18371, 238], 1061 | [5.40863, 45.18341, 238], 1062 | [5.4083, 45.18325, 238], 1063 | [5.40721, 45.18228, 236], 1064 | [5.40697, 45.18204, 233], 1065 | [5.40649, 45.18185, 230], 1066 | [5.40545, 45.18151, 232], 1067 | [5.40239, 45.1799, 238], 1068 | [5.4016, 45.17968, 238], 1069 | [5.40089, 45.17942, 236], 1070 | [5.4002, 45.17892, 232], 1071 | [5.39997, 45.17883, 231], 1072 | [5.39972, 45.17877, 232], 1073 | [5.39934, 45.17878, 233], 1074 | [5.3985, 45.179, 236], 1075 | [5.39826, 45.17902, 237], 1076 | [5.39797, 45.17902, 237], 1077 | [5.39545, 45.17849, 239], 1078 | [5.395, 45.17853, 239], 1079 | [5.39498, 45.17853, 239], 1080 | [5.3943, 45.17833, 236], 1081 | [5.39314, 45.17783, 235], 1082 | [5.39183, 45.17744, 235], 1083 | [5.39116, 45.17719, 231], 1084 | [5.39055, 45.1769, 230], 1085 | [5.38995, 45.1767, 230], 1086 | [5.38947, 45.17638, 229], 1087 | [5.38922, 45.17631, 229], 1088 | [5.38844, 45.17598, 228], 1089 | [5.3882, 45.17602, 228], 1090 | [5.38786, 45.17587, 228], 1091 | [5.3874, 45.17551, 227], 1092 | [5.38723, 45.17542, 226], 1093 | [5.38701, 45.17532, 225], 1094 | [5.3868, 45.17536, 224], 1095 | [5.38668, 45.17529, 224], 1096 | [5.38651, 45.17523, 223], 1097 | [5.38629, 45.17518, 222], 1098 | [5.38604, 45.1751, 221], 1099 | [5.38573, 45.17469, 220], 1100 | [5.38563, 45.17449, 219], 1101 | [5.38551, 45.17429, 219], 1102 | [5.38535, 45.17416, 218], 1103 | [5.3852, 45.17408, 218], 1104 | [5.3848, 45.17398, 215], 1105 | [5.3847, 45.17393, 214], 1106 | [5.38464, 45.17386, 213], 1107 | [5.3846, 45.17364, 212], 1108 | [5.38459, 45.17269, 211], 1109 | [5.38454, 45.17259, 211], 1110 | [5.38417, 45.17235, 209], 1111 | [5.38412, 45.17229, 209], 1112 | [5.38411, 45.17223, 209], 1113 | [5.38413, 45.17216, 209], 1114 | [5.38432, 45.17198, 209], 1115 | [5.3845, 45.17192, 210], 1116 | [5.38481, 45.17191, 210], 1117 | [5.38505, 45.17195, 211], 1118 | [5.38558, 45.17217, 211], 1119 | [5.3861, 45.17245, 211], 1120 | [5.38636, 45.17262, 210], 1121 | [5.38649, 45.17279, 211], 1122 | [5.38672, 45.17299, 212], 1123 | [5.38694, 45.17313, 211], 1124 | [5.38744, 45.17326, 210], 1125 | [5.38808, 45.17349, 208], 1126 | [5.38825, 45.17357, 208] 1127 | ], 1128 | [ 1129 | [5.47269, 45.19369, 218], 1130 | [5.4728, 45.19398, 217], 1131 | [5.47306, 45.19414, 216], 1132 | [5.47323, 45.19434, 215], 1133 | [5.47327, 45.19452, 215], 1134 | [5.47305, 45.19508, 214], 1135 | [5.47292, 45.19525, 213], 1136 | [5.47253, 45.19556, 212], 1137 | [5.47243, 45.19568, 211], 1138 | [5.47275, 45.19615, 209], 1139 | [5.47332, 45.19644, 205], 1140 | [5.47334, 45.19662, 203], 1141 | [5.47305, 45.19747, 200], 1142 | [5.47318, 45.19751, 199], 1143 | [5.47339, 45.19754, 199], 1144 | [5.47354, 45.19759, 199], 1145 | [5.47369, 45.1977, 199], 1146 | [5.47374, 45.19777, 199], 1147 | [5.47474, 45.19867, 199], 1148 | [5.47507, 45.19878, 200], 1149 | [5.47514, 45.19886, 200], 1150 | [5.47599, 45.19939, 202], 1151 | [5.47699, 45.19975, 203], 1152 | [5.47749, 45.19999, 203], 1153 | [5.47803, 45.20037, 202], 1154 | [5.47886, 45.2012, 199], 1155 | [5.4791, 45.20141, 199], 1156 | [5.4807, 45.20117, 204], 1157 | [5.48093, 45.20118, 207], 1158 | [5.48122, 45.20133, 211], 1159 | [5.48145, 45.20153, 210], 1160 | [5.48146, 45.20178, 206], 1161 | [5.48162, 45.20262, 203], 1162 | [5.4817, 45.20289, 202], 1163 | [5.48181, 45.20316, 201], 1164 | [5.48205, 45.20345, 201], 1165 | [5.48233, 45.20398, 200], 1166 | [5.48238, 45.2042, 200], 1167 | [5.48241, 45.20449, 201], 1168 | [5.48238, 45.20474, 201], 1169 | [5.4824, 45.20488, 201], 1170 | [5.48245, 45.20505, 201], 1171 | [5.48254, 45.20522, 200], 1172 | [5.48264, 45.20549, 199], 1173 | [5.48264, 45.20569, 197], 1174 | [5.48279, 45.20647, 196], 1175 | [5.48274, 45.2066, 195], 1176 | [5.48297, 45.20737, 193], 1177 | [5.48296, 45.20743, 193], 1178 | [5.48339, 45.20761, 193], 1179 | [5.48433, 45.20801, 193], 1180 | [5.48462, 45.20816, 195], 1181 | [5.48493, 45.20839, 195], 1182 | [5.48614, 45.20948, 206], 1183 | [5.48707, 45.2102, 206], 1184 | [5.4874, 45.21053, 202], 1185 | [5.48777, 45.21104, 195], 1186 | [5.48849, 45.21245, 186], 1187 | [5.48962, 45.21453, 184], 1188 | [5.48979, 45.21489, 184], 1189 | [5.48984, 45.21502, 184], 1190 | [5.49004, 45.21543, 183], 1191 | [5.49081, 45.21681, 183], 1192 | [5.49101, 45.21717, 183], 1193 | [5.49169, 45.21851, 183], 1194 | [5.49286, 45.22075, 184], 1195 | [5.4932, 45.22137, 184], 1196 | [5.49362, 45.2222, 184], 1197 | [5.49499, 45.22481, 182], 1198 | [5.49546, 45.2257, 182], 1199 | [5.49777, 45.23011, 181], 1200 | [5.49791, 45.23038, 181], 1201 | [5.49976, 45.23389, 183], 1202 | [5.50173, 45.2376, 183], 1203 | [5.50204, 45.23813, 185], 1204 | [5.5024, 45.23857, 184], 1205 | [5.50254, 45.23852, 185], 1206 | [5.5024, 45.23857, 184], 1207 | [5.50204, 45.23813, 185], 1208 | [5.50173, 45.2376, 183], 1209 | [5.49976, 45.23389, 183], 1210 | [5.49791, 45.23038, 181], 1211 | [5.49777, 45.23011, 181], 1212 | [5.49546, 45.2257, 182], 1213 | [5.49499, 45.22481, 182], 1214 | [5.49362, 45.2222, 184], 1215 | [5.4932, 45.22137, 184], 1216 | [5.49286, 45.22075, 184], 1217 | [5.49169, 45.21851, 183], 1218 | [5.49101, 45.21717, 183], 1219 | [5.49081, 45.21681, 183], 1220 | [5.49004, 45.21543, 183], 1221 | [5.48984, 45.21502, 184], 1222 | [5.48979, 45.21489, 184], 1223 | [5.48962, 45.21453, 184], 1224 | [5.48849, 45.21245, 186], 1225 | [5.48777, 45.21104, 195], 1226 | [5.4874, 45.21053, 202], 1227 | [5.48707, 45.2102, 206], 1228 | [5.48614, 45.20948, 206], 1229 | [5.48493, 45.20839, 195], 1230 | [5.48462, 45.20816, 195], 1231 | [5.48433, 45.20801, 193], 1232 | [5.48296, 45.20743, 193], 1233 | [5.48172, 45.20698, 189], 1234 | [5.47986, 45.20622, 193], 1235 | [5.47927, 45.20602, 193], 1236 | [5.47821, 45.20577, 195], 1237 | [5.47658, 45.20543, 193], 1238 | [5.47099, 45.20423, 191], 1239 | [5.46986, 45.20407, 188], 1240 | [5.46911, 45.204, 187], 1241 | [5.46767, 45.20393, 185], 1242 | [5.46748, 45.20393, 185], 1243 | [5.46583, 45.20385, 189], 1244 | [5.46551, 45.20385, 190], 1245 | [5.46488, 45.20383, 193], 1246 | [5.46459, 45.20382, 195], 1247 | [5.46445, 45.20382, 196], 1248 | [5.46314, 45.20377, 200], 1249 | [5.46221, 45.20374, 203], 1250 | [5.46186, 45.20373, 205], 1251 | [5.46145, 45.20369, 205], 1252 | [5.46104, 45.20362, 203], 1253 | [5.4607, 45.20353, 202], 1254 | [5.46038, 45.20341, 200], 1255 | [5.46015, 45.20331, 198], 1256 | [5.45994, 45.20318, 198], 1257 | [5.45869, 45.20239, 198], 1258 | [5.45672, 45.20138, 205], 1259 | [5.45247, 45.1996, 207], 1260 | [5.45198, 45.19941, 209], 1261 | [5.4516, 45.1993, 210], 1262 | [5.44997, 45.19891, 211], 1263 | [5.44727, 45.19829, 210], 1264 | [5.44662, 45.19819, 211], 1265 | [5.44595, 45.19815, 211], 1266 | [5.4372, 45.19817, 219], 1267 | [5.43677, 45.19813, 219], 1268 | [5.4321, 45.19728, 217], 1269 | [5.43132, 45.19713, 218], 1270 | [5.43109, 45.19706, 218], 1271 | [5.43089, 45.19701, 218], 1272 | [5.43062, 45.19691, 217], 1273 | [5.43032, 45.19676, 216], 1274 | [5.42998, 45.19655, 217], 1275 | [5.4293, 45.19602, 218], 1276 | [5.42836, 45.19514, 222], 1277 | [5.42723, 45.19411, 225], 1278 | [5.42694, 45.19425, 223], 1279 | [5.42672, 45.19435, 222], 1280 | [5.42661, 45.1944, 222], 1281 | [5.426, 45.19463, 216], 1282 | [5.42576, 45.19472, 213], 1283 | [5.4242, 45.1952, 196], 1284 | [5.42305, 45.19552, 217], 1285 | [5.42298, 45.19552, 218], 1286 | [5.42288, 45.19552, 221], 1287 | [5.42269, 45.19545, 222], 1288 | [5.42231, 45.1952, 221], 1289 | [5.42221, 45.19515, 221], 1290 | [5.42203, 45.19511, 222], 1291 | [5.42143, 45.19511, 226], 1292 | [5.42103, 45.19507, 225], 1293 | [5.42062, 45.19499, 223], 1294 | [5.42054, 45.19498, 222], 1295 | [5.42031, 45.19503, 222], 1296 | [5.42015, 45.19512, 224], 1297 | [5.4198, 45.19543, 231], 1298 | [5.4197, 45.19557, 233], 1299 | [5.41959, 45.19612, 237], 1300 | [5.4195, 45.19632, 237], 1301 | [5.41938, 45.19652, 237], 1302 | [5.41922, 45.19665, 235], 1303 | [5.41852, 45.1969, 228], 1304 | [5.41835, 45.19698, 227], 1305 | [5.41828, 45.19703, 228], 1306 | [5.41801, 45.1973, 231], 1307 | [5.41792, 45.19747, 233], 1308 | [5.41798, 45.19792, 239], 1309 | [5.41795, 45.19807, 240], 1310 | [5.41789, 45.19825, 241], 1311 | [5.41777, 45.19841, 242], 1312 | [5.41764, 45.19851, 241], 1313 | [5.41751, 45.19857, 241] 1314 | ] 1315 | ]; 1316 | 1317 | List getPoints(int index) { 1318 | return lines[index] 1319 | .map((e) => LatLng(e[1] as double, e[0] as double)) 1320 | .toList(); 1321 | } 1322 | -------------------------------------------------------------------------------- /example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_map/flutter_map.dart'; 3 | import 'package:flutter_map_tappable_polyline/flutter_map_tappable_polyline.dart'; 4 | import 'package:latlong2/latlong.dart'; 5 | 6 | import 'data.dart'; 7 | 8 | void main() { 9 | runApp(MyApp()); 10 | } 11 | 12 | class MyApp extends StatelessWidget { 13 | // This widget is the root of your application. 14 | @override 15 | Widget build(BuildContext context) { 16 | return MaterialApp( 17 | title: 'Tappable Polyline Demo', 18 | theme: ThemeData( 19 | // This is the theme of your application. 20 | // 21 | // Try running your application with "flutter run". You'll see the 22 | // application has a blue toolbar. Then, without quitting the app, try 23 | // changing the primarySwatch below to Colors.green and then invoke 24 | // "hot reload" (press "r" in the console where you ran "flutter run", 25 | // or simply save your changes to "hot reload" in a Flutter IDE). 26 | // Notice that the counter didn't reset back to zero; the application 27 | // is not restarted. 28 | primarySwatch: Colors.blue, 29 | ), 30 | home: MyHomePage(title: 'Tappable Polyline Demo'), 31 | ); 32 | } 33 | } 34 | 35 | class MyHomePage extends StatefulWidget { 36 | MyHomePage({Key? key, this.title}) : super(key: key); 37 | 38 | // This widget is the home page of your application. It is stateful, meaning 39 | // that it has a State object (defined below) that contains fields that affect 40 | // how it looks. 41 | 42 | // This class is the configuration for the state. It holds the values (in this 43 | // case the title) provided by the parent (in this case the App widget) and 44 | // used by the build method of the State. Fields in a Widget subclass are 45 | // always marked "final". 46 | 47 | final String? title; 48 | 49 | @override 50 | _MyHomePageState createState() => _MyHomePageState(); 51 | } 52 | 53 | class _MyHomePageState extends State { 54 | @override 55 | Widget build(BuildContext context) { 56 | // This method is rerun every time setState is called, for instance as done 57 | // by the _incrementCounter method above. 58 | // 59 | // The Flutter framework has been optimized to make rerunning build methods 60 | // fast, so that you can just rebuild anything that needs updating rather 61 | // than having to individually change instances of widgets. 62 | return Scaffold( 63 | appBar: AppBar( 64 | // Here we take the value from the MyHomePage object that was created by 65 | // the App.build method, and use it to set our appbar title. 66 | title: Text(widget.title!), 67 | ), 68 | body: FlutterMap( 69 | options: MapOptions( 70 | initialCenter: LatLng(45.1313258, 5.5171205), 71 | initialZoom: 11.0, 72 | ), 73 | children: [ 74 | TileLayer( 75 | urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 76 | subdomains: ['a', 'b', 'c'], 77 | ), 78 | TappablePolylineLayer( 79 | // Will only render visible polylines, increasing performance 80 | polylineCulling: true, 81 | pointerDistanceTolerance: 20, 82 | polylines: [ 83 | TaggedPolyline( 84 | tag: 'My Polyline', 85 | // An optional tag to distinguish polylines in callback 86 | points: getPoints(0), 87 | color: Colors.red, 88 | strokeWidth: 9.0, 89 | ), 90 | TaggedPolyline( 91 | tag: 'My 2nd Polyline', 92 | // An optional tag to distinguish polylines in callback 93 | points: getPoints(1), 94 | color: Colors.black, 95 | strokeWidth: 3.0, 96 | ), 97 | TaggedPolyline( 98 | tag: 'My 3rd Polyline', 99 | // An optional tag to distinguish polylines in callback 100 | points: getPoints(0), 101 | color: Colors.blue, 102 | strokeWidth: 3.0, 103 | ), 104 | ], 105 | onTap: (polylines, tapPosition) => print('Tapped: ' + 106 | polylines.map((polyline) => polyline.tag).join(',') + 107 | ' at ' + 108 | tapPosition.globalPosition.toString()), 109 | onMiss: (tapPosition) { 110 | print('No polyline was tapped at position ' + 111 | tapPosition.globalPosition.toString()); 112 | }) 113 | ], 114 | ), 115 | ); 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /example/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" 9 | url: "https://pub.dev" 10 | source: hosted 11 | version: "2.11.0" 12 | boolean_selector: 13 | dependency: transitive 14 | description: 15 | name: boolean_selector 16 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" 17 | url: "https://pub.dev" 18 | source: hosted 19 | version: "2.1.1" 20 | characters: 21 | dependency: transitive 22 | description: 23 | name: characters 24 | sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" 25 | url: "https://pub.dev" 26 | source: hosted 27 | version: "1.3.0" 28 | charcode: 29 | dependency: transitive 30 | description: 31 | name: charcode 32 | sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 33 | url: "https://pub.dev" 34 | source: hosted 35 | version: "1.3.1" 36 | clock: 37 | dependency: transitive 38 | description: 39 | name: clock 40 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf 41 | url: "https://pub.dev" 42 | source: hosted 43 | version: "1.1.1" 44 | collection: 45 | dependency: transitive 46 | description: 47 | name: collection 48 | sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" 49 | url: "https://pub.dev" 50 | source: hosted 51 | version: "1.17.1" 52 | fake_async: 53 | dependency: transitive 54 | description: 55 | name: fake_async 56 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" 57 | url: "https://pub.dev" 58 | source: hosted 59 | version: "1.3.1" 60 | flutter: 61 | dependency: "direct main" 62 | description: flutter 63 | source: sdk 64 | version: "0.0.0" 65 | flutter_map: 66 | dependency: transitive 67 | description: 68 | name: flutter_map 69 | sha256: "2b925948b675ef74ca524179fb133dbe0a21741889ccf56ad08fc8dcc38ba94b" 70 | url: "https://pub.dev" 71 | source: hosted 72 | version: "6.0.1" 73 | flutter_map_tappable_polyline: 74 | dependency: "direct main" 75 | description: 76 | path: ".." 77 | relative: true 78 | source: path 79 | version: "5.0.0" 80 | flutter_test: 81 | dependency: "direct dev" 82 | description: flutter 83 | source: sdk 84 | version: "0.0.0" 85 | http: 86 | dependency: transitive 87 | description: 88 | name: http 89 | sha256: "4c3f04bfb64d3efd508d06b41b825542f08122d30bda4933fb95c069d22a4fa3" 90 | url: "https://pub.dev" 91 | source: hosted 92 | version: "1.0.0" 93 | http_parser: 94 | dependency: transitive 95 | description: 96 | name: http_parser 97 | sha256: e362d639ba3bc07d5a71faebb98cde68c05bfbcfbbb444b60b6f60bb67719185 98 | url: "https://pub.dev" 99 | source: hosted 100 | version: "4.0.0" 101 | intl: 102 | dependency: transitive 103 | description: 104 | name: intl 105 | sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" 106 | url: "https://pub.dev" 107 | source: hosted 108 | version: "0.17.0" 109 | js: 110 | dependency: transitive 111 | description: 112 | name: js 113 | sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 114 | url: "https://pub.dev" 115 | source: hosted 116 | version: "0.6.7" 117 | latlong2: 118 | dependency: transitive 119 | description: 120 | name: latlong2 121 | sha256: "18712164760cee655bc790122b0fd8f3d5b3c36da2cb7bf94b68a197fbb0811b" 122 | url: "https://pub.dev" 123 | source: hosted 124 | version: "0.9.0" 125 | lists: 126 | dependency: transitive 127 | description: 128 | name: lists 129 | sha256: "15b788c949b642caf6ccc14ec07751318dc814fae802a7ca11e285a1920f4e10" 130 | url: "https://pub.dev" 131 | source: hosted 132 | version: "1.0.0" 133 | logger: 134 | dependency: transitive 135 | description: 136 | name: logger 137 | sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" 138 | url: "https://pub.dev" 139 | source: hosted 140 | version: "2.0.2+1" 141 | matcher: 142 | dependency: transitive 143 | description: 144 | name: matcher 145 | sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" 146 | url: "https://pub.dev" 147 | source: hosted 148 | version: "0.12.15" 149 | material_color_utilities: 150 | dependency: transitive 151 | description: 152 | name: material_color_utilities 153 | sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 154 | url: "https://pub.dev" 155 | source: hosted 156 | version: "0.2.0" 157 | meta: 158 | dependency: transitive 159 | description: 160 | name: meta 161 | sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" 162 | url: "https://pub.dev" 163 | source: hosted 164 | version: "1.9.1" 165 | mgrs_dart: 166 | dependency: transitive 167 | description: 168 | name: mgrs_dart 169 | sha256: fb89ae62f05fa0bb90f70c31fc870bcbcfd516c843fb554452ab3396f78586f7 170 | url: "https://pub.dev" 171 | source: hosted 172 | version: "2.0.0" 173 | path: 174 | dependency: transitive 175 | description: 176 | name: path 177 | sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" 178 | url: "https://pub.dev" 179 | source: hosted 180 | version: "1.8.3" 181 | polylabel: 182 | dependency: transitive 183 | description: 184 | name: polylabel 185 | sha256: "41b9099afb2aa6c1730bdd8a0fab1400d287694ec7615dd8516935fa3144214b" 186 | url: "https://pub.dev" 187 | source: hosted 188 | version: "1.0.1" 189 | proj4dart: 190 | dependency: transitive 191 | description: 192 | name: proj4dart 193 | sha256: c8a659ac9b6864aa47c171e78d41bbe6f5e1d7bd790a5814249e6b68bc44324e 194 | url: "https://pub.dev" 195 | source: hosted 196 | version: "2.1.0" 197 | sky_engine: 198 | dependency: transitive 199 | description: flutter 200 | source: sdk 201 | version: "0.0.99" 202 | source_span: 203 | dependency: transitive 204 | description: 205 | name: source_span 206 | sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 207 | url: "https://pub.dev" 208 | source: hosted 209 | version: "1.9.1" 210 | stack_trace: 211 | dependency: transitive 212 | description: 213 | name: stack_trace 214 | sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 215 | url: "https://pub.dev" 216 | source: hosted 217 | version: "1.11.0" 218 | stream_channel: 219 | dependency: transitive 220 | description: 221 | name: stream_channel 222 | sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" 223 | url: "https://pub.dev" 224 | source: hosted 225 | version: "2.1.1" 226 | string_scanner: 227 | dependency: transitive 228 | description: 229 | name: string_scanner 230 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" 231 | url: "https://pub.dev" 232 | source: hosted 233 | version: "1.2.0" 234 | term_glyph: 235 | dependency: transitive 236 | description: 237 | name: term_glyph 238 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 239 | url: "https://pub.dev" 240 | source: hosted 241 | version: "1.2.1" 242 | test_api: 243 | dependency: transitive 244 | description: 245 | name: test_api 246 | sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb 247 | url: "https://pub.dev" 248 | source: hosted 249 | version: "0.5.1" 250 | typed_data: 251 | dependency: transitive 252 | description: 253 | name: typed_data 254 | sha256: "53bdf7e979cfbf3e28987552fd72f637e63f3c8724c9e56d9246942dc2fa36ee" 255 | url: "https://pub.dev" 256 | source: hosted 257 | version: "1.3.0" 258 | unicode: 259 | dependency: transitive 260 | description: 261 | name: unicode 262 | sha256: "0c90cf0f633aab2d2e3f53e2a61979abe667c30543aa7a9b9b09d4a52cc39fa7" 263 | url: "https://pub.dev" 264 | source: hosted 265 | version: "0.3.0" 266 | vector_math: 267 | dependency: transitive 268 | description: 269 | name: vector_math 270 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" 271 | url: "https://pub.dev" 272 | source: hosted 273 | version: "2.1.4" 274 | wkt_parser: 275 | dependency: transitive 276 | description: 277 | name: wkt_parser 278 | sha256: "8a555fc60de3116c00aad67891bcab20f81a958e4219cc106e3c037aa3937f13" 279 | url: "https://pub.dev" 280 | source: hosted 281 | version: "2.0.0" 282 | sdks: 283 | dart: ">=3.0.0 <4.0.0" 284 | flutter: ">=3.10.0" 285 | -------------------------------------------------------------------------------- /example/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: example 2 | description: A new Flutter project. 3 | version: 6.0.0 4 | publish_to: "none" 5 | 6 | environment: 7 | sdk: ">=3.0.0 <4.0.0" 8 | 9 | dependencies: 10 | flutter: 11 | sdk: flutter 12 | flutter_map_tappable_polyline: 13 | path: ../ 14 | 15 | dev_dependencies: 16 | flutter_test: 17 | sdk: flutter 18 | 19 | flutter: 20 | uses-material-design: true 21 | -------------------------------------------------------------------------------- /example/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:example/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /lib/flutter_map_tappable_polyline.dart: -------------------------------------------------------------------------------- 1 | library flutter_map_tappable_polyline; 2 | 3 | import 'dart:math'; 4 | 5 | import 'package:flutter/widgets.dart'; 6 | import 'package:flutter_map/flutter_map.dart'; 7 | import 'package:latlong2/latlong.dart'; 8 | 9 | /// A polyline with a tag 10 | class TaggedPolyline extends Polyline { 11 | /// The name of the polyline 12 | final String? tag; 13 | 14 | final List _offsets = []; 15 | 16 | TaggedPolyline({ 17 | required super.points, 18 | super.strokeWidth = 1.0, 19 | super.color = const Color(0xFF00FF00), 20 | super.borderStrokeWidth = 0.0, 21 | super.borderColor = const Color(0xFFFFFF00), 22 | super.gradientColors, 23 | super.colorsStop, 24 | super.isDotted = false, 25 | this.tag, 26 | }); 27 | } 28 | 29 | class TappablePolylineLayer extends PolylineLayer { 30 | /// The list of [TaggedPolyline] which could be tapped 31 | @override 32 | final List polylines; 33 | 34 | /// The tolerated distance between pointer and user tap to trigger the [onTap] callback 35 | final double pointerDistanceTolerance; 36 | 37 | /// The callback to call when a polyline was hit by the tap 38 | final void Function(List, TapUpDetails tapPosition)? onTap; 39 | 40 | /// The optional callback to call when no polyline was hit by the tap 41 | final void Function(TapUpDetails tapPosition)? onMiss; 42 | 43 | TappablePolylineLayer({ 44 | this.polylines = const [], 45 | this.onTap, 46 | this.onMiss, 47 | this.pointerDistanceTolerance = 15, 48 | polylineCulling = false, 49 | key, 50 | }) : super(key: key, polylines: polylines, polylineCulling: polylineCulling); 51 | 52 | @override 53 | Widget build(BuildContext context) { 54 | final mapCamera = MapCamera.of(context); 55 | 56 | return _build( 57 | context, 58 | Size(mapCamera.size.x, mapCamera.size.y), 59 | polylineCulling 60 | ? polylines 61 | .where( 62 | (p) => p.boundingBox.isOverlapping(mapCamera.visibleBounds)) 63 | .toList() 64 | : polylines, 65 | ); 66 | } 67 | 68 | Widget _build(BuildContext context, Size size, List lines) { 69 | final mapState = MapCamera.of(context); 70 | 71 | for (TaggedPolyline polyline in lines) { 72 | polyline._offsets.clear(); 73 | var i = 0; 74 | for (var point in polyline.points) { 75 | var pos = mapState.project(point); 76 | pos = (pos * mapState.getZoomScale(mapState.zoom, mapState.zoom)) - 77 | mapState.pixelOrigin.toDoublePoint(); 78 | polyline._offsets.add(Offset(pos.x.toDouble(), pos.y.toDouble())); 79 | if (i > 0 && i < polyline.points.length) { 80 | polyline._offsets.add(Offset(pos.x.toDouble(), pos.y.toDouble())); 81 | } 82 | i++; 83 | } 84 | } 85 | 86 | return Container( 87 | child: GestureDetector( 88 | onDoubleTap: () { 89 | // For some strange reason i have to add this callback for the onDoubleTapDown callback to be called. 90 | }, 91 | onDoubleTapDown: (TapDownDetails details) { 92 | _zoomMap(details, context); 93 | }, 94 | onTapUp: (TapUpDetails details) { 95 | _forwardCallToMapOptions(details, context); 96 | _handlePolylineTap(details, onTap, onMiss); 97 | }, 98 | child: Stack( 99 | children: [ 100 | CustomPaint( 101 | painter: PolylinePainter(lines, mapState), 102 | size: size, 103 | ), 104 | ], 105 | ), 106 | ), 107 | ); 108 | } 109 | 110 | void _handlePolylineTap( 111 | TapUpDetails details, Function? onTap, Function? onMiss) { 112 | // We might hit close to multiple polylines. We will therefore keep a reference to these in this map. 113 | Map> candidates = {}; 114 | 115 | // Calculating taps in between points on the polyline. We 116 | // iterate over all the segments in the polyline to find any 117 | // matches with the tapped point within the 118 | // pointerDistanceTolerance. 119 | for (TaggedPolyline currentPolyline in polylines) { 120 | for (var j = 0; j < currentPolyline._offsets.length - 1; j++) { 121 | // We consider the points point1, point2 and tap points in a triangle 122 | var point1 = currentPolyline._offsets[j]; 123 | var point2 = currentPolyline._offsets[j + 1]; 124 | var tap = details.localPosition; 125 | 126 | // To determine if we have tapped in between two po ints, we 127 | // calculate the length from the tapped point to the line 128 | // created by point1, point2. If this distance is shorter 129 | // than the specified threshold, we have detected a tap 130 | // between two points. 131 | // 132 | // We start by calculating the length of all the sides using pythagoras. 133 | var a = _distance(point1, point2); 134 | var b = _distance(point1, tap); 135 | var c = _distance(point2, tap); 136 | 137 | // To find the height when we only know the lengths of the sides, we can use Herons formula to get the Area. 138 | var semiPerimeter = (a + b + c) / 2.0; 139 | var triangleArea = sqrt(semiPerimeter * 140 | (semiPerimeter - a) * 141 | (semiPerimeter - b) * 142 | (semiPerimeter - c)); 143 | 144 | // We can then finally calculate the length from the tapped point onto the line created by point1, point2. 145 | // Area of triangles is half the area of a rectangle 146 | // area = 1/2 base * height -> height = (2 * area) / base 147 | var height = (2 * triangleArea) / a; 148 | 149 | // We're not there yet - We need to satisfy the edge case 150 | // where the perpendicular line from the tapped point onto 151 | // the line created by point1, point2 (called point D) is 152 | // outside of the segment point1, point2. We need 153 | // to check if the length from D to the original segment 154 | // (point1, point2) is less than the threshold. 155 | 156 | var hypotenus = max(b, c); 157 | var newTriangleBase = sqrt((hypotenus * hypotenus) - (height * height)); 158 | var lengthDToOriginalSegment = newTriangleBase - a; 159 | 160 | if (height < pointerDistanceTolerance && 161 | lengthDToOriginalSegment < pointerDistanceTolerance) { 162 | var minimum = min(height, lengthDToOriginalSegment); 163 | 164 | candidates[minimum] ??= []; 165 | candidates[minimum]!.add(currentPolyline); 166 | } 167 | } 168 | } 169 | 170 | if (candidates.isEmpty) return onMiss?.call(details); 171 | 172 | // We look up in the map of distances to the tap, and choose the shortest one. 173 | var closestToTapKey = candidates.keys.reduce(min); 174 | onTap!(candidates[closestToTapKey], details); 175 | } 176 | 177 | void _forwardCallToMapOptions(TapUpDetails details, BuildContext context) { 178 | final latlng = _offsetToLatLng(details.localPosition, context.size!.width, 179 | context.size!.height, context); 180 | 181 | final mapOptions = MapOptions.of(context); 182 | 183 | final tapPosition = 184 | TapPosition(details.globalPosition, details.localPosition); 185 | 186 | // Forward the onTap call to map.options so that we won't break onTap 187 | mapOptions.onTap?.call(tapPosition, latlng); 188 | } 189 | 190 | double _distance(Offset point1, Offset point2) { 191 | var distancex = (point1.dx - point2.dx).abs(); 192 | var distancey = (point1.dy - point2.dy).abs(); 193 | 194 | var distance = sqrt((distancex * distancex) + (distancey * distancey)); 195 | 196 | return distance; 197 | } 198 | 199 | void _zoomMap(TapDownDetails details, BuildContext context) { 200 | final mapCamera = MapCamera.of(context); 201 | final mapController = MapController.of(context); 202 | 203 | var newCenter = _offsetToLatLng(details.localPosition, context.size!.width, 204 | context.size!.height, context); 205 | mapController.move(newCenter, mapCamera.zoom + 0.5); 206 | } 207 | 208 | LatLng _offsetToLatLng( 209 | Offset offset, double width, double height, BuildContext context) { 210 | final mapCamera = MapCamera.of(context); 211 | 212 | var localPoint = Point(offset.dx, offset.dy); 213 | var localPointCenterDistance = 214 | Point((width / 2) - localPoint.x, (height / 2) - localPoint.y); 215 | var mapCenter = mapCamera.project(mapCamera.center); 216 | var point = mapCenter - localPointCenterDistance; 217 | return mapCamera.unproject(point); 218 | } 219 | } 220 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | sha256: "271b8899fc99f9df4f4ed419fa14e2fff392c7b2c162fbb87b222e2e963ddc73" 9 | url: "https://pub.dev" 10 | source: hosted 11 | version: "2.9.0" 12 | characters: 13 | dependency: transitive 14 | description: 15 | name: characters 16 | sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" 17 | url: "https://pub.dev" 18 | source: hosted 19 | version: "1.3.0" 20 | charcode: 21 | dependency: transitive 22 | description: 23 | name: charcode 24 | sha256: "8e36feea6de5ea69f2199f29cf42a450a855738c498b57c0b980e2d3cca9c362" 25 | url: "https://pub.dev" 26 | source: hosted 27 | version: "1.2.0" 28 | clock: 29 | dependency: transitive 30 | description: 31 | name: clock 32 | sha256: "6021e0172ab6e6eaa1d391afed0a99353921f00c54385c574dc53e55d67c092c" 33 | url: "https://pub.dev" 34 | source: hosted 35 | version: "1.1.0" 36 | collection: 37 | dependency: transitive 38 | description: 39 | name: collection 40 | sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" 41 | url: "https://pub.dev" 42 | source: hosted 43 | version: "1.17.1" 44 | flutter: 45 | dependency: "direct main" 46 | description: flutter 47 | source: sdk 48 | version: "0.0.0" 49 | flutter_map: 50 | dependency: "direct main" 51 | description: 52 | name: flutter_map 53 | sha256: "2b925948b675ef74ca524179fb133dbe0a21741889ccf56ad08fc8dcc38ba94b" 54 | url: "https://pub.dev" 55 | source: hosted 56 | version: "6.0.1" 57 | http: 58 | dependency: transitive 59 | description: 60 | name: http 61 | sha256: "4c3f04bfb64d3efd508d06b41b825542f08122d30bda4933fb95c069d22a4fa3" 62 | url: "https://pub.dev" 63 | source: hosted 64 | version: "1.0.0" 65 | http_parser: 66 | dependency: transitive 67 | description: 68 | name: http_parser 69 | sha256: e362d639ba3bc07d5a71faebb98cde68c05bfbcfbbb444b60b6f60bb67719185 70 | url: "https://pub.dev" 71 | source: hosted 72 | version: "4.0.0" 73 | intl: 74 | dependency: transitive 75 | description: 76 | name: intl 77 | sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" 78 | url: "https://pub.dev" 79 | source: hosted 80 | version: "0.17.0" 81 | js: 82 | dependency: transitive 83 | description: 84 | name: js 85 | sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 86 | url: "https://pub.dev" 87 | source: hosted 88 | version: "0.6.7" 89 | latlong2: 90 | dependency: "direct main" 91 | description: 92 | name: latlong2 93 | sha256: "18712164760cee655bc790122b0fd8f3d5b3c36da2cb7bf94b68a197fbb0811b" 94 | url: "https://pub.dev" 95 | source: hosted 96 | version: "0.9.0" 97 | lists: 98 | dependency: transitive 99 | description: 100 | name: lists 101 | sha256: "15b788c949b642caf6ccc14ec07751318dc814fae802a7ca11e285a1920f4e10" 102 | url: "https://pub.dev" 103 | source: hosted 104 | version: "1.0.0" 105 | logger: 106 | dependency: transitive 107 | description: 108 | name: logger 109 | sha256: "6bbb9d6f7056729537a4309bda2e74e18e5d9f14302489cc1e93f33b3fe32cac" 110 | url: "https://pub.dev" 111 | source: hosted 112 | version: "2.0.2+1" 113 | material_color_utilities: 114 | dependency: transitive 115 | description: 116 | name: material_color_utilities 117 | sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 118 | url: "https://pub.dev" 119 | source: hosted 120 | version: "0.2.0" 121 | meta: 122 | dependency: transitive 123 | description: 124 | name: meta 125 | sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" 126 | url: "https://pub.dev" 127 | source: hosted 128 | version: "1.9.1" 129 | mgrs_dart: 130 | dependency: transitive 131 | description: 132 | name: mgrs_dart 133 | sha256: fb89ae62f05fa0bb90f70c31fc870bcbcfd516c843fb554452ab3396f78586f7 134 | url: "https://pub.dev" 135 | source: hosted 136 | version: "2.0.0" 137 | path: 138 | dependency: transitive 139 | description: 140 | name: path 141 | sha256: "2ad4cddff7f5cc0e2d13069f2a3f7a73ca18f66abd6f5ecf215219cdb3638edb" 142 | url: "https://pub.dev" 143 | source: hosted 144 | version: "1.8.0" 145 | pedantic: 146 | dependency: "direct dev" 147 | description: 148 | name: pedantic 149 | sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" 150 | url: "https://pub.dev" 151 | source: hosted 152 | version: "1.11.1" 153 | polylabel: 154 | dependency: transitive 155 | description: 156 | name: polylabel 157 | sha256: "41b9099afb2aa6c1730bdd8a0fab1400d287694ec7615dd8516935fa3144214b" 158 | url: "https://pub.dev" 159 | source: hosted 160 | version: "1.0.1" 161 | proj4dart: 162 | dependency: transitive 163 | description: 164 | name: proj4dart 165 | sha256: c8a659ac9b6864aa47c171e78d41bbe6f5e1d7bd790a5814249e6b68bc44324e 166 | url: "https://pub.dev" 167 | source: hosted 168 | version: "2.1.0" 169 | sky_engine: 170 | dependency: transitive 171 | description: flutter 172 | source: sdk 173 | version: "0.0.99" 174 | source_span: 175 | dependency: transitive 176 | description: 177 | name: source_span 178 | sha256: d5f89a9e52b36240a80282b3dc0667dd36e53459717bb17b8fb102d30496606a 179 | url: "https://pub.dev" 180 | source: hosted 181 | version: "1.8.1" 182 | string_scanner: 183 | dependency: transitive 184 | description: 185 | name: string_scanner 186 | sha256: dd11571b8a03f7cadcf91ec26a77e02bfbd6bbba2a512924d3116646b4198fc4 187 | url: "https://pub.dev" 188 | source: hosted 189 | version: "1.1.0" 190 | term_glyph: 191 | dependency: transitive 192 | description: 193 | name: term_glyph 194 | sha256: a88162591b02c1f3a3db3af8ce1ea2b374bd75a7bb8d5e353bcfbdc79d719830 195 | url: "https://pub.dev" 196 | source: hosted 197 | version: "1.2.0" 198 | typed_data: 199 | dependency: transitive 200 | description: 201 | name: typed_data 202 | sha256: "53bdf7e979cfbf3e28987552fd72f637e63f3c8724c9e56d9246942dc2fa36ee" 203 | url: "https://pub.dev" 204 | source: hosted 205 | version: "1.3.0" 206 | unicode: 207 | dependency: transitive 208 | description: 209 | name: unicode 210 | sha256: "0c90cf0f633aab2d2e3f53e2a61979abe667c30543aa7a9b9b09d4a52cc39fa7" 211 | url: "https://pub.dev" 212 | source: hosted 213 | version: "0.3.0" 214 | vector_math: 215 | dependency: transitive 216 | description: 217 | name: vector_math 218 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" 219 | url: "https://pub.dev" 220 | source: hosted 221 | version: "2.1.4" 222 | wkt_parser: 223 | dependency: transitive 224 | description: 225 | name: wkt_parser 226 | sha256: "8a555fc60de3116c00aad67891bcab20f81a958e4219cc106e3c037aa3937f13" 227 | url: "https://pub.dev" 228 | source: hosted 229 | version: "2.0.0" 230 | sdks: 231 | dart: ">=3.0.0 <4.0.0" 232 | flutter: ">=3.10.0" 233 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: flutter_map_tappable_polyline 2 | description: A flutter_map plugin that adds Polyline class with onTap event 3 | version: 6.0.0 4 | homepage: https://github.com/OwnWeb/flutter_map_tappable_polyline 5 | 6 | environment: 7 | sdk: ">=3.0.0 <4.0.0" 8 | flutter: ">=2.0.0" 9 | 10 | dependencies: 11 | flutter: 12 | sdk: flutter 13 | flutter_map: ^6.0.1 14 | latlong2: ^0.9.0 15 | 16 | dev_dependencies: 17 | pedantic: ^1.11.1 18 | --------------------------------------------------------------------------------