This project contains a set of web components allowing to use easily the geOps APIs:
<geops-mobility>
: a web component used to display a map using different geOps APIs.<geops-mobility-search>
: a search input to search stops using the geOps Stops API.
A web component used to display a map using different geOps APIs.
The map displays realtime vehicles, and allow to click on them to display their schedule plan. You can also display MOCO notifications.
You can see the web component in action using the demo app.
<html>
<body>
<script type="module" src="https://www.unpkg.com/@geops/mobility-web-component)"></script>
<geops-mobility apikey="YOUR_GEOPS_API_KEY" style="display: block;width: 400px;height: 800px;"></geops-mobility>
</body>
</html>
Here an exhaustive list of the <geops-mobility>
web component attributes available to customize easily the map.
apikey="YOUR_API_KEY"
: your geOps API key.baselayer="travic_v2"
: the style's name from the geOps Maps API (base_dark_v2, base_bright_v2, ...). Default totravic_v2
.center="831634,5933959"
: the center of the map in EPSG:3857 coordinates. Default to831634,5933959
(Bern).geolocation="false"
: display the geolocation button or not (true or false). Default to true.mapsurl="https://maps.geops.io"
: the geOps Maps API url to use. Default tohttps://maps.geops.io
.maxzoom="14"
: define the max zoom level of the map.minzoom="2"
: define the min zoom level of the map.mots="rail,bus"
: list of commas separated mots to display on the Realtime layer ( rail, bus, coach, foot, tram, subway, gondola, funicular, ferry, car).notification="false"
: display the notification layer or not (true or false). Default to true.notificationat="2025-01-01T12:00:00Z"
: a ISO date string used to display active notification at this date in the notification layer.notificationbeforelayerid=
: the style layer's id before which the notification layer will be added. By default the layer will be added on top.notificationurl=
: the MOCO notification url to get the notifications from.permalink="true"
: add automatically anx
,y
anz
URL parameters to the URL to allow to share the current map view. Default to false.realtime="false"
: display the realtime layer or not (true or false). Default to true.realtimeurl="wss://api.geops.io/tracker-ws/v1/ws"
: the geOps Realtime API url to use. Default towss://api.geops.io/tracker-ws/v1/ws
.search="false"
: display the search stops input or not (true or false). Default to true.stopsurl="https://api.geops.io/stops/v1/"
: the geOps Stops API url to use. Default tohttps://api.geops.io/stops/v1/
.tenant="sbb"
: the tenant name to use to filter the Realtime vehicles available.zoom="13"
: the zoom level of the map. Default to 13.
You can specify all the web component attributes as url parameters to the demo app to customize easily the map.
/?apikey=YOUR_API_KEY
/?baselayer=travic_v2
/?center=831634,5933959
/?geolocation=false
/?mapsurl=https://maps.geops.io
/?maxzoom=14
/?minzoom=2
/?mots=rail,bus
/?notification=false
/?notificationat=2025-01-01T12:00:00Z
/?notificationbeforelayerid=
/?notificationurl=
/?permalink=true
/?realtime=false
/?realtimeurl=wss://api.geops.io/tracker-ws/v1/ws
/?search=false
/?stopsurl=https://api.geops.io/stops/v1/
/?tenant=sbb
/?zoom=13
Another url parameter is used to get a full screen map instead of the documentation:
/?fullscreen=true
: display the web component in full screen mode.
A search input to search stops using the geOps Stops API.
You can see the web component in action using the demo app.
<html>
<body>
<script type="module" src="https://www.unpkg.com/@geops/mobility-web-component)"></script>
<geops-mobility-search
apikey="YOUR_GEOPS_API_KEY"
limit="5"
mots="rail,bus"
style="display: block;width: 800px;height: 800px;">
</geops-mobility>
</body>
</html>
Every parameters of the geOps Stops API can be passed as a string attribute of the web component.
The list of parameters of the geOps Stops API can be found here.
All the web component attributes can be specified as url parameters to the demo app to customize easily the search.
Another url parameter is used to get a full screen map instead of the documentation:
/?fullscreen=true
: display the web component in full screen mode.
If you want only the basic HTML, faster development process.
corepack enable
yarn install
yarn start
If you want the documentation website:
corepack enable
yarn install && cd doc && yarn install
yarn doc
The demo app is deployed automatically after a merge on master using Vercel, on https://mobility-web-component.geops.io/.
- every new components must have a new folder
MyComponent
with anindex.tsx
that contains only an export and aMyNewComponent.tsx
file. The reason is too simplifx the override in forked project.
If a client, for example trenord
, needs a mobility-web-component
with custom functionnalities.
Never add custom client specific stuff in this repository, instead:
- create a fork from this repository, and call it
trenord-mobility-web-component
. - change the package name in
package.json
to@geops/trenord-mobility-web-component
. - change the
README
andindex.html
titles. - create a new
MobilityMap
component insrc/
calledTrenordMobilityMap
. In this component you can copy the content ofMobilityMap
or just use theMobilityMap
component with default values. It depends of your use case. - change the
MobilityMap
import toTrenordMobilityMap
insrc/index.tsx
. - create a new npm package on
npmjs.com
from this repository, and call it@geops/trenord-mobility-web-component
. - publish a beta version to test the publishing with
ỳarn publish:beta
At this point you're ready to create custom code, some rules must be followed to facilitate the merge of upstream mobility-web-component
repository:
- always create new components using the client name as prefix, like
TrenordRouteSchedule
, or put them in a client specific foldersrc/trenord/RoutSchedule
. - to use the overrided components just change the export in the
index.tsx
of the component to overrided. - never modify the original components in the forked repository, do it in the upstream repository then merge it in the forked repository.
- never update dependencies in the forked repository, do it in the upstream repository then merge it in the forked repository.
- if you have a doubt, ask.
When you use a fork you can merge the upstream repository using:
// Set up the upstream remote, to do only once
git remote add upstream [email protected]:geops/mobility-web-component.git
git fetch upstream && git merge upstream/main