If you develop against ArcGIS Server REST Services, or simply test them, you have probably found them to be both a blessing and a curse. ArcGIS Server REST endpoints provide simple, well organized pages that present just enough information for that particular endpoint. To check out information on each map service or layer underneath, however, requires clicking each link, hitting the back button, and repeating. That’s where Map Services Enhanced can help.
Map Services Enhanced is a Chrome extension that helps you inspect, test, and search for relevant services and data in ArcGIS Server. The extension modifies ArcGIS Server REST HTML output, applying extra content and formatting where needed. The extension requests JSON data for services linked on the page. Those results are rendering next to the service links. The extension will also add extra user interface controls to help specific pages, like query pages and print tasks.
Map Services Enhanced Features
As of the version 1.0.0 release, Map Services Enhanced includes the following features:
- Search current REST endpoint and all related endpoints for specific text
- Displays relevant map service, feature service, and layer metadata in a collapsible list next to each link.
- Displays and color-codes map spatial reference data, to compare at a glance how maps will stack on top of each other.
- Counts the number of features found in each map service layer.
- Counts the number of features with valid data in each field of a map service layer
- If domains are applied to a field value, counts the number of values for each domain
- Pre-fills values into printing and other geoprocessing tasks, where needed
- Provides “Select By Attributes” style query builder on layer query pages.
More features and services will be added, including a map-viewer, tiled map service testing, JSON data entry tools, and saving previous server requests for repeated testing.
Why a Chrome Extension?
If you are familiar with my ESRI REST Diagnostic tools, the Map Services Enhanced cover much of the same functionality. The bookmarklets in ESRI REST Diagnostics can run on Chrome, Firefox, and IE, and they have their place for launching from older computers and servers. But working in a Chrome extension does have its advantages.
The first advantage of a Chrome Browser Extension is that you can take advantage of a single development platform. AJAX calls don’t have to be backwards compatible with IE, therefore the code base shrinks. Styling is also easier when you don’t have to assign IE7 fallbacks for “display: inline-block” or alternate stylesheets when you want to use flexbox for positioning buttons. If Chrome supports it, it’s okay to use.
That leads into the second advantage of a Chrome Extension: style. While bookmarklets can inject stylesheets into an existing web page, most of the bookmarklets designed for ESRI REST Diagnostics had to work within restricted environments. Stylesheet requests might be blocked by default. I applied minimal styles to any buttons or text. Looks were sacrificed for code conciseness. As a Chrome Extension, however, stylesheets and scripts can be automatically injected on the page, as needed. Chrome extensions package injected stylesheets neatly in the application.
Finally, the biggest reason I built the Chrome Extension is so people wouldn’t have to remember to use it. When I was working on web projects, there wasn’t a week that went by when I didn’t use the ESRI REST Diagnostic bookmarklets. And though I showed them off to my coworkers, they would often forget. As a Chrome Extension, these tools can be “always on”, and collecting data automatically.
The Road Ahead
I will continue to make improvements on the Map Services Enhanced tools, as time permits. New features like the map viewer will be added soon. Also, as ESRI makes updates to ArcGIS Server, I’ll keep up with those changes. Finally, as I investigate service endpoints more, I’ll add helper functions and metadata where needed.
If you think this could be useful, try it out and give me some feedback. I hope you find it helpful.