Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


User contributed widgets for the Configurable Map Viewer (CMV) project.

Have a widget to add? See Contributing.

Layer Widgets

Widgets that add new types of layers and additional layer data to a map.

Widget Description
Add WMS Layers dynamically A double widget for adding WMS Layers using a combobox or a textbox.
Advanced Draw Add text, redo/undo drawn features and additional styling options.
Drag and Drop Add data to the map viewer by dragging and dropping resources onto the map or widget.
Dynamic Feature Layer Renderer It renders and adds a feature layer on the map dynamically. It can be used for map services hosted in ArcGIS for Server version 10.1 or above.
Heatmap The Heatmap widget uses a HeatmapRenderer to render feature layer data into a raster visualization that emphasizes areas of higher density or weighted values.
Heatmap Toggle Toggle a heat map on point layers using the dynamic sublayer menu.
Label Layers A configureable label widget allowing users to create and customize labels on dynamic and feature layers
Layer Labels A simple widget to add labels for one or more Feature Layers.
Layer Swapper Title pane widget to allow swapping in/out a configurable list of dynamic or tile layers.
Layer Toggle A simple widget to toggle the visibility of a set of layers. Only a single layer in the set can be visible at any time. All others are turned off when the target layer's visibility is set.
NEXRAD NEXRAD weather radar widget.
PointClustering PointClustering of point sublayer (CMV1.3.4)
Toggle StreetView Tiles Used in conjunction with the CMV StreetView widget or the Open External Map widget. Shows a StreetView tiles layer when waiting for a map click to get coordinates for the respective widgets.
WMS Basemaps Use WMS Layers as basemaps. Works in place of the core CMV Basemap widget.

Data, Search, And Query Widgets

Widgets that extract and manipulate the display of data in the application.

Widget Description
Advanced Search Widget Used together with Attributes Tables widget to query feature layers. With this widget you can: by attributes 2. search by location 3. search by address 4. search by other selected features.
Attributes Tables A highly configurable widget to display the results of one or more Query, Find or Geoprocessor Tasks.
Export Export features from the Attributes Tables widget or other widgets. Features can be exported in tabular formats such as Excel and CSV as well as spatial formats such as Esri shapefiles, KML and GeoJSON.
Export Graphics Used with the Export widget to allow the user to export graphic features from one or more Graphic or Feature layers.
Export to shapefile A javascript library for generating ESRI shapefiles in the client from Arcgis javascript map graphics with supporting a UTF-8 encoding.
Extract TitlePane widget to extract selected layer from current extents using geoprocessing tool (clip and ship).
Filter A simple widget allowing users to apply custom filters to a map layer or table
Identify Panel TitlePane widget to allow identify results to be viewed on the side instead of in a popup/infowindow.
Nearby Discover features within a radius or drivetime of a map click location.
Query Statistics Query summary statistics for a selected feature service's features in the current map view.
Related Records Queries related records of feature layers and displays results in a tabbed dgrid tables.
Report Highly configurable widget used to create a mult-page PDF report from a single feature or multiple features.
Search Used in conjunction with the Attributes Tables widget to provide a user interface for querying feature layers, tables and related records.

Time Widgets

Widgets that control and modify time (and potentially spacetime).

Widget Description
Map Refresh Timer Widget It refreshes the map layers periodically. You can set the preferred map layers and the refresh timer interval.
TimeSlider Control the current display of all time enabled layers on the map using a simple Esri TimeSlider widget.
TimeSlider Advanced Control all time enabled layers on the map. It allows you to set the startTime and endTime dynamically.

Map Navigation and Control Widgets

Widgets that display and modify various aspects of the map.

Widget Description
FullScreen A simple widget containing a button to toggle the CMV map to a maximized full screen view and restore it to the original dimensions.
Google nearby Discover objects within a radius of a map click location from Google database. Add export on the objects to shapefile.
Goto Coordinate Center the map at a specific location in geographic, UTM, or MGRS coordinates.
Locator Control Widget A widget to allow the user to change the properties of the CMV Locate Button widget in real-time.
Map Extent Widget CMV Widget to get map extent and zoom level.
Mapillary A replacement for the CMV Google StreetView widget that display street level imagery from Mapillary using MapillaryJS.
Navigation Hash Display the map center point in the url and use the browser back/forward buttons as previous/next extent buttons.
Navigation Toolbar A toolbar for simple map navigation including previous and next extent tracker.
Open External Map Open maps in an external window for Google Hybrid, Google StreetView, Bing Hybrid, Bing Bird's Eye, Bing Streetside, MapQuest and OpenStreetMap. The map is centered on the coordinates based on a map click or Latitude and Longitude values provided by the user. Can be combined with the Toggle StreetView Tiles widget to show the availability of Google StreetView while clicking on the map.
Projections TitlePane widget for showing coordinates in selected projections, and for showing a specified location.
Waze CMV Widget to add embedded Waze (iFrame) to your CMV.
What3Words A simple widget to send a 3 word address or lat/lng to what3words and zoom the map to the resulting location. The lat/lng and 3 word address for the location are displayed from the search result.
Zoom To Extent Zoom to a specific area on the map based off of a drawn extent.
Zoom To Feature A simple widget to provide a drop-down list of features to zoom to on the map. Similar to bookmarks but driven by actual data in a Map Service.

Geoprocessing, Utilities, and Share Widgets

Widget Description
App Settings Allows the user to save and share the current state of the map extent and visible layers via localStorage and URL.
Disclaimer A simple yet configurable disclaimer widget.
ElevationsProfile TitlePane widget to draw elevation profile.
ElevationsProfileTable Bottom Pane widget to draw elevation profile.
Full Motion Video Full Motion Video widgets for integration with FMV Server.
Geoprocessor An example widget demonstrating the display of results from a Geoprocessing Task in the Attributes Tables widget.
Google Analytics Sends Google Analytics events based on configurable parameters.
Introduction The Introduction Widget provides a product tour or tutorial for your application using IntroJS.
Map Loading A widget to add a Loading indicator in the center of the map.
Maptiks A widget to add detailed map analytics to any CMV application using Maptiks. Maptiks provides in-depth user insights by tracking how visitors click, pan and zoom on your maps.
MessageBox Show an Alert or Confirmation modal dialog box. Intended to be called from other widgets.
Metadata Dialog Query and display the sublayers metadata dialog using the dynamic sublayer menu.
My Info Add HTML to a specified dom node. Intended to be used to display information about your organization in the sidebarLeft node.
Print Plus An updated version of the PrintPlus widget originally created by @LarryStout.
QR Code Shows a QR code for the current map to open mobile applications on your phone/tablet.
Share Share your map by using Facebook, Twitter, Google+, E-Mail, Link, or embedded iFrame code.


Create a repo for your widget. To list your widget here, simply add a row to the above widgets table with a link to your repo and description via a Pull Request.

Please follow these guidelines:

  1. In your repo include a with:
  2. an example configuration object.
  3. additional documentation as needed.
  4. include the CMV version the widget built with.
  5. Make sure to include a screenshot in your of your widget in action.
  6. Make sure your code is lint free. Use the included .jshintrc file for linting.