Git Product home page Git Product logo

flutter_mapbox_navigation's People

Contributors

alexeileyvamora avatar eopeter avatar marcotrumpet avatar neildunlop avatar phongkien avatar simon-the-shark avatar willylambert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter_mapbox_navigation's Issues

Feature request: multiple way points

Great plugin so far keep up the great work.

It would be nice if you could add multiple way points (Locations) as an array to the MapboxNavigation rather than an origin and an endpoint.

Make navigation direction based on polylines

Hello, Thank you already for the work done, but I would like to know if there is a possibility of plotting the route to follow according to points already defined like Bus route (polyline) by example.

Mapbox Token

Hello,

I've a valid token to use mapbox services.
I want to test navigation with flutter, so i've downloaded the example program.
I've created a values directory with a strings.xml inside.
I've put all the necessary informations in the file.

When I click on start navigation, it tells we that i need a valid access token.

What am i doing wrong ?

Thanks

Vincent

GeneratedPluginRegistrant error

I keep getting this error when I try to build my app:

    flutterEngine.getPlugins().add(new com.dormmom.flutter_mapbox_navigation.FlutterMapboxNavigationPlugin());
                                    ^
  required: Activity
  found: no arguments
  reason: actual and formal argument lists differ in length
1 error

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* 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 4s
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

The GeneratedPluginRegistrant.java looks like this:


import androidx.annotation.Keep;
import androidx.annotation.NonNull;

import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;

/**
 * Generated file. Do not edit.
 * This file is generated by the Flutter tool based on the
 * plugins that support the Android platform.
 */
@Keep
public final class GeneratedPluginRegistrant {
  public static void registerWith(@NonNull FlutterEngine flutterEngine) {
    ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
    flutterEngine.getPlugins().add(new com.dormmom.flutter_mapbox_navigation.FlutterMapboxNavigationPlugin());
      io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin.registerWith(shimPluginRegistry.registrarFor("io.github.ponnamkarthik.toast.fluttertoast.FluttertoastPlugin"));
      com.baseflow.geolocator.GeolocatorPlugin.registerWith(shimPluginRegistry.registrarFor("com.baseflow.geolocator.GeolocatorPlugin"));
    flutterEngine.getPlugins().add(new com.baseflow.googleapiavailability.GoogleApiAvailabilityPlugin());
      com.baseflow.location_permissions.LocationPermissionsPlugin.registerWith(shimPluginRegistry.registrarFor("com.baseflow.location_permissions.LocationPermissionsPlugin"));
    flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
    flutterEngine.getPlugins().add(new com.baseflow.permissionhandler.PermissionHandlerPlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin());
    flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
    flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin());
  }
}

El método startNavigation no encontrado por el sistema

Buenas tardes, hay un problema en el plugin, cuando compila la aplicación, e inicias la navegación con el plugin, cuando invocas el método startNavigation, flutter dice que no encuentra dicho método en el canal de plataforma

startNavigation() MissingPluginException

I tried starting the navigation after following all the steps mentioned and I keep getting a missing plugin exception when I press "Start Navigation". I am on Flutter 1.12.13+hotfix.8 and Dart 2.7.0.

This is my flutter doctor:

[√] Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.18363.657], locale
en-GB)
• Flutter version 1.12.13+hotfix.8 at C:\Users\moham\Documents\Flutter SDK\flutter
• Framework revision 0b8abb4724 (3 weeks ago), 2020-02-11 11:44:36 -0800
• Engine revision e1e6ced81d
• Dart version 2.7.0

[!] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
• Android SDK at C:\Users\moham\AppData\Local\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.0
• Java binary at: C:\Users\moham\Documents\Android Studio\Android SDK\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
X Android license status unknown.
Try re-installing or updating your Android SDK Manager.
See https://developer.android.com/studio/#downloads or visit https://flutter.dev/setup/#android-setup for detailed instructions.

[√] Android Studio (version 3.5)
• Android Studio at C:\Users\moham\Documents\Android Studio\Android SDK
• Flutter plugin version 41.0.2
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)

[√] VS Code (version 1.42.1)
• VS Code at C:\Users\moham\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.8.1

[√] Connected device (1 available)
• ONEPLUS A6013 • 55da0e0f • android-arm64 • Android 10 (API 29)

! Doctor found issues in 1 category.

startNavigation don't change the language

Hi,
I changed the language to spanish
await _directions.startNavigation( origin: _origin, destination: _destination, mode: NavigationMode.drivingWithTraffic, language: 'Spanish', simulateRoute: true, units: VoiceUnits.metric);

but It continues speaking in English.

Change street name language to english

Hi! The plugin works perfectly fine but in Gulf countries the city names are shown English but the street names are shown in Arabic, I need to show all the street names in English. Please help

Habilitar las demás opciones de la navegación en mapbox

Buenas tardes, tenía una duda, es que estoy haciendo una aplicación la cual requiero del uso del plugin de la navegación en mapbox, pero necesito del uso de las opciones que se describe en la documentación, como cambiar ícono de la ubicación del usuario al momento de navegar, y las opciones de rutas por bicicleta, moto y caminando, esas opciones ya lo tienen listo o están en proceso de desarrollarse?

App crashes when clicking on estimated time in footer

I am able to navigate to the destination but if I click on the footer, it crashes the app

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <FlutterViewController: 0x7f898f09cc00>.'
*** First throw call stack:
(
0 CoreFoundation 0x0000000109ece8db __exceptionPreprocess + 331
1 libobjc.A.dylib 0x0000000109471ac5 objc_exception_throw + 48
2 UIKitCore 0x0000000112ac16f5 -[UIViewController _presentViewController:withAnimationController:completion:] + 5087
3 UIKitCore 0x0000000112ac3dd7 __63-[UIViewController _presentViewController:animated:completion:]block_invoke + 98
4 UIKitCore 0x0000000112ac42ef -[UIViewController performCoordinatedPresentOrDismiss:animated:] + 511
5 UIKitCore 0x0000000112ac3d3e -[UIViewController presentViewController:animated:completion:] + 172
6 UIKitCore 0x0000000112ac3f9c -[UIViewController presentViewController:animated:completion:] + 150
7 flutter_mapbox_navigation 0x0000000109274692 $s25flutter_mapbox_navigation34SwiftFlutterMapboxNavigationPluginC05startG06origin11destination14simulationModeyAA8LocationC_AISbtFySay0F10Directions8WaypointCGSg_SayAJ5RouteCGSgSo7NSErrorCSgtcfU
+ 1858
8 flutter_mapbox_navigation 0x0000000109275ccd $s25flutter_mapbox_navigation34SwiftFlutterMapboxNavigationPluginC05startG06origin11destination14simulationModeyAA8LocationC_AISbtFySay0F10Directions8WaypointCGSg_SayAJ5RouteCGSgSo7NSErrorCSgtcfU_TA + 13
9 MapboxDirections 0x00000001075f8f50 $s16MapboxDirections0B0C9calculate_17completionHandlerSo20NSURLSessionDataTaskCAA12RouteOptionsC_ySayAA8WaypointCGSg_SayAA0I0CGSgSo7NSErrorCSgtctFySDySSypGcfU
+ 1072
10 MapboxDirections 0x00000001075f901d $s16MapboxDirections0B0C9calculate_17completionHandlerSo20NSURLSessionDataTaskCAA12RouteOptionsC_ySayAA8WaypointCGSg_SayAA0I0CGSgSo7NSErrorCSgtctFySDySSypGcfU_TA + 29
11 MapboxDirections 0x00000001075fe461 $s16MapboxDirections0B0C8dataTask33_9AB848AFC329A49F8F01862214F64FC2LL14forCalculating17completionHandler05errorO0So016NSURLSessionDataD0CAA0B7OptionsC_ySDySSypGcySo7NSErrorCctFy10Foundation0R0VSg_So13NSURLResponseCSgs5Error_pSgtcfU_yycfU0
+ 145
12 MapboxDirections 0x0000000107601bb5 $s16MapboxDirections0B0C8dataTask33_9AB848AFC329A49F8F01862214F64FC2LL14forCalculating17completionHandler05errorO0So016NSURLSessionDataD0CAA0B7OptionsC_ySDySSypGcySo7NSErrorCctFy10Foundation0R0VSg_So13NSURLResponseCSgs5Error_pSgtcfU_yycfU0_TA + 21
13 MapboxDirections 0x00000001075fe2fd $sIeg_IeyB_TR + 45
14 libdispatch.dylib 0x000000010aef8d7f _dispatch_call_block_and_release + 12
15 libdispatch.dylib 0x000000010aef9db5 _dispatch_client_callout + 8
16 libdispatch.dylib 0x000000010af07080 _dispatch_main_queue_callback_4CF + 1540
17 CoreFoundation 0x0000000109e35a79 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 9
18 CoreFoundation 0x0000000109e30126 __CFRunLoopRun + 2310
19 CoreFoundation 0x0000000109e2f4d2 CFRunLoopRunSpecific + 626
20 GraphicsServices 0x000000010eb0a2fe GSEventRunModal + 65
21 UIKitCore 0x00000001130b0fc2 UIApplicationMain + 140
22 Runner 0x0000000101162308 main + 72
23 libdyld.dylib 0x000000010af6e541 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Simulator Screen Shot - iPhone Xʀ - 2020-01-29 at 15 25 57

FlutterMapBox.startNavigation(); show blank page

FlutterMapboxNavigation.startNavigation(origin, destination); show blank page and gives error of PlatformException(error, Trying to create a platform view of unregistered type: com.mapbox/mapboxgl,null);

Incompatible with the new version of mapbox_gl

If we try to upgrade mapbox_gl to 0.7.0 version, we have this error at the compilation :

FAILURE: Build failed with an exception.



* What went wrong:

Execution failed for task ':app:checkDevDebugDuplicateClasses'.

> 1 exception was raised by workers:

  java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class com.mapbox.mapboxsdk.plugins.annotation.Annotation found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.AnnotationManager found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.AnnotationManager$1 found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.AnnotationManager$1$1 found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.AnnotationManager$MapClickResolver found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.BuildConfig found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.Circle found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.CircleElementProvider found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.CircleManager found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.CircleOptions found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.ConvertUtils found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.CoreElementProvider found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.DraggableAnnotationController found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.DraggableAnnotationController$1 found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.DraggableAnnotationController$AnnotationMoveGestureListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.Fill found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.FillElementProvider found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.FillManager found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.FillOptions found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.Line found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.LineElementProvider found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.LineManager found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.LineOptions found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnAnnotationClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnAnnotationDragListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnAnnotationLongClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnCircleClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnCircleDragListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnCircleLongClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnFillClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnFillDragListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnFillLongClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnLineClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnLineDragListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnLineLongClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnSymbolClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnSymbolDragListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.OnSymbolLongClickListener found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.Options found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.Symbol found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.SymbolElementProvider found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.SymbolManager found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)

  Duplicate class com.mapbox.mapboxsdk.plugins.annotation.SymbolOptions found in modules classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v8:0.7.0) and classes.jar (com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0)



  Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.

Do you have any solutions to fix this problem or can you update the plugin dependencies ?

Regards,

Route preview

It is possible to add a route preview before navigation?

No error thrown when cannot find route

Just wanted to inform you that if the route cannot be calculated, there is no error thrown. When I try to run your example, the navigation doesn't work and I figured out it's because Mapbox can't find the route.

onRouteProgress - NOT WORKING!

I'm running the example available in this project and noticed that the onRouteProgress does not execute at all!

The code of the onRouteProgress never executes for me.
This way, I can't get distance and duration updates.

`
_directions = MapboxNavigation(onRouteProgress: (arrived) async
{
print('THIS NEVER EXECUTES!!');

  _distanceRemaining = await _directions.distanceRemaining;
  _durationRemaining = await _directions.durationRemaining;

  setState(() {
    _arrived = arrived;
  });
  if (arrived)
    {
      await Future.delayed(Duration(seconds: 3));
      await _directions.finishNavigation();
    }
});

`

Does anybody else have this issue?
Is there something I could do to make this work?

Thanks!

The getter 'name' was called on null. I/flutter ( 4978): Receiver: null I/flutter ( 4978): Tried calling: name

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

/// Turn-By-Turn Navigation Provider
class MapboxNavigation {
factory MapboxNavigation({ValueSetter onRouteProgress}) {
if (_instance == null) {
final MethodChannel methodChannel =
const MethodChannel('flutter_mapbox_navigation');
final EventChannel eventChannel =
const EventChannel('flutter_mapbox_navigation/arrival');
_instance = MapboxNavigation.private(
methodChannel, eventChannel, onRouteProgress);
}
return _instance;
}

@VisibleForTesting
MapboxNavigation.private(this._methodChannel, this._routeProgressEventchannel,
this._routeProgressNotifier);

static MapboxNavigation _instance;

final MethodChannel _methodChannel;
final EventChannel _routeProgressEventchannel;
final ValueSetter _routeProgressNotifier;

Stream _onRouteProgress;
StreamSubscription _routeProgressSubscription;

///Current Device OS Version
Future get platformVersion =>
_methodChannel
.invokeMethod('getPlatformVersion')
.then((dynamic result) => result);

///Total distance remaining in meters along route.
Future get distanceRemaining =>
_methodChannel
.invokeMethod('getDistanceRemaining')
.then((dynamic result) => result);

///Total seconds remaining on all legs.
Future get durationRemaining =>
_methodChannel
.invokeMethod('getDurationRemaining')
.then((dynamic result) => result);

///Show the Navigation View and Begins Direction Routing
///
/// [origin] must not be null. It must have a longitude, latitude and name.
/// [destination] must not be null. It must have a longitude, latitude and name.
/// [mode] defaults to drivingWithTraffic
/// [simulateRoute] if true will simulate the route as if you were driving. Always true on iOS Simulator
///
/// Begins to generate Route Progress
///
Future startNavigation({Location origin,
Location destination,
NavigationMode mode = NavigationMode.drivingWithTraffic,
bool simulateRoute = false}) async {
assert(origin != null);
assert(origin.name != null);
assert(origin.latitude != null);
assert(origin.longitude != null);
assert(destination != null);
assert(destination.name != null);
assert(destination.latitude != null);
assert(destination.longitude != null);
final Map<String, Object> args = <String, dynamic>{
"originName": origin.name,
"originLatitude": origin.latitude,
"originLongitude": origin.longitude,
"destinationName": destination.name,
"destinationLatitude": destination.latitude,
"destinationLongitude": destination.longitude,
"mode": mode
.toString()
.split('.')
.last,
"simulateRoute": simulateRoute
};
await _methodChannel.invokeMethod('startNavigation', args);
_routeProgressSubscription = _streamRouteProgress.listen(_onProgressData);
}

///Ends Navigation and Closes the Navigation View
Future finishNavigation() async {
var success = await _methodChannel.invokeMethod('finishNavigation', null);
return success;
}

void _onProgressData(bool arrived) {
if (_routeProgressNotifier != null) _routeProgressNotifier(arrived);

if (arrived) _routeProgressSubscription.cancel();

}

Stream get _streamRouteProgress {
if (_onRouteProgress == null) {
_onRouteProgress = _routeProgressEventchannel
.receiveBroadcastStream()
.map((dynamic event) => _parseArrivalState(event));
}
return _onRouteProgress;
}

bool _parseArrivalState(bool state) {
return state;
}
}

class Location {
final String name;
final double latitude;
final double longitude;

Location(
{@required this.name, @required this.latitude, @required this.longitude});
}

enum NavigationMode { walking, cycling, driving, drivingWithTraffic }

class NavigationView extends StatefulWidget {

_NavigationViewState createState() => _NavigationViewState();
}

class _NavigationViewState extends State {
Location location;
MapboxNavigation _directions;
Map<String, Object> args;
bool _arrived = false;
double _distanceRemaining, _durationRemaining;
bool _tilesLoaded = false;
MapboxNavigation _direction;
Location _origin = mapbox.Location(name: "City Hall", latitude: 42.886448, longitude: -78.878372);
Location _destination = mapbox.Location(name: "Downtown Buffalo", latitude: 42.8866177, longitude: -78.8814924);

@OverRide
initState() {

_directions = mapbox.MapboxNavigation(onRouteProgress: (arrived) async {
  _distanceRemaining = await _directions.distanceRemaining;
  _durationRemaining = await _directions.durationRemaining;

  setState(() {
    if (!mounted) return;
    _arrived = arrived;
  });
  if (arrived) await _directions.finishNavigation();
});
args = <String, dynamic>{
  "originName": widget.origin.name,
  "originLatitude": widget.origin.latitude,
  "originLongitude": widget.origin.longitude,
  "destinationName": widget.destination.name,
  "destinationLatitude": widget.destination.latitude,
  "destinationLongitude": widget.destination.longitude,
  "simulateRoute": widget.simulateRoute
};
super.initState();

}

@OverRide
Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
appBar: new AppBar(title: new Text('Flutter Maps')),
body: new FlutterMap(
options: new MapOptions(
center: new LatLng(24.8607, 67.0011), minZoom: 15.0),
layers: [
new TileLayerOptions(
urlTemplate: "https://api.tiles.mapbox.com/v4/"
"{id}/{z}/{x}/{y}@2x.png?access_token={accessToken}",
additionalOptions: {
'accessToken':
'',
'id': 'mapbox.streets',
})
],),
floatingActionButton: FloatingActionButton(
onPressed: () {
_directions.startNavigation(
origin: _origin,
destination: _destination,
mode: mapbox.NavigationMode.drivingWithTraffic,
simulateRoute: true);
}
, child: Icon(Icons.directions),
),
);
}

}

Android X compatibility

When I enable Android X in a project the plugin does not compile. Traceback:

e: /home/me/bin/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_mapbox_navigation-0.0.2/android/src/main/kotlin/com/dormmom/flutter_mapbox_navigation/FlutterMapboxNavigationPlugin.kt: (9, 24): Unresolved reference: annotation
e: /home/me/bin/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_mapbox_navigation-0.0.2/android/src/main/kotlin/com/dormmom/flutter_mapbox_navigation/FlutterMapboxNavigationPlugin.kt: (10, 31): Unresolved reference: ActivityCompat
e: /home/me/bin/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_mapbox_navigation-0.0.2/android/src/main/kotlin/com/dormmom/flutter_mapbox_navigation/FlutterMapboxNavigationPlugin.kt: (11, 24): Unresolved reference: v7
e: /home/me/bin/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_mapbox_navigation-0.0.2/android/src/main/kotlin/com/dormmom/flutter_mapbox_navigation/FlutterMapboxNavigationPlugin.kt: (199, 39): Unresolved reference: NonNull

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':flutter_mapbox_navigation:compileDebugKotlin'.

Compilation error. See log for more details

  • 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 56s
Gradle task assembleDebug failed with exit code 1

Flutter doctor:

[✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Linux, locale fr_FR.UTF-8)
• Flutter version 1.7.8+hotfix.4 at /home/me/bin/flutter/flutter
• Framework revision 20e59316b8 (il y a 2 semaines), 2019-07-18 20:04:33 -0700
• Engine revision fee001c93f
• Dart version 2.4.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /home/me/Android/Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = /home/me/Android/Sdk
• Java binary at: /home/me/bin/android-studio/jre/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
• All Android licenses accepted.

[✓] Android Studio (version 3.4)
• Android Studio at /home/me/bin/android-studio
• Flutter plugin version 35.3.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)

[✓] Connected device (1 available)
• SM N910F • bd704008 • android-arm • Android 6.0.1 (API 23)

Build plugin error

Not really sure why this is happening. I pulled the example code from git and ran it with my own key and works fine. But tried to run this in my own app and it seems to crash in the build. Any clues on how to fix this? I have the permissions setup and strings.xml added. This build was on android

error: constructor FlutterMapboxNavigationPlugin in class FlutterMapboxNavigationPlugin cannot be applied to given types;
flutterEngine.getPlugins().add(new com.dormmom.flutter_mapbox_navigation.FlutterMapboxNavigationPlugin());
^
required: Context,Activity
found: no arguments
reason: actual and formal argument lists differ in length
1 error

FAILURE: Build failed with an exception.

Need to add custom buttons on Map

I want to add custom button on Map. on click on that my custom button map will change its route (ofcourse i will provide new source & destination lat/long. currently my question is how to add custom buttom/ custom view on Mapbox map?

FAILURE: Build failed with an exception.

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
D:\project\study\flutter\aplikasi_hello\build\flutter_mapbox_navigation\intermediates\compile_library_classes\debug\classes.jar

  • 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 5m 19s
Gradle task assembleDebug failed with exit code 1

hello, whats the problem this? from me or plugin? thanks for answer

Waypoints

Is it possible to do the following?

  • Add waypoints before navigating
  • Add and remove waypoints during navigation

Android simulator crashes

Thanks creating this project. I was able to run latest (v0.0.10) on github on both iOS simulator and device, but I am having trouble with the Android version. It built without error, but the app crashes after the "Start Navigation" button is pressed. I was able to step up to the below line in 'flutter_mapbox_navigation.dart' without crashing, but it will crash right after that.

await _methodChannel.invokeMethod('startNavigation', args);

The crash log is attached. It is complaining about 'libmapbox-gl.so' with 'expected e_machine: 40 (EM_ARM). Any help would be greatly appreciated.

I have checked that I added the same Mapbox access token used in successful iOS app to 'strings.xml'. My 'flutter doctor' output is below:

==== begin =====
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.15.4 19E266, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
[✓] Android Studio (version 3.6)
[✓] VS Code (version 1.43.2)
[✓] Connected device (1 available)

• No issues found!
=== end ====

Any insight on what I may be missing would be greatly appreciated.

flutter_mapbox_navigation_android_crash_dump.txt

The startNavigation method dont work

When using this plugin and following all the installation steps, it is impossible to register it correctly. It seems a compatibility issue.
my pubspect.ymal and my implementation

`name: apppalermodev
description: A new Flutter project.
environment:
sdk: ">=2.2.2 <3.0.0"

dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
flutter_cupertino_localizations: ^1.0.1
expandable: ^4.0.1
fluttertoast: ^3.1.3
english_words: ^3.1.3
cupertino_icons: ^0.1.2
flutter_socket_io: ^0.6.0
rxdart: ^0.22.2
device_info: ^0.4.0+3
shared_preferences: ^0.5.2
http: ^0.12.0+2
sqflite: ^1.1.5
path_provider: ^1.3.0
connectivity: ^0.4.2
encrypt: ^3.3.1
blue_thermal_printer: ^1.0.9
pull_to_refresh: ^1.4.5
image_picker: ^0.6.2+3
badges: ^1.1.0
progress_hud: ^1.1.0
carousel_slider: ^1.3.0
rflutter_alert: ^1.0.3
crypto: ^2.1.3
location: ^2.3.5
flutter_bcrypt: ^1.0.5
dbcrypt: ^1.0.0
flutter_speed_dial: ^1.2.5
flutter_map: ^0.8.2
latlong: ^0.6.1
bitmap: ^0.0.6
flutter_mapbox_navigation: ^0.0.8

dev_dependencies:
flutter_test:
sdk: flutter
mapbox_gl:
path: ./dependencies/flutter-mapbox-gl

module:
androidX: true

flutter:

uses-material-design: true
assets:

  • media/
  • assets/
  • assets/symbols/
  • assets/img/
  • assets/img/modulos/
  • lib/src/utils/languages/
    fonts:
    - family: CenturyGothic
    fonts:
    • asset: assets/fonts/CenturyGothicRegular.ttf
      `

`
class MapReconexionState extends State {
bool _arrived = false;
double _distanceRemaining, _durationRemaining;
bool _tilesLoaded = false;
...
@OverRide
void initState() {
super.initState();
_copyTilesIntoPlace();
initPlatformState();
}

Future initPlatformState() async {
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;

_directions = mapbox.MapboxNavigation(onRouteProgress: (arrived) async {
  _distanceRemaining = await _directions.distanceRemaining;
  _durationRemaining = await _directions.durationRemaining;

  setState(() {
    _arrived = arrived;
  });
  if (arrived) await _directions.finishNavigation();
});

}
...
Future turnOnNavigation ({String origenName, String targetName, LatLng origin, LatLng target}) async {

if (origin == null) {
  await getLoaction();
}

final _origin = mapbox.Location(name: "City Hall", latitude: 42.886448, longitude: -78.878372);
final _destination = mapbox.Location(name: "Downtown Buffalo", latitude: 42.8866177, longitude: -78.8814924);

await _directions.startNavigation(
  origin: _origin,
  destination: _destination,
  mode: mapbox.NavigationMode.drivingWithTraffic,
  simulateRoute: true);

}
..
PopupMenu(
title: "Empezar viaje",
onTap: () {
turnOnNavigation();
}, icon: Icons.directions_car)
..
}
`
My error

Exception has occurred. MissingPluginException (MissingPluginException(No implementation found for method startNavigation on channel flutter_mapbox_navigation))

flutter_mapbox_navigation slow on IOS

Hi all,
i've implemented flutter_mapbox_navigation in my app. In android work well, but in ios the navigator takes about 30 seconds to open. Some one know why? thx

FlutterMapboxNavigationPlugin.kt

Hello!

Sorry, but my Engish is bad.

Thanks for share your work. I have problems when I try to compile my project after install your package. I get the next errors from Visual Studio Code.

e: C:\flutter\flutter.pub-cache\hosted\pub.dartlang.org\flutter_mapbox_navigation-0.0.5\android\src\main\kotlin\com\dormmom\flutter_mapbox_navigation\FlutterMapboxNavigationPlugin.kt: (168, 47): Type mismatch: inferred type is (???, ???) -> Unit? but ProgressChangeListener! was expected
e: C:\flutter\flutter.pub-cache\hosted\pub.dartlang.org\flutter_mapbox_navigation-0.0.5\android\src\main\kotlin\com\dormmom\flutter_mapbox_navigation\FlutterMapboxNavigationPlugin.kt: (168, 49): Cannot infer a type for this parameter. Please specify it explicitly.
e: C:\flutter\flutter.pub-cache\hosted\pub.dartlang.org\flutter_mapbox_navigation-0.0.5\android\src\main\kotlin\com\dormmom\flutter_mapbox_navigation\FlutterMapboxNavigationPlugin.kt: (168, 59): Cannot infer a type for this parameter. Please specify it explicitly.Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

Thanks a lot!

[Question] How many requests per minute to the Directions API are made?

I am looking to gain some knowledge about how many requests are made to the Mapbox APIs.

I set up Flipper to intercepts the requests sent by the package. I can catch the logs, but unfortunately, it seems I cannot intercept the network for some reason.

Running the simulated route for 10 minutes while the simulated time was around 45 min, I logged around:

  • [200]: 790 requests
  • [404]: 284 requests
  • [Failed]: 304 requests

Screenshot from 2020-05-14 13-56-11

The issue is that from the logs only I cannot identify calls made to the Directions API, and calls using the Maps SDKs for Mobile only (where unlimited Vector Tiles API and Raster Tiles API requests).

I am basically trying to understand how many calls to the Directions API are made, on average, during 1h navigation. I'd like to forecast Mapbox's costs for the navigation feature.

Error in using example

Hello when i want to run the example file its shows :
Unhandled Exception: MissingPluginException(No implementation found for method startNavigation on channel flutter_mapbox_navigation)

so how i cant avoid this

Alternative Routes

Is there currently a way to get alternative routes prior to starting the navigation and letting the user decide which route to use, similar to how google maps does it?

Release always crash

Debugging works well, but when releasing it the build crash. I tried building your example and the same error happened!
It seems like there is a problem with the gradle version...
Do you have any ?

FAILURE: Build failed with an exception.
                     * Where:
                     Build file
                     '/home/travis/.pub-cache/hosted/pub.dartlang.org/flutter_ma
                     pbox_navigation-0.0.9/android/build.gradle' line: 26
                     * What went wrong:
                     A problem occurred evaluating root project
                     'flutter_mapbox_navigation'.
                     > Failed to apply plugin [id 'com.android.library']
                        > Minimum supported Gradle version is 5.4.1. Current
                        version is 4.10.2. If using the gradle wrapper, try
                        editing the distributionUrl in
                        /home/travis/.pub-cache/hosted/pub.dartlang.org/flutter_
                        mapbox_navigation-0.0.9/android/gradle/wrapper/gradle-wr
                        apper.properties to gradle-5.4.1-all.zip
                     * 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 21s
[        ] Running Gradle task 'assembleAarRelease'... (completed in 22.0s)
[        ] 
           FAILURE: Build failed with an exception.
           
           * Where:
           Build file
'/home/travis/.pub-cache/hosted/pub.dartlang.org/flutter_mapbox_navigation-0.0.9
/android/build.gradle' line: 26
           
           * What went wrong:
           A problem occurred evaluating root project
'flutter_mapbox_navigation'.
           > Failed to apply plugin [id 'com.android.library']
              > Minimum supported Gradle version is 5.4.1. Current version is
4.10.2. If using the gradle wrapper, try editing the distributionUrl in
/home/travis/.pub-cache/hosted/pub.dartlang.org/flutter_mapbox_navigation-0.0.9/
android/gradle/wrapper/gradle-wrapper.properties to gradle-5.4.1-all.zip
           
           * 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 21s

PS: Your package lost his track of versions, it seems like you're not using tags to mark the versions, and that caused us some problems with the code since there are some breaking changes between 0.0.4 and 0.0.9.... So the version 0.0.4 will always download the latest version of your package... can you also check that out?
Thanks :)

No Callback if user cancel the navigation.

After starting the navigation, according to documentation, through startNavigation Function, there is no way or call back to check if user has canceled the navigation. Please provide a callback,

Thanks,
Muhammad Taha

Feature request: Custom map styles

Great plugin so far

You can customize maps at mapbox online via the studio editor and generate a map style url.

It would be nice if you can add this url into the MapboxNavigation.startNavigation call.

Waypoints

do you have any idea of ​​doing the lib with waypoint navigation?

Merging with Tobrun's Mapbox Plugin

Thank you for sharing your work eopeter, definitely something a lot of us need. However, would it not make sense to integrate this directly onto Tobrun's Flutter plugin?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.