Mapillary Explorer - A Custom ArcGIS Experience Builder Widget for Street-Level Imagery

631
0
03-17-2026 05:44 AM
Labels (2)
sukru-burak-cetin
New Contributor

Hi Esri Community,

I would like to share a custom widget I have been developing for ArcGIS Experience Builder by using ExB Developer edition that brings Mapillary street-level imagery directly into your web maps. The project is open source, free to use, and now structured for community contribution.


What is Mapillary Explorer?

Mapillary is a crowd-sourced street-level imagery platform; think of it as an open alternative to Google Street View, where imagery is contributed by individuals, municipalities, survey companies, and infrastructure teams worldwide. The official Mapillary website offers a viewer, but there is no native integration with ArcGIS Experience Builder that connects Mapillary imagery to your own GIS data.

Mapillary Explorer fills that gap. It is a custom Experience Builder widget that embeds a fully interactive Mapillary viewer alongside your ArcGIS maps, keeping both in sync so you can use street-level imagery as part of your everyday GIS workflow.


Who is it for?

The widget is useful for any organization or individual that works with field data, infrastructure, or geographic analysis and wants to enrich their ArcGIS maps with ground-level context. Some example use cases:

  • Municipal and infrastructure teams who want to inspect roads, signs, and assets directly from an ArcGIS map without switching applications.
  • Survey and field data teams that capture Mapillary imagery and want to filter, review, and analyze their own coverage within Experience Builder.
  • GIS analysts who need to cross-reference map features with real-world street-level conditions.
    Researchers and planners who use Mapillary's AI-detected traffic signs and objects as a data source alongside their own layers.

The goal: provide cities, municipalities, and organizations working with limited budgets a fast way to add free street-level imagery to their ArcGIS environments. Users can also enrich the data with imagery they capture themselves, making their local datasets more complete and up-to-date.

Why does it exist?

Esri's Web AppBuilder is officially being retired in 2027. Organizations that built Mapillary integrations on Web AppBuilder will need to migrate to Experience Builder, and there is currently no official Mapillary widget for that platform.

On top of that, the existing Mapillary integration in ArcGIS Online through the classic imagery catalog viewer is also being deprecated. As these official solutions wind down, a community-maintained alternative becomes increasingly important for anyone who relies on Mapillary imagery in their GIS workflows.

Mapillary Explorer was built to fill that gap and to demonstrate what the community can build independently. It runs natively inside Experience Builder, connects directly to the Mapillary API and vector tile infrastructure, and is fully open source. Rather than waiting for an official solution, this project exists to show that the community can deliver a high-quality, actively maintained integration that keeps pace with both the Esri and Mapillary platforms.

If you are currently using Web AppBuilder with Mapillary or relying on the classic imagery catalog integration, this widget is a practical migration path that gives you more control, more features, and a codebase you can contribute to and adapt for your own organization's needs.

What does it do?

  • Click any point on the map to open the nearest Mapillary image. The viewer and map stay in sync with a live bearing cone, pulsing location marker, and click-to-move navigation.
  • The browser URL updates in real time with the active image, bearing, map scale, and map type. Any view can be shared with a single copy-paste and restored exactly on open.
  • Fullscreen mode includes a secondary ArcGIS minimap with a live direction cone. Click any point to jump to that frame or search for a new location without leaving fullscreen.
  • Turbo Mode decodes millions of Mapillary coverage points from PBF/VTL tiles with real-time filtering by creator, date range, and panorama type. Points can be color-coded by capture year with a clickable legend.
  • The green Mapillary coverage layer respects the same filters as Turbo Mode at all zoom levels, so filtered data is always visible without needing to zoom in first.
  • Toggleable traffic sign and object detection layers render AI-detected assets with sprite-based icons and interactive popups.
  • Administrators can pre-configure the creator, date range, pano filter, and color-by-date from the settings panel. Any active preset automatically enables Turbo Mode on load. Individual toolbar buttons can be hidden per deployment.
  • No third-party UI dependencies. Built-in GlassSelect and GlassDatePicker components replace react-select and react-datepicker, resolving React 19 compatibility issues in ArcGIS Experience Builder v1.19.

Technical details for those interested

The widget is built with ArcGIS Maps SDK for JavaScript, MapillaryJS, React 19, and PBF/Mapbox Vector Tile decoding. It runs on ArcGIS Experience Builder Developer Edition 1.19 and ArcGIS Online. For ArcGIS Enterprise users, the prebuilt(used exb dev edition 1.18 since ArcGIS Enterprise 12.0 does not support 1.19 exb dists) release works on Enterprise 12.0 without modification.

As of v4.1.0, the codebase has been fully refactored into a modular architecture with separate components, utility files, and typed interfaces, making it straightforward for contributors to extend. There are no third-party UI library dependencies.

Resources

GitHub repository: https://github.com/sukruburakcetin/mapillary-explorer
Prebuilt release (no Developer Edition required): https://github.com/sukruburakcetin/mapillary-explorer/releases/latest
Live demo app: https://sukruburakcetin.github.io/mapillary-explorer-demo/
ArcGIS Online demo: https://www.arcgis.com/home/item.html?id=b4da7dbf1f684510be0918c6b58905c8
YouTube Feature Series (Covers All Details): https://www.youtube.com/playlist?list=PLogpD1OBtnx2rWy0p6al22It1EUOWxNEV

0 Replies