Skip to main content

Routing plugin

Contents

The routing plugin allows you to generate safe and legal routes for commercial vehicles and display those routes on the map. The plugin must be included in the dependencies of your project.

The code samples below depict how to build a route with multiple stops.

Android

Create driving directions using DirectionsBuilder after RouteView is initialized.

useEffect(() => {
  const androidMapViewTag = String(findNodeHandle(ref.current));
  if (Platform.OS === "android") {
    const eventEmitter = new NativeEventEmitter();
    let eventListener = eventEmitter.addListener(
      "RouteViewInitialized",
      (event) => {
        RouteViewModule.getMapAsync(async () => {
          await RouteViewModule.setRouteView();
          await DirectionsModule.createDirectionsBuilder();
          await DirectionsModule.origin(40.361202627269634, -74.59977385874882);
          await DirectionsModule.destination(40.23296852563686, -74.77334837439244);
          await DirectionsModule.destination(41.898500, -87.810020);
          await DirectionsModule.build();
          await RouteViewModule.createRouteBuilder();
          await RouteViewModule.id("testRoute");
          await RouteViewModule.routeOptions();
          await RouteViewModule.requestCallback(routeCallback);
          await RouteViewModule.color(StyleConstants.MAGENTA);
          await RouteViewModule.build();
          await RouteViewModule.addRoute(viewId);
          await RouteViewModule.frameRoute();
        });
      }
    );
  }
}, []);

const routeCallback = async (result) => {
  // route callback
}

iOS

Create route options after the map has loaded.

const RoutePluginModule = NativeModules.RoutePluginModule;
const RoutingModule = NativeModules.RoutingModule;
import {NativeEventEmitter} from 'react-native';

// ios mapLoaded callback
const onMapLoaded = () => {
  // initialize route options with a list of coordinates for each stop
  await RoutingModule.initializeRouteOptions([
        [40.361202627269634, -74.59977385874882],
        [40.23296852563686, -74.77334837439244],
    [40.231830,-74.777480]
      ]);
  // provide a valid iosMapViewTag for a MapView that currently exists on screen
  // when properly initialized, a "RoutePluginInit" event is emitted
  await RoutePluginModule.initializeRoutePlugin(iosMapViewTag);
  await RoutePluginModule.setColor("#FF00FF");
}

You can add the route after the route plugin is initialized. You can listen for the RoutePluginInit event.

      const eventEmitter = new NativeEventEmitter(RoutePluginModule);
      let eventListener = eventEmitter.addListener(
        "RoutePluginInit",
        async (e) => {
          if (e.status === "success") {
     // add route with id "route"
            await RoutePluginModule.addRoute("route");
            await MapViewModule.setMapView(iosMapViewTag);

           // zoom to route
            await CameraPositionModule.latLng(
              40.361202627269634,
              -74.59977385874882
            );
            await CameraPositionModule.target();
            await CameraPositionModule.altitude(1e5);
            await CameraPositionModule.build();
            await MapViewModule.zoomPosition();
          } else {
            console.log("failed");
          }
        }
      );
Last updated December 21, 2023.
Contents