Проблема заключалась в том, что Graph (т.е. файлы маршрутизации, сгенерированные graphhopper) не были выровнены с настройками конфигурации в приложении.
В ответе ниже я хотел иметь средство маршрутизации для ног, велосипедов и автомобилей. Конечно, можно получить только маршрут только для одного типа «транспортного средства». Я проверил это также для профиля маршрутизации "ноги".
Чтобы получить это выравнивание, я сначала отредактировал файл config.yml в клоне проекта graphhopper . В файле конфигурации я изменил:
graph.flag_encoders: foot,bike,car
и:
profiles:
- name: foot
vehicle: foot
weighting: fastest
и
profiles_ch:
- profile: foot
Я сгенерировал данные графика с помощью этой команды:
./graphhopper.sh -a import -p foot,bike,car -i netherlands-latest.osm.pbf
Тогда важно настроить приложение с тем же профилем. Таким образом, даже работа только с профилем «foot» в вашем приложении приведет к несоответствию - именно так, как следует из сообщения об ошибке.
Приложение содержит этот код для измерения расстояния любой точки до пути:
graphHopper = new GraphHopper().forMobile();
EncodingManager encodingManager = EncodingManager.create( FlagEncoderFactory.FOOT + "," + FlagEncoderFactory.BIKE + "," + FlagEncoderFactory.CAR);
graphHopper.setEncodingManager(encodingManager);
graphHopper.setProfiles(Arrays.asList(
new ProfileConfig("my_foot").setVehicle("foot").setWeighting("fastest"),
new ProfileConfig("my_bike").setVehicle("bike").setWeighting("fastest"),
new ProfileConfig("my_car").setVehicle("car").setWeighting("fastest")));
graphHopper.load(routingDataFolder);