@Override
public synchronized LeastCostPathCalculator createPathCalculator(final Network network, final TravelDisutility travelCosts, final TravelTime travelTimes) {
RoutingNetwork routingNetwork = this.routingNetworks.get(network);
PreProcessLandmarks preProcessLandmarks = this.preProcessData.get(network);
if (routingNetwork == null) {
routingNetwork = this.routingNetworkFactory.createRoutingNetwork(network);
if (preProcessLandmarks == null) {
preProcessLandmarks = new PreProcessLandmarks(travelCosts);
preProcessLandmarks.setNumberOfThreads(nThreads);
preProcessLandmarks.run(network);
this.preProcessData.put(network, preProcessLandmarks);
for (RoutingNetworkNode node : routingNetwork.getNodes().values()) {
node.setDeadEndData(preProcessLandmarks.getNodeData(node.getNode()));
}
}
this.routingNetworks.put(network, routingNetwork);
}
FastRouterDelegateFactory fastRouterFactory = new ArrayFastRouterDelegateFactory();
final double overdoFactor = 1.0;
return new FastAStarLandmarks(routingNetwork, preProcessLandmarks, travelCosts, travelTimes, overdoFactor, fastRouterFactory);
}
}