Motorcycle rental station with flyweight pattern
The flyweight pattern exists to minimize memory usage. I don't think it is what you need here. At least, wha you have done looks like strategy.

But because your are asking about the flyweight let me try to explain a good usage of it. The goal of the flyweight is to reduce memory usage. The idea is to have something like a date stamp that you can reuse to print differents dates. You take your stamp, roll the numbers to have the expected date, apply it and then forgot or use the same for another date.

public class DateStamp {
  private int year, month, day;
  // setters
  public void apply() {
    System.out.printf("%1$d/%2$d/%3$d", year, month, day);
  }
}

// ..
DateStamp stamp = new DateStamp();
stamp.set..
stamp.apply();

stamp.set..
stamp.apply();


In many systems today, this pattern is rarely used due to the hughe amount of availables memory. Creating new instances is almost no cost. 
But when the creation of a new instance can be costly or when you have hundreds instances of the same type at the same time it can be interesting to use it.



About your code and implementation of the factory, there is nothing wrong with the map. It is the best structure to keep a "relation" between two things. 

Another implementation, would be to use an abstract Bike as explained by BKSpurgeon.