OsmAnd+
is not perfect but quite useful