Experimental APIs

GeoMoose contains an “experimental” API which is used as a testing grounds for new improvements. Experimental APIs are meant to be useful, reasonably vetted, but also subject to change. The goal is to present new ideas to extend GeoMoose and get real world feedback before making the API stable into the future.


Internally, GeoMoose uses React to render components and Redux to manage state. addConnectedPlugin uses a new style of component to allow deeper integration with that API. Plugins destined for addConnectedPlugin differ from the previous Plugin definition since they require the mapping of the GeoMoose state to their props.

Below is a minimal example of the plug-in (saved as counter.js):

const CounterPlugin = {
    mapStateToProps: function(state) {
        return {
            mapSources: state.mapSources,

    render: function(React) {
        return function(props) {
            return React.createElement('div', {},
                'There are ', Object.keys(props.mapSources).length, ' map sources defined.'

In index.html:

Near the <script...> tags:

<script type="text/javascript" src="./counter.js"></script>

Somewhere in the body:

<div id="counter"></div>

In app.js:

app.experimental.addConnectedPlugin(CounterPlugin, 'counter', {});