Developing a new Project using MapLaunch
/Here at GeoDecisions, there are collocated and distributed teams working on developing web mapping solutions. A lot of these solutions have maps and widgets that share overlapping functionality and a common workflow. We asked ourselves: “Wouldn’t it be cool to develop these components once and reuse them across multiple projects, instead of developing the same functionality over and over again?”
Common Code Scaffolding
MapLaunch was born out of the need for a common reusable code base. It is used to jump start projects with a mapping interface for both desktop and mobile solutions. MapLaunch also helps software developers get their new project scaffolding up and running in a very short amount of time. It has a common set of mapping functionality available to build upon and extend as custom solutions. It is designed to be a flexible, easily configurable, reusable and a maintainable framework.
ESRI has always been a pioneer in leading the GIS revolution and building great GIS mapping software and solutions. It was an easy decision to use ESRI ArcGIS API for Javascript as the mapping library in MapLaunch. As HTML5, CSS3 and JavaScript have been gaining active popularity in developing snappy and responsive client side web applications, the need for JavaScript frameworks that support Model-View-Controller (MVC) architecture arose. AngularJS is one such popular JavaScript framework with excellent design patterns and best practices. Node.js is an open-source, cross-platform runtime environment for developing server-side web applications. Bower and npm solve the problem of package management. Grunt helps in performing repetitive tasks like minification, compilation, unit testing, linting, etc easier. MapLaunch has been built on top of all these powerful frameworks and libraries.
Project Successes
I quickly started noticing the many advantages of MapLaunch. Projects were able to takeoff a lot faster and the initial application setup time decreased exponentially. It also helped reduce the technology and design pattern dilemmas that I typically face during the start of the project. There were already suggested best practices in front of me and I could follow them or easily incorporate my own methodology and design patterns. If I learned anything from the large open source software developer communities like GitHub, developers like to share, collaborate and contribute work to other projects. MapLaunch supports code sharing within GeoDecisions where I can build custom widgets as AngularJS directives, “pull request” them back into the MapLaunch repository and share the widgets I built across all GeoDecisions projects. This also promotes communication across the teams and breaks down organizational silos. In addition, I was also able to setup simple applications that require less custom components via configuration and reduce development time. Prototyping applications is less cumbersome and can be done by changing a few map service configurations by anyone in the team instead of specifically relying on us developers for deployment.
The West Virginia Statewide Transportation Improvement Program (WVDOTSTIP) application is a great example where I used MapLaunch as a starting point mapping solution. It was easy for me to customize the look and feel of the application by moving the widget icons to the sidebar by making a few css stylesheet tweaks. This also helped in creating space on the navigation bar for other project related page links. I reused layer loading, table of contents, draw, measure, buffer, printing and much other functionality from MapLaunch. The development team built very few custom widgets like the project email subscription and area of interest from scratch and saved on valuable coding hours.
The Hanover Sheriff application is another good example where MapLaunch was used as a starting point to develop the entire web application in a short time span. We were able to reuse everything from the mapping library, layer loading to printing, bookmarks, help, disclaimer, address and the find my location widgets. Our team built the case search widget instead of going with the standard attribute search widget since it had custom business logic and workflows. It was great to have majority of the common mapping functionality up and running by just making a few changes to the configuration files and then developing our own widgets and pages on top of them.
MapLaunch is a common reusable code base and has been very useful for me to jumpstart web mapping projects. It increases my productivity, helps build rapid web mapping solutions and increases communication between our project teams encouraging code reuse and sharing. I believe that, fostering the growth of MapLaunch will help us build great innovative GIS solutions together!