/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License 3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl.html * ******************************************************************************/ package com.opendoorlogistics.core.distances.functions; import com.opendoorlogistics.api.distances.DistancesConfiguration; import com.opendoorlogistics.api.geometry.LatLong; import com.opendoorlogistics.core.distances.DistancesSingleton; import com.opendoorlogistics.core.distances.DistancesSingleton.CacheOption; import com.opendoorlogistics.core.formulae.Function; public abstract class FmDrivingDistance extends FmAbstractDrivingCost{ private final double multiplyMetresBy; public FmDrivingDistance(Function geom1, Function geom2, Function map,double multiplyMetresBy) { super(geom1, geom2, map, CacheOption.USE_CACHING); this.multiplyMetresBy = multiplyMetresBy; } public FmDrivingDistance(Function lat1, Function lng1, Function lat2, Function lng2, Function map,double multiplyMetresBy) { super(lat1, lng1, lat2, lng2, map, CacheOption.USE_CACHING); this.multiplyMetresBy = multiplyMetresBy; } @Override protected Object calculateDrivingTravel(LatLong[] lls, DistancesConfiguration config) { return DistancesSingleton.singleton().calculateDistanceMetres(config, lls[0], lls[1], null) * multiplyMetresBy; } public static class Metres extends FmDrivingDistance{ public Metres(Function geom1, Function geom2,Function map) { super(geom1, geom2,map, 1); } public Metres(Function lat1, Function lng1, Function lat2, Function lng2,Function map) { super(lat1, lng1, lat2, lng2,map, 1); } } public static class Km extends FmDrivingDistance{ public Km(Function geom1, Function geom2,Function map) { super(geom1, geom2,map, DistancesConsts.METRES_TO_KM); } public Km(Function lat1, Function lng1, Function lat2, Function lng2,Function map) { super(lat1, lng1, lat2, lng2, map,DistancesConsts.METRES_TO_KM); } } public static class Miles extends FmDrivingDistance{ public Miles(Function geom1, Function geom2,Function map) { super(geom1, geom2,map, DistancesConsts.METRES_TO_MILES); } public Miles(Function lat1, Function lng1, Function lat2, Function lng2,Function map) { super(lat1, lng1, lat2, lng2,map, DistancesConsts.METRES_TO_MILES); } } }