A Mapbox GL flutter package for creating custom maps

Related tags

Map maps
Overview

Flutter Mapbox GL

Please note that this project is community driven and is not an official Mapbox product.

We welcome feedback and contributions.

This Flutter plugin allows to show embedded interactive and customizable vector maps inside a Flutter widget. For the Android and iOS integration, we use mapbox-gl-native. For web, we rely on mapbox-gl-js. This project only supports a subset of the API exposed by these libraries.

screenshot.png

How to use

This project is available on pub.dev, follow the instructions to add a package into your flutter application.

Private Mapbox access token

This project does require a Mapbox access token to download the underlying Android/iOS SDKs. The secret access token must have the Download: read scope for Android and/or iOS.

If this configuration is not present, an error like the following appears during the build process:

Android

* What went wrong:
A problem occurred evaluating project ':mapbox_gl'.
> SDK Registry token is null. See README.md for more information.

iOS

[!] Error installing Mapbox-iOS-SDK
curl: (22) The requested URL returned error: 401 Unauthorized

Public Mapbox access token

Next to a private access token you will need to provide an public access token to retrieve the style and underlying resources. This can be done with running your application with an additional define statement:

flutter run -d {device_id} --dart-define=ACCESS_TOKEN=ADD_YOUR_TOKEN_HERE`

Supported API

Feature Android iOS Web
Style
Camera
Gesture
User Location
Style DSL
Raster Layer
Symbol Layer
Circle Layer
Line Layer
Fill Layer
Vector Source
Raster Source
GeoJson Source
Image Source
Expressions
Symbol Annotation
Circle Annotation
Line Annotation
Fill Annotation

Map Styles

Map styles can be supplied by setting the styleString in the MapOptions. The following formats are supported:

  1. Passing the URL of the map style. This can be one of the built-in map styles, also see MapboxStyles or a custom map style served remotely using a URL that start with 'http(s)://' or 'mapbox://'
  2. Passing the style as a local asset. Create a JSON file in the assets and add a reference in pubspec.yml. Set the style string to the relative path for this asset in order to load it into the map.
  3. Passing the style as a local file. create an JSON file in app directory (e.g. ApplicationDocumentsDirectory). Set the style string to the absolute path of this JSON file.
  4. Passing the raw JSON of the map style. This is only supported on Android.

Offline Sideloading

Support for offline maps is available by side loading the required map tiles and including them in your assets folder.

  • Create your tiles package by following the guide available here.

  • Place the tiles.db file generated in step one in your assets directory and add a reference to it in your pubspec.yml file.

   assets:
     - assets/cache.db
  • Call installOfflineMapTiles when your application starts to copy your tiles into the location where Mapbox can access them. NOTE: This method should be called before the Map widget is loaded to prevent collisions when copying the files into place.
    try {
      await installOfflineMapTiles(join("assets", "cache.db"));
    } catch (err) {
      print(err);
    }

Downloading Offline Regions

An offline region is a defined region of a map that is available for use in conditions with limited or no network connection. Tiles for selected region, style and precision are downloaded from Mapbox using proper SDK methods and stored in application's cache.

  • Beware of selecting big regions, as size might be significant. Here is an online estimator https://docs.mapbox.com/playground/offline-estimator/.

  • Call downloadOfflineRegionStream with predefined OfflineRegion and optionally track progress in the callback function.

    final Function(DownloadRegionStatus event) onEvent = (DownloadRegionStatus status) {
      if (status.runtimeType == Success) {
        // ...
      } else if (status.runtimeType == InProgress) {
        int progress = (status as InProgress).progress.round();
        // ...
      } else if (status.runtimeType == Error) {
        // ...
      }
    };

    final OfflineRegion offlineRegion = OfflineRegion(
      bounds: LatLngBounds(
        northeast: LatLng(52.5050648, 13.3915634),
        southwest: LatLng(52.4943073, 13.4055383),
      ),
      id: 1,
      minZoom: 6,
      maxZoom: 18,
      mapStyleUrl: 'mapbox://styles/mapbox/streets-v11',
    );

    downloadOfflineRegionStream(offlineRegion, onEvent);

Location features

Android

Add the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission in the application manifest android/app/src/main/AndroidManifest.xml to enable location features in an Android application:

<manifest ...
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Starting from Android API level 23 you also need to request it at runtime. This plugin does not handle this for you. The example app uses the flutter 'location' plugin for this.

iOS

To enable location features in an iOS application:

If you access your users' location, you should also add the following key to ios/Runner/Info.plist to explain why you need access to their location data:

xml ...
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>[Your explanation here]</string>

Recommended explanation about "Shows your location on the map and helps improve the map".

Contributing

We welcome contributions to this repository! If you're interested in helping build this Mapbox-Flutter integration, please read the contribution guide to learn how to get started.

Comments
  • Map totally distorted with Flutter 3.x.x

    Map totally distorted with Flutter 3.x.x

    Flutter 3.0.0 was released this night and unfortunately it broke MapBox on Android.

    To reproduce: build the example app with the 3.0.0 version, run it and open for example "Place symbol" Result:

    As you can see the map is not in its usual constraint bounds, has a different side ratio, is also moved up and therefore drawn under the status bar. Probably it is just added at x: 0, y: 0 and is therefore in the top left corner.

    As you can read in the article introducing the new flutter version here: https://medium.com/flutter/whats-new-in-flutter-3-8c74a5bc32d0 it looks like something regarding the Android platform view has been changed:

    Bildschirmfoto 2022-05-12 um 15 22 17

    Unfortunately I was not able to find more information regarding this change or how this can be fixed.

    More information:

    • Only Android is affected - iOS and Web are completely fine
    • My test device was a Google Pixel 3 XL running with Android 12
    • The issue occurs for both options for useHybridComposition (-> true and false give the same result)
    • The click event are still registered where the map would be if it was not moved up -> pinch-to-zoom is really wanky now
    opened by felix-mittermeier 71
  • v0.12.0 A problem occurred evaluating project ':mapbox_gl'.

    v0.12.0 A problem occurred evaluating project ':mapbox_gl'.

    Once again, thank you for this lib.

    I just did try out an upgrade to the latest v0.12.0, this is the result on trying to build it:

    Launching lib\main.dart on sdk gphone x86 in debug mode...
    Running Gradle task 'assembleDebug'...
    
    FAILURE: Build completed with 2 failures.
    
    1: Task failed with an exception.
    -----------
    * Where:
    Build file 'C:\Users\Acme\AppData\Local\Pub\Cache\hosted\pub.dartlang.org\mapbox_gl-0.12.0\android\build.gradle' line: 18
    
    * What went wrong:
    A problem occurred evaluating project ':mapbox_gl'.
    > SDK Registry token is null. See README.md for more information.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    ==============================================================================
    
    2: Task failed with an exception.
    -----------
    * Where:
    Script 'C:\work\tools\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 325
    
    * What went wrong:
    A problem occurred configuring project ':mapbox_gl'.
    > Could not get unknown property 'android' for project ':mapbox_gl' of type org.gradle.api.Project.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
    ==============================================================================
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 1s
    Exception: Gradle task assembleDebug failed with exit code 1
    
    

    flutter v2.0.4 android api v30

    https://github.com/tobrun/flutter-mapbox-gl/releases/tag/0.12.0

    P.s.: the same project is working fine on v0.11.0

    opened by 4F2E4A2E 44
  • Workaround for disposal crash with flutter3

    Workaround for disposal crash with flutter3

    This PR addresses native crashes after Mapbox disposal, since flutter3 seems to dispose resources faster than its 2.X.X predecessors.

    It is an ugly workaround and by no means a fix, so be advised to use it cautiously.

    It works for both hybrid and virtual device mode.

    opened by srmanc 39
  • Could not get unknown property 'android' for project ':mapbox_gl' of type org.gradle.api.Project.

    Could not get unknown property 'android' for project ':mapbox_gl' of type org.gradle.api.Project.

    FAILURE: Build completed with 2 failures.

    1: Task failed with an exception.

    • Where:
      Build file '/home/thanku/Documents/flutter-mapbox-gl/android/build.gradle' line: 18

    • What went wrong:
      A problem occurred evaluating project ':mapbox_gl'.

    SDK Registry token is null. See README.md for more information.

    • Try:
      Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. ==============================================================================

    2: Task failed with an exception.

    • Where:
      Script '/home/thanku/Documents/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 346

    • What went wrong:
      A problem occurred configuring project ':mapbox_gl'.

    Could not get unknown property 'android' for project ':mapbox_gl' of type org.gradle.api.Project.

    • Try:
      Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. ==============================================================================

    • Get more help at https://help.gradle.org

    stale 
    opened by syk1k 39
  • onStyleLoadedCallback not called on iOS

    onStyleLoadedCallback not called on iOS

    Flutter (Channel stable, v1.17.5, on Mac OS X 10.15.5 19F101, locale en-US) On Master branch of plugin.

    The onStyleLoadedCallback is not called in the example app. Notice if you go to 'Place Symbol' and click on add (asset image) or add (network image) it does not work. That is because these images are setup in the onStyleLoadedCallback which is not called on iOS. This works fine on Android.

    stale 
    opened by woelmer 37
  • flutter-mapbox-gl doesnt work on the web

    flutter-mapbox-gl doesnt work on the web

    in pub.dev android, ios and web is considered supported, but when i use my app in the web the mapbox map doesn't work. is it me or its just not supported for the web?

    help wanted 
    opened by maliknajjar 29
  • PlatformException with new release

    PlatformException with new release

    Unhandled Exception: PlatformException(unregistered_view_type, trying to create a view with an unregistered type, unregistered view type: 'plugins.flutter.io/mapbox_gl')

    android crash 
    opened by adar2378 29
  • Annotation manager moved to dart

    Annotation manager moved to dart

    With the addition of layers, we now have have the option to implement the annotation manager code in dart. This significantly reduces the required plugin surface area. This PR does this migration while keeping the old api stable.

    New Features

    • Fixes longstading performance issues on android caused by annotations manager
    • Full annotation manager implementation in dart
    • the api is stable - no changes required by the users
    • using Object oriented annotation managers in dart are now possible
    • adding multiple annotation managers of the same type is now possible (using the object oriented api)
    • fixes long standing issues (e.g.: Fills with patterns and colors are now possible at the same time)
    • full drag and drop support - also for normal feature layers
    • support for updating single features
    • disable interaction for certain geojson layers
    • unified code path for geojson layers and annotations
    • deleted 50% of the whole native code
    enhancement android ios web 
    opened by felix-ht 22
  • [Android] Adding symbol layer fails

    [Android] Adding symbol layer fails

    Adding symbol layer fails with exception when location was enabled. Map is configured with:

    MapboxMap(
      ...
      compassEnabled: true,
      myLocationEnabled: true,
      myLocationRenderMode: MyLocationRenderMode.COMPASS,
      myLocationTrackingMode: MyLocationTrackingMode.None,
      ...
    )
    
    I/flutter (32425): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    I/flutter (32425): │ PlatformException(error, Could not find layer: mapbox-location-bearing-layer, null, com.mapbox.mapboxsdk.style.layers.CannotAddLayerException: Could not find layer: mapbox-location-bearing-layer
    I/flutter (32425): │ 	at com.mapbox.mapboxsdk.maps.NativeMapView.nativeAddLayerAbove(Native Method)
    I/flutter (32425): │ 	at com.mapbox.mapboxsdk.maps.NativeMapView.addLayerAbove(NativeMapView.java:874)
    I/flutter (32425): │ 	at com.mapbox.mapboxsdk.maps.Style.addLayerAbove(Style.java:215)
    I/flutter (32425): │ 	at com.mapbox.mapboxsdk.location.LocationComponentPositionManager.addLayerToMap(LocationComponentPositionManager.java:41)
    I/flutter (32425): │ 	at com.mapbox.mapboxsdk.location.SymbolLocationLayerRenderer.addLayers(SymbolLocationLayerRenderer.java:90)
    I/flutter (32425): │ 	at com.mapbox.mapboxsdk.location.LocationLayerController.applyStyle(LocationLayerController.java:95)
    I/flutter (32425): │ 	at com.mapbox.mapboxsdk.location.LocationComponent.applyStyle(LocationComponent.java:762)
    I/flutter (32425): │ 	at com.mapbox.mapboxgl.MapboxMapController.updateLocationLocationComponentLayer(MapboxMapController.java:286)
    I/flutter (32425): │ 	at com.mapbox.mapboxgl.MapboxMapController.onMethodCall(MapboxMapController.java:825)
    I/flutter (32425): │ 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:262)
    I/flutter (32425): │ 	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:296)
    I/flutter (32425): │ 	at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$DartMessenger(DartMessenger.java:320)
    I/flutter (32425): │ 	at io.flutter.embedding.engine.dart.-$$Lambda$DartMessenger$TsixYUB5E6FpKhMtCSQVHKE89gQ.run(Unknown Source:12)
    I/flutter (32425): │ 	at android.os.Handler.handleCallback(Handler.java:873)
    I/flutter (32425): │ 	at android.os.Handler.dispatchMessage(Handler.java:99)
    I/flutter (32425): │ 	at android.os.Looper.loop(Looper.java:193)
    I/flutter (32425): │ 	at android.app.ActivityThread.main(ActivityThread.java:6718)
    I/flutter (32425): │ 	at java.lang.reflect.Method.invoke(Native Method)
    I/flutter (32425): │ 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
    I/flutter (32425): │ 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
    I/flutter (32425): │ )
    I/flutter (32425): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
    I/flutter (32425): │ #0   StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
    I/flutter (32425): │ #1   MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:177:18)
    I/flutter (32425): │ #2   <asynchronous suspension>
    I/flutter (32425): │ #3   MethodChannelMapboxGl.addSymbolLayer (package:mapbox_gl_platform_interface/src/method_channel_mapbox_gl.dart:528:5)
    I/flutter (32425): │ #4   <asynchronous suspension>
    I/flutter (32425): │ #5   MapboxMapController.addSymbolLayer (package:mapbox_gl/src/controller.dart:346:5)
    I/flutter (32425): │ #6   <asynchronous suspension>
    
    opened by AAverin 21
  • Mapbox Android 8.5.0 unstable

    Mapbox Android 8.5.0 unstable

    https://github.com/mapbox/mapbox-android-demo/issues/1280

    Looks like Mapbox SDK Android 8.5.0 is unstable, could we roll back to 8.4.0? Additionally, it would be great if version changes in library dependencies would be published as a different mapbox_gl flutter library version. That way we should be able to roll back if needed.

    opened by AAverin 21
  • Feature request - symbol clustering

    Feature request - symbol clustering

    Would be great to see any kind of clustering feature. Introduce markers or just use it for symbols.

    Flutter OSM map has a great package for that, with animated clustering: https://pub.dev/packages/flutter_map_marker_cluster

    enhancement flutter 
    opened by kleeb 21
  • Android : E/FrameEvents(13453): updateAcquireFence: Did not find frame.

    Android : E/FrameEvents(13453): updateAcquireFence: Did not find frame.

    Same error as this one https://github.com/flutter-mapbox-gl/maps/issues/1175, but I don't know how to open a closed issue

    My debugger is spamming E/FrameEvents(13453): updateAcquireFence: Did not find frame. too many times per second, which make debugging almost impossible. Screenshot 2023-01-02 at 14 07 07

    I am on the latest commit in master branch f505fcf5c79b75c165703028af77f3af62d382ae

    Flutter version :

    Flutter 3.3.10 • channel stable • https://github.com/flutter/flutter.git
    Framework • revision 135454af32 (3 weeks ago) • 2022-12-15 07:36:55 -0800
    Engine • revision 3316dd8728
    Tools • Dart 2.18.6 • DevTools 2.15.0
    
    opened by treacks5 0
  • Error: PlatformException(DeleteRegionError, There is no region with given id to delete., null, null)

    Error: PlatformException(DeleteRegionError, There is no region with given id to delete., null, null)

    void _deleteRegion(OfflineRegionListItem item, int index) async { setState(() { _items.removeAt(index); _items.insert(index, item.copyWith(isDownloading: true)); });

    await deleteOfflineRegion(
      item.downloadedId!,
      accessToken: MapsDemo.ACCESS_TOKEN,
    );
    
    setState(() {
      _items.removeAt(index);
      _items.insert(
          index,
          item.copyWith(
            isDownloading: false,
            downloadedId: null,
          ));
    });
    

    }

    opened by JayeshItaliya 0
  • Error: PlatformException(mapboxTileCountLimitExceeded, Mapbox tile count limit exceeded: 6000, null, null).

    Error: PlatformException(mapboxTileCountLimitExceeded, Mapbox tile count limit exceeded: 6000, null, null).

    Getting an error when I am selecting the map with the satellite map type but with the outdoor map type working fine. this is the location area bounds [[21.161351763499894, 72.78366163625435], [21.232793954042492, 72.82831019278021]].

    Error: PlatformException(mapboxTileCountLimitExceeded, Mapbox tile count limit exceeded: 6000, null, null).

    how we can increase the Mapbox Tile Count Limit in flutter?

    opened by JayeshItaliya 0
  • [Android] SDF images are colored as defined when adding image to controller but not when referenced directly when adding symbol

    [Android] SDF images are colored as defined when adding image to controller but not when referenced directly when adding symbol

    I noticed that the following code doesn't work for SDF images that need to be colored:

        final symbol = await mapController?.addSymbol(
            SymbolOptions(
              geometry: LatLng(latitude, longitude),
              iconImage: 'assets/images/winterbolt.png',
              iconSize: 0.5,
              iconColor: 'red',
            )
        );
    

    But the following does work and correctly colors the image red:

          final bytes = await rootBundle.load('assets/images/winterbolt.png');
          final list = bytes.buffer.asUint8List();
          await mapController?.addImage('winterbolt', list, true);
    
          // place Symbol
          final symbol = await mapController?.addSymbol(
            SymbolOptions(
              geometry: LatLng(latitude, longitude),
              iconImage: 'winterbolt',
              iconSize: 0.5,
              iconColor: 'red',
            ),
          );
    

    Maybe the solution is just to add a parameter for SDF to addSymbol?

    opened by assemblethis 0
  • MapBox initialCameraPosition ignoring latitude

    MapBox initialCameraPosition ignoring latitude

    When defining a body for a Scaffold using MapBox if you pass a CameraPosition for the initialCameraPosition property and that CameraPosition defines a target LatLag, the resulting camera position has is at Latitude 0

    The expected behaviour would be the initial camera to be right above the informed coordinates

    Steps to reproduce: Alter line 55 of file flutter-mapbox-gl\example\lib\full_map.dart to be initialCameraPosition: const CameraPosition(target: LatLng(53, -47)), in the same line altering the number 53 to any other makes no difference, but altering the -47 changes the camera position

    opened by brunoatvenosa 0
  • fix CameraUpdate.newLatLngBounds() applies incorrect padding on iOS

    fix CameraUpdate.newLatLngBounds() applies incorrect padding on iOS

    Retaking actions that have been stale due to previous author inactivity (previous pull request: https://github.com/flutter-mapbox-gl/maps/pull/1039)

    fixes https://github.com/flutter-mapbox-gl/maps/issues/1034

    opened by rico237 0
Releases(0.15.0)
  • 0.15.0(Jan 13, 2022)

    • Callbacks added to onFeatureTapped will now also get the position (Point<double>) and the location (LatLng) of the click passed when called #798
    • Fixed layer based feature selection #765
    • Implement the changePosition function for place_fill example #778
    • Invoke onPause method of MapView in onPause lifecycle #782
    • Remove layer before adding layer if layer is added in place example #766
    • Speed property is null when onUserLocationUpdated is called #767
    • Improve iOS OnStyleReady reliability #775
    • Handle line color and geometry #776
    • Fix web issues with style loaded, feature tap, add promoteId, pointer change issue #785
    • Fix more issues with style loading #787
    • Updated settings gradle to new version #789
    • Remove the callbacks in dispose of example click_annotations dart #791
    • Add check for Dart formatting #803
    • Add check for Swift formatting #804
    • Fixed race condition with map#waitForMap #808
    • Add option to not use annotations on android #820
    • Add linepattern in line.dart #825
    • Respect native scale when adding symbols on iOS #835
    • Remove unnecessary print of style height and width #847
    • Android embedding fixes - migrate to maven #852
    • Full style source support #797
    • Gesture fixes #851
    • Fixed issue with return type of remove source on web #854
    Source code(tar.gz)
    Source code(zip)
  • 0.14.0(Nov 13, 2021)

    • Remove memory leaks by disposing internal components #706
    • Improved annotation click order #748
    • Add support for Layers, properties and expressions backed by GeoJsonSource #723
    • Add attribution button gravity, position normally #731
    • Add documentation for setMapLanguage #740
    • Make sure onStyleLoaded callback is invoked when map is loaded and ready #690
    • Enable onMapIdle callback for android #729
    • Set attribution margin to use left margin #714
    • Getting the ACCESS_TOKEN from env #726
    • Fixed crashes with offline manager #724
    • Add divider for example list #712
    • Fix respecting annotationConsumeTapEvents on iOS #716
    • Add getSymbolLatLng and getLineLatLngs for web #720
    • Fix typo in downloads token property name according to docs #721
    • Remove MapboxGlPlatform.getInstance #710
    Source code(tar.gz)
    Source code(zip)
  • 0.13.0(Oct 22, 2021)

    • Migrate to null-safety #607
    • Add missing removeLines removeCircles and removeFills #622
    • Add support for colors with alpha #561
    • Support override of attribution click action (iOS) #605
    • Update to Mapbox-Android-SDK 9.6.2 #674
    • Fix Warning: Operand of null-aware operation '!' has type 'Locale' which excludes null #676
    • Make build work with instructions in docs (android) #698
    • Fix requestMyLocationLatLng in the platform interface #697
    Source code(tar.gz)
    Source code(zip)
  • 0.12.0(Apr 12, 2021)

    • Update to Mapbox-Android-SDK 9.6.0 #489
    • Update to Mapbox-iOS-SDK 6.3.0 #513
    • Batch creation/removal for circles, fills and lines #576
    • Dependencies: updated image package #598
    • Improve description to enable location features #596
    • Fix feature manager on release build #593
    • Emit onTap only for the feature above the others #589
    • Add annotationOrder to web #588
    Source code(tar.gz)
    Source code(zip)
  • 0.11.0(Mar 30, 2021)

    • Fixed issues caused by new android API #544
    • Add option to set maximum offline tile count #549
    • Fixed web build failure due to http package upgrade #550
    • Update OfflineRegion/OfflineRegionDefinition interfaces, synchronize with iOS and Android #545
    • Fix Mapbox GL JS CSS embedding on web #551
    • Update Podfile to fix iOS CI #565
    • Update deprecated patterns to fix CI static analysis #568
    • Add setOffline method on Android #537
    • Add batch mode of screen locations #554
    • Define which annotations consume the tap events #575
    • Remove failed offline region downloads #583
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Feb 12, 2021)

    • Merge offline regions #532
    • Update offline region metadata #530
    • Added web support for fills #501
    • Support styleString as "Documents directory/Temporary directory" #520
    • Use offline region ids #491
    • Ability to define annotation layer order #523
    • Clear fills API #527
    • Add heading to UserLocation and expose UserLocation type #522
    • Patch addFill with data parameter #524
    • Fix style annotation is not deselected on iOS #512
    • Update tracked camera position in camera#onIdle #500
    • Fix iOS implementation of map#toLatLng on iOS #495
    • Migrate to new Android flutter plugin architecture #488
    • Update readme to fix UnsatisfiedLinkError #422
    • Improved Image Source Support #469
    • Avoid white space when resizing map on web #474
    • Allow MapboxMap() to override Widget Key. #475
    • Offline region feature #336
    • Fix iOS symbol tapped interaction #443
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Oct 24, 2020)

    • Fix data parameter for addLine and addCircle #388
    • Re-enable attribution on Android #383
    • Upgrade annotation plugin to v0.9 #381
    • Breaking change: CameraUpdate.newLatLngBounds() now supports setting different padding values for left, top, right, bottom with default of 0 for all. Implementations using the old approach with only one padding value for all edges have to be updated. #382
    • web:ignore myLocationTrackingMode if myLocationEnabled is false #363
    • Add methods to access projection #380
    • Add fill API support for Android and iOS #49
    • Listen to OnUserLocationUpdated to provide user location to app #237
    • Correct integration in Activity lifecycle on Android #266
    • Add support for custom font stackn in symbol options #359
    • Fix memory leak on iOS caused by strong self reference #370
    • Basic ImageSource Support #409
    • Get meters per pixel at latitude #416
    • Fix onStyleLoadedCallback #418
    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Sep 8, 2020)

    • Implementation of feature querying #177
    • Batch create/delete of symbols #279
    • Add multi map support #315
    • Fix OnCameraIdle not being invoked #313
    • Fix android zIndex symbol option #312
    • Set dependencies from git #319
    • Add line#getGeometry and symbol#getGeometry #281
    Source code(tar.gz)
    Source code(zip)
  • 0.7.0(Jun 6, 2020)

    • Introduction of mapbox_gl_platform_interface library
    • Introduction of mapbox_gl_web library
    • Integrate web support through mapbox-gl-js
    • Add icon-allow-overlap configurations
    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(May 31, 2020)

    • Update mapbox depdendency to 9.2.0 (android) and 5.6.0 (iOS)
    • Long press handlers for both iOS as Android
    • Change default location tracking to none
    • OnCameraIdle listener support
    • Add image to style
    • Add animation duration to animateCamera
    • Content insets
    • Visible region support on iOS
    • Numerous bug fixes
    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Dec 21, 2019)

    • iOS support for annotation extensions (circle, symbol, line)
    • Update SDK to 8.5.0 (Android) and 5.5.0 (iOS)
    • Integrate style loaded callback api
    • Add Map click event (iOS)
    • Cache management API (Android/iOS)
    • Various fixes to showing user location and configurations (Android/iOS)
    • Last location API (Android)
    • Throttle max FPS of user location component (Android)
    • Fix for handling permission handling of the test application (Android)
    • Support for loading symbol images from assets (iOS/Android)
    Source code(tar.gz)
    Source code(zip)
Owner
flutter-mapbox-gl
Organisation that maintains the community driven flutter-mapbox-gl project
flutter-mapbox-gl
MapBox-GL-flutter - MapBox GL flutter package

MapBox GL - Flutter This app use MapBox If you want to run this code, please rep

Brandon Rojas 2 May 29, 2022
A Flutter example to use Google Maps in iOS and Android apps via the embedded Google Maps plugin Google Maps Plugin

maps_demo A Flutter example to use Google Maps in iOS and Android apps via the embedded Google Maps plugin Google Maps Plugin Getting Started Get an A

Gerry High 41 Feb 14, 2022
A migration of Google Maps Application with Flutter & Google Maps APIs including: Maps SDK for Android & IOS, Places API & polylines

google_maps A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if t

TAD 1 Mar 4, 2022
Flutter Maps A Flutter app using Google Maps SDK & Directions API

Flutter Maps A Flutter app using Google Maps SDK & Directions API Plugins The plugins used in this project are: google_maps_flutter geolocator flutter

Salsabil Mohamed Hemada 1 Jul 15, 2022
A Flutter package for place search using MapBox Api and for Static map image

About This package provides easy api calls to MapBox Search API. Also, it contains an static map image generator ?? . Maki Icons can be used now in ma

Ketan Choyal 63 Dec 2, 2022
A new flutter plugin for mapbox. You can use it for your map backgrounds inside flutter applications

A new flutter plugin for mapbox. You can use it for your map backgrounds inside flutter applications

Boris Gautier 5 Sep 14, 2022
Moved to https://github.com/tobrun/flutter-mapbox-gl

Please note that this project has moved. Please head to https://github.com/tobrun/flutter-mapbox-gl for updates. Flutter Mapbox GL Native This Flutter

Mapbox 258 Oct 16, 2022
MapBox Search Widget

About This package provides some widgets to use in conjunction to mapbox_search library. Also, it contains an static map image generator ?? . Installi

Ketan Choyal 7 Apr 20, 2021
This is a Flutter package that uses the Google Maps API to make a TextField that tries to autocomplete places as the user types, with simple smooth animations, making a nice UI and UX.

search_map_place This is a Flutter package that uses the Google Maps API to make a TextField that tries to autocomplete places as the user types, with

Lucas Bernardi 127 Oct 22, 2022
A Flutter package to provide the native maps to Android/iOS

platform_maps_flutter A Flutter package that provides a native map to both Android and iOS devices. The plugin relies on Flutter's mechanism for embed

Luis Thein 70 Aug 13, 2022
Here Maps Package for Flutter

here_maps_webservice About here_maps_webservice provides Here Maps Web Services API wrapper that serve different purposes from search, to geocoding. U

Ayush Bherwani 11 Dec 15, 2022
Flutter package to enable clustering of location markers on Google Maps using widgets specific to each location.

flutter_google_maps_widget_cluster_markers This widget implements a very specific adaptation of google_maps_cluster_manager, allowing different ,marke

Kek Tech 2 Jan 6, 2023
Custom map markers - Custom Map Markers Using Flutter

Custom Map Markers Not only "Everything is a widget" also "Everywhere is a widge

null 8 Oct 19, 2022
A flutter plugin for Google Maps

IMPORTANT: This plugin is no longer under development Why? We initially built this plugin to fill an early gap in flutter. Since then, Google has made

AppTree Software, Inc 415 Dec 29, 2022
Flutter Google Maps Tutorial

Flutter Google Maps Tutorial YouTube Video Setup Get an API Key at https://cloud.google.com/maps-platform/ Enable Maps SDK for Android, Maps SDK for i

Marcus Ng 85 Nov 30, 2022
A Flutter app using Google Maps SDK & Directions API

Flutter Maps A Flutter app using Google Maps SDK & Directions API Plugins The plugins used in this project are: google_maps_flutter geolocator flutter

Youhaan bootwala 1 Mar 18, 2022
A Flutter app using Google Maps SDK & Directions API

Flutter Maps A Flutter app using Google Maps SDK & Directions API Plugins The plugins used in this project are: google_maps_flutter geolocator flutter

Varun CN 2 Apr 19, 2022
Easy Google Maps for Flutter

easy_google_maps Easy Google Maps for Flutter on Web and Mobile Getting Started Mobile Follow setup for Mobile Here Web Good to go! EasyGoogleMaps(

Rody Davis 69 Jul 19, 2022
Apple Maps Plugin for Flutter

apple_maps_flutter A Flutter plugin that provides an Apple Maps widget. The plugin relies on Flutter's mechanism for embedding Android and iOS views.

Luis Thein 50 Dec 31, 2022