Overzicht
https://github.com/brianmcleer/mapswitcher-widget
Met de widget Kaartwisselaar kun je via een vervolgkeuzemenu schakelen tussen verschillende Experience Builder-apps, waarbij de huidige kaartextensie en het zoomniveau behouden blijven. De widget haalt het URL-hashfragment op uit de bronapp en voegt dit toe aan de bestemmings-URL.
Let op: Een eerdere versie van deze widget bevatte hardgecodeerde URL's, waardoor de widget niet kon worden gedeeld op Esri Community. Experience Builder 1.19 introduceerde wijzigingen die bestaande functionaliteit doorbraken, waardoor de widget opnieuw moest worden ontwikkeld. In deze versie kunnen beheerders URL's configureren via het instellingenvenster van de widget, zodat deze breder kan worden verspreid.
Configuratie-instellingen
Het instellingenvenster van de widget bevat de siteconfiguratie:
Siteconfiguratie:
- Label: De weergavenaam die in het vervolgkeuzemenu verschijnt
- URL: De volledige URL van de Experience Builder-app als bestemming
Je kunt meerdere sites toevoegen met de knop 'Site toevoegen'. Sites kun je verwijderen met de knop 'Verwijderen' bij elk item. De widget vereist geen verbinding met een kaartwidget.
Functionaliteit van de widget
De widget toont een vervolgkeuzemenu met de geconfigureerde siteopties. De tijdelijke tekst luidt 'Selecteer een kaart om te bekijken'.
Functionaliteit:
Wanneer een gebruiker een bestemming selecteert in het vervolgkeuzemenu:
- haalt de widget het huidige URL-hashfragment op (alles na het #-teken)
- Dit hashfragment bevat parameters voor de kaartstatus: coördinaten van het middelpunt, zoomniveau, schaal, rotatie en ruimtelijke referentie
- voegt de widget dit hashfragment toe aan de geselecteerde bestemmings-URL
- navigeert de browser naar de nieuwe app
Functies:
- Werkt met elk coördinatensysteem (Web Mercator, State Plane, WGS84, enz.)
- Behoudt het middelpunt, het zoomniveau en de rotatie
- URL's die zijn geconfigureerd in het instellingenvenster
Wijzigingslogboek:
10/12/2026: De widget volgt nu de app-taal (?locale=, de taalschakelaar, het ArcGIS-profiel of de browser) in 39 talen; de hulpgids is inbegrepen.
Heb je zelf aangepaste widgets? Met dezelfde gratis tool, exb-i18n-kit, kun je ze met één opdracht vertalen: localize. Zo wordt elke tekst vertaald:
- Eerst Esri. De tool gebruikt de vertalingen die al in je Experience Builder-installatie aanwezig zijn. Daardoor wordt een tekst als 'Zoom to' vertaald zoals in Esri's eigen widgets.
- Standaardtermen.Eenheden zoals voet en acre zijn afkomstig uit Unicode CLDR, dezelfde gegevens die browsers gebruiken.
- Gedeeld vertaalgeheugen. Alles wat dan nog overblijft, komt uit een gedeeld woordenboek dat is samengesteld met LibreTranslate, een openbronvertaler, en de Opus-MT-modellen van Helsinki-NLP voor Bosnisch, Kroatisch en Servisch. De tool draait gratis op GitHub, dus je hebt geen API-sleutel of account nodig.
- Integratie. De tool vindt ook Engelse teksten die hardgecodeerd buiten het vertaalbestand van de widget staan, zoals een standaardinstelling of hulpgids, en zorgt ervoor dat ook die worden vertaald.
Handmatige aanpassingen hebben altijd voorrang op machinevertalingen en worden nooit overschreven. Sommige vertalingen zijn automatisch gegenereerd. Laat hier een reactie achter met een betere vertaling als je een foutje ziet.
10/02/2026: Bij gebruik van de aangepaste widget Basemap Gallery onthoudt Kaartwisselaar de basiskaart wanneer je overschakelt naar een andere EB-app.
23/07/2026: De widget Kaartwisselaar is bijgewerkt voor Experience Builder 1.21 om fouten in de TypeScript-editor op te lossen, waaronder problemen met de typering van React-componenten en het importeren van onveranderlijke configuraties. Ook is het versienummer van de widget verhoogd; de nieuwste versie is nu beschikbaar op GitHub.
04/06/2026: package.json en package-lock.json zijn aan de widget toegevoegd. Deze widget heeft geen afhankelijkheden van derden, dus je hoeft niets extra's te installeren. De configuratie bestaat gewoon uit de standaardopdracht npm install in je clientmap, die je toch al uitvoert. Met dank aan @SunshineLuke90 voor de suggestie en de uitleg over de verpakkingsmethode.