Simplification/cleanup of map state API

Some changes I accumulated while porting easing to native.

/cc @mourner
why is it flipped here?