Find closest point on road irrespective of distance

I am trying to do road snapping to the closest point on a road irrespective of the distance to the next road. To do the road snapping I am using

QueryResult queryResult = graphhopper.getLocationIndex().findClosest(latitude, longitude, EdgeFilter.ALL_EDGES);

When I try this for a location that is very far from my road network I get an IllegalStateException:

java.lang.IllegalStateException: Calculate snapped point before!

How can I ensure that findClosest(..) always returns a point? I have looked around and got stuck somewhere in findClosest(..) in the LocationIndexTree.java

This is kind of contradicting itself: closest point vs. irrespective of the distance. What did you mean here?

If you want to increase the “acceptable radius” you could increase the setting index.max_region_search from 4 to 8.

How can I ensure that findClosest(..) always returns a point?

You should better not, because it means that in worst case one request would traverse the whole graph.

I was thinking of the case where my map is some city but the snap request could be anywhere in the world. I would like GH to snap to the closest road even if it is very far away.

It seems that if the closest point is a certain distance away from the request then GH will not return it and instead raise an exception.

Ok, so this index.setMaxRegionSearch(100); works really well. Controls how far snapped location may be from requested location…