refactor the mapview controller, added a mapviewService