mapbox_navigation 1.0.0 copy "mapbox_navigation: ^1.0.0" to clipboard
mapbox_navigation: ^1.0.0 copied to clipboard

outdated

A Flutter plugin for MapBox's Navigation SDK, NavigationView & Navigation services.

example/lib/main.dart

import 'dart:convert';

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  MapViewController controller;
  var mapBox = MapboxNavigation();

  @override
  void initState() {
    super.initState();
    mapBox.init();

    mapBox.getMapBoxEventResults().onData((data) {
      print("Event: ${data.eventName}, Data: ${data.data}");

      var event = MapBoxEventProvider.getEventType(data.eventName);

      if (event == MapBoxEvent.route_built) {
        var routeResponse = MapBoxRouteResponse.fromJson(jsonDecode(data.data));
        print("Route Distance: ${routeResponse.routes.first.distance},"
            "Route Duration: ${routeResponse.routes.first.duration}");
      } else if (event == MapBoxEvent.progress_change) {
        var progressEvent = MapBoxProgressEvent.fromJson(jsonDecode(data.data));
        print("Leg Distance Remaining: ${progressEvent.legDistanceRemaining},"
            "Leg Duration Remaining: ${progressEvent.legDurationRemaining},"
            "Distance Travelled: ${progressEvent.distanceTraveled}");
      } else if (event == MapBoxEvent.milestone_event) {
        var mileStoneEvent =
            MapBoxMileStoneEvent.fromJson(jsonDecode(data.data));
        print("Distance Travelled: ${mileStoneEvent.distanceTraveled}");
      } else if (event == MapBoxEvent.speech_announcement) {
        var speechEvent = MapBoxEventData.fromJson(jsonDecode(data.data));
        print("Speech Text: ${speechEvent.data}");
      } else if (event == MapBoxEvent.banner_instruction) {
        var bannerEvent = MapBoxEventData.fromJson(jsonDecode(data.data));
        print("Banner Text: ${bannerEvent.data}");
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('MapBox Demo'),
        ),
        body: Stack(
          children: <Widget>[
            MapBoxMapView(onMapViewCreated: _onMapViewCreated),
            Align(
              alignment: Alignment.bottomCenter,
              child: Column(
                children: <Widget>[
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: <Widget>[
                      RaisedButton(
                          child: Text("Add Marker"),
                          color: Colors.blue,
                          onPressed: () async {
                            await controller.addMarker(
                                latitude: 33.569126, longitude: 73.1231471);
                            await controller.moveCameraToPosition(
                                latitude: 33.569126, longitude: 73.1231471);
                          }),
                      RaisedButton(
                          child: Text("Move Camera"),
                          color: Colors.blue,
                          onPressed: () async {
                            await controller.moveCameraToPosition(
                                latitude: 33.6392443, longitude: 73.278358);
                          })
                    ],
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: <Widget>[
                      RaisedButton(
                          child: Text("Build Route"),
                          color: Colors.blue,
                          onPressed: () async {
                            await controller.buildRoute(
                              originLat: 33.569126,
                              originLong: 73.1231471,
                              destinationLat: 33.6392443,
                              destinationLong: 73.278358,
                            );
                          }),
                      RaisedButton(
                          child: Text("Navigate"),
                          color: Colors.blue,
                          onPressed: () async {
                            await controller.startNavigation();
                          })
                    ],
                  )
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }

  void _onMapViewCreated(MapViewController controller) async {
    this.controller = controller;
    await controller.showMap(MapBoxOptions(
        initialLat: 33.569126,
        initialLong: 73.1231471,
        shouldSimulateRoute: true,
        enableRefresh: false,
        alternatives: true,
        zoom: 13.0,
        tilt: 0.0,
        bearing: 0.0,
        clientAppName: "MapBox Demo",
        voiceInstructions: true,
        bannerInstructions: true,
        continueStraight: false,
        profile: "driving-traffic",
        language: "ar",
        testRoute: "",
        debug: false));
  }

  String _prettyPrintJson(String input) {
    JsonDecoder _decoder = JsonDecoder();
    JsonEncoder _encoder = JsonEncoder.withIndent('  ');
    var object = _decoder.convert(input);
    var prettyString = _encoder.convert(object);
    prettyString.split('\n').forEach((element) => print(element));
    return prettyString;
  }
}
4
likes
0
pub points
59%
popularity

Publisher

verified publisherumairadil.com

A Flutter plugin for MapBox's Navigation SDK, NavigationView & Navigation services.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on mapbox_navigation