@NonNull
    public static Geopoint[] getTrackNoCaching(final Geopoint start, final Geopoint destination, @Nullable final ArrayList<Float> elevation) {
        if (routingServiceConnection == null || Settings.getRoutingMode() == RoutingMode.STRAIGHT) {
            return defaultTrack(start, destination);
        }

        // Disable routing for huge distances
        final int maxThresholdKm = Settings.getBrouterThreshold();
        final float targetDistance = start.distanceTo(destination);
        if (targetDistance > maxThresholdKm) {
            return defaultTrack(start, destination);
        }

        // disable routing when near the target
        if (targetDistance < MIN_ROUTING_DISTANCE_KILOMETERS) {
            return defaultTrack(start, destination);
        }

        // now calculate a new route
        final Geopoint[] track = calculateRouting(start, destination, elevation);
        return ensureTrack(track, start, destination);
    }
Return a valid track (with at least two points, including the start and destination).
no caching

@param start       the starting point
@param destination the destination point
@param elevation   the variable to write elevation info to (null, if no elevation info to be returned)
@return a track with at least two points including the start and destination points
main/src/main/java/cgeo/geocaching/maps/routing/Routing.java