Interface Veery.RouteMatch

onRouteMatch(Veery.Locations locations)

Interface Callback triggered when the backend computed new trips.

Parameters

Param name Type Usage
locations Veery.Locations a set of routamatched trips

Returns

void

Usage / Example

Inline pattern

 veery.requestRouteMatch(new Veery.RouteMatch() {
    @Override
    public void onRouteMatch(Veery.Locations locations) {
         //
         // do whatever you need with the Location object
         //
    }
 });

Interface on activity pattern

The following example implement a Google Maps activity and update it when a route match happens

 import android.location.Location;                  
 import com.roofstreet.android.veery.*;

public class MapsActivity extends AppCompatActivity implements
        OnMapReadyCallback,
        Veery.RouteMatch {

    private final Veery veery = new Veery(this);
    private GoogleMap mMap = null;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        veery.serviceConnect();
        veery.setApiKeySecret("SuPeRScrET12345789GhJ");
        FirebaseApp.initializeApp(this);
        veery.setFirebaseToken(FirebaseInstanceId.getInstance().getToken());
  //
        veery.activate(Veery.BACKEND);
  // Requires Android Veery 1.3.2
  //veery.activate(Veery.BACKGROUND_GEOLOC | Veery.COLLECT | Veery.ROUTE_MATCH);


        setContentView(R.layout.activity_maps);

        // Added by Google Maps
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        veery.serviceResume();
        veery.requestRouteMatch(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        veery.servicePause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        try {
            veery.stopRouteMatch();
            veery.serviceDisconnect();
        } catch (Throwable t) {
        }
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        mMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
            @Override
            public void onMapLoaded() {
                mMap.setPadding(200, 100, 0, 200);
            }
        });
    }

    @Override
    public void onRouteMatch(Veery.Locations locations) {
        if (mMap!=null) {
            mMap.clear();
            final JSONObject[] geoJsonData = locations.toGeoJSONArray();

            if (geoJsonData != null) {
                for (int i = 0; i<geoJsonData.length;i++) {
                    JSONObject object = geoJsonData[i];
                    GeoJsonLayer layer = new GeoJsonLayer(mMap, object);
                    layer.addLayerToMap();
                }
            }
        }
    }
}

Info

GeoJsonLayer classes are available on Google Maps API

User interaction

none

See also

getLocationHistory

Get the historical geolocation data for the mentioned period.

countLocationHistory

Count Historical data of Geolocations observed during a given period of time.

requestRouteMatch

Request for a callback event when a new trip is routematched by the Veery Backend.

stopRouteMatch

Cancel the call to requestRouteMatch.

Locations.toArray

Return an array of Location object.

Locations.toGeoJSON

Return a GeoJSON containing the set of locations (Point or MultiLineString).

Locations.toGeoJSONArray

Return an array of GeoJSON.

Locations.getBoundingBox

Get the bounding box which envelopes all locations in the set.

RouteMatch.onRouteMatch

Callback triggered every time a trip is computed by the Veery backend.