Introducing a Mapillary-ArcGIS Experience Builder Integration Widget (Mapillary Explorer)

Hey everyone,

I wanted to share a small open-source contribution. I’ve been working on an ArcGIS Experience Builder widget that brings Mapillary street-level imagery directly into Esri environments.

While Mapillary already provides various integrations for ArcGIS (as listed on the website of Mapillary /arcgis), there was no Experience Builder integration among the existing GIS solutions, so I decided to build one and share it with the community.

The idea is to help cities, municipalities, and organizations with limited budgets quickly integrate free Mapillary street-level imagery into their ArcGIS applications, visualize captured data, and even contribute back by enriching the existing imagery with their own surroundings.

:link: GitHub repository: https://github.com/sukruburakcetin/mapillary-explorer

:link: Demo: Video on YouTube

Technical highlights:

  • Built as a custom widget for ArcGIS Experience Builder (React + Esri JS API).

  • Uses MapillaryJS for immersive image viewing and sequence navigation(to preserve the spatial and temporal structure of Mapillary imagery).

  • Integrates with Mapillary API v4, fetching image positions and metadata to sync with ArcGIS FeatureLayers.

  • Includes reverse geocoding to identify and display address or location details for each captured image.

  • Includes spatial interaction between the map and viewer (click events, sequence tracking, dynamic highlighting, sequence caching).

  • Designed for lightweight deployment and customization in Esri environments.

It’s still evolving, but fully functional. The widget connects with Mapillary’s API, allowing users to explore sequences and interact with spatial features within an ArcGIS web map.

I’d really appreciate any feedback or thoughts from the Mapillary and Esri communities.
Would love to know if this could be something that fits into the broader Mapillary ecosystem or could help inspire official integrations in the future.

2 Likes

This is awesome! Great work @sukruburakcetin !

1 Like

Mapillary Explorer Widget - Latest Update and Feedback Request (v2.1.2)

Dear Community Members,

I’ve just released a new version of the Mapillary Explorer widget for ArcGIS Experience Builder, and I wanted to share what’s new in this update. This release focuses on performance, smoother viewing, and better access to Mapillary’s vector data layers.

What’s new:

  • Turbo mode: much faster image loading and smoother navigation.

  • Hover previews: see image thumbnails by simply hovering over features on the map.

  • Filtering options: filter images by creator username, capture date, and whether they’re panoramic or not.

  • Extended cones: directional cones now adjust dynamically with the zoom level, giving better spatial context.

  • Vector tile access: full access to:

    • Mapillary coverage tiles

    • Mapillary traffic signs layer and features

    • Mapillary objects layer and features

You can see all of this in action in the new demo video:
:play_button: Watch on YouTube


Looking for feedback:
Right now, the widget still includes both Normal mode (multi-sequence) and Turbo mode. However, Normal mode tends to reload images more slowly, which can affect usability.

I’m considering removing Normal mode altogether and making Turbo mode the only option in the future. Before making that change, I’d really like to hear your thoughts, do you still find Normal mode useful, or would a Turbo-only version make more sense?

Your feedback has always been a valuable asset in shaping this project, so any input is greatly appreciated.

  • Both modes are great
  • Make it turbo mode only
0 voters

Thanks again for all your support! :smiley:
@asturksever

2 Likes

Wow, these are excellent updates - thank you for all of this work and the excellent walk-through videos!

2 Likes

I’m fine with both modes. “Normal” is a no frills, basic version and “Turbo” has options and fine-tuning.

I would really appreciate if I could pick-and-chose the Turbo features to deploy. For example, I’ve never been a fan of either of the detection layers because the object layer is is too cluttered and full of transitory objects like trash cans or traffic cones while the sign layer misses most of the signage in my study area.

I would like to expose the speed of Turbo mode’s cache and filter to just my images, while not overwhelming my users with unnecessary layers.

So far, I’m very happy and looking forward to future developments.

Thank you

2 Likes

Thank you so much for the thoughtful feedback, dear jcueno, it really helps.

As the next step, I’d like to experiment with building a settings panel that can consume config parameters, similar to what Jeffrey Thompson (JeffreyThompson2) did in his Fancy Filter widget.

In the example shown here:
https://community.esri.com/t5/experience-builder-custom-widgets/fancy-filter-widget-s/ta-p/1660506?lightbox-message-images-1660506=142544i9DA6E9E14F3C92CC

you can see that creating configuration parameters inside setting.tsx is absolutely possible.

My initial idea was to start simple:

  • add a config option for defining the zoom level at which Turbo mode activates, and

  • allow the widget user to enter a creator.username value instead of hardcoding it, with the entered value being passed directly to manifest.json.

But based on your feedback, it also makes sense to include options for enabling or disabling certain Mapillary layers, such as traffic signs or object layers. We could even go further and include checkboxes to activate Normal mode, Turbo mode, or both, depending on the needs of the app.

Turbo mode essentially mimics the full functionality of the Mapillary web interface. However, when I first started this project, I wanted to keep things a bit original, so I spent a lot of time developing Normal mode based on the principles of lazy loading, context-driven data loading, and on-demand spatial querying.

Later I realized that Normal mode wasn’t ideal for users with slower internet connections, which is a very real situation in many countries, so I introduced Turbo mode. And since I didn’t want to discard all the work put into Normal mode and also wanted to future-proof the design, I kept both modes. I’m really glad to hear you like both.

Regarding the traffic sign layer: one reason you see fewer sign types than expected is that Mapillary actually sends more traffic-sign features, but many of them cannot be displayed because they don’t have a corresponding sprite. For example, “General Traffic-sign G1” and similar detections have no actual icon representation. When I checked the Mapillary website, I noticed they also hide these icon-less signs, so I decided to do the same to avoid confusing users who compare the widget with the official site.

As you can see in the sprite sheet:
https://raw.githubusercontent.com/sukruburakcetin/mapillary-explorer-sprite-source/refs/heads/main/sprites/package_signs/package_signs.png

there are some empty sprite slots. Even though Mapillary’s automation detects these features from street-level imagery, they are not displayed. In previous versions, you could see them highlighted in orange in the footage you shared, but in the latest patches they’re hidden simply because no icon exists for them. Maybe someday the Mapillary team will update their sprite sources to include icons for all feature types.

Lastly, in the most recent update, I added a feature that allows filtering layers to show only specific “x” items. The filter options can increase or decrease depending on the variety of features/icons available at the current zoom level.

As shown in the photo:

I’m really glad to hear you’re happy with the progress so far. Your feedback genuinely helps shape future improvements. :hugs:

2 Likes