修改了一下地图的抽象逻辑，方便自己的理解