Animate a point
Animate the position of a point by updating a GeoJSON source on each frame.
Note
If you want to test this example, edit it in JSFiddle or CodePen and replace the "YOUR-OWN-API-KEY" and "YOUR-OWN-VPM-ID" placeholders with your actual api key and vpm id.<!DOCTYPE html><html><head><meta charset="utf-8" /><title>Animate a point</title><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" /><script src="https://unpkg.com/unl-map-js@0.1.5/lib/unl-map-js.js"></script><link href="https://unpkg.com/unl-map-js@0.1.5/lib/unl-map-js.css" rel="stylesheet" /><linkhref="https://unpkg.com/maplibre-gl@2.1.9/dist/maplibre-gl.css"rel="stylesheet"/><style> body { margin: 0; padding: 0; } #map { position: absolute; top: 0; bottom: 0; width: 100%; }</style></head><body><div id="map"></div><script>var map = new UnlSdk.Map({container: "map",apiKey: "YOUR-OWN-API-KEY",vpmId: "YOUR-OWN-VPM-ID",center: [0, 0],zoom: 2,}); var radius = 20; function pointOnCircle(angle) {return {type: "Point",coordinates: [Math.cos(angle) * radius, Math.sin(angle) * radius],};} map.on("load", function () {// Add a source and layer displaying a point which will be animated in a circle.map.addSource("point", {type: "geojson",data: pointOnCircle(0),}); map.addLayer({id: "point",source: "point",type: "circle",paint: {"circle-radius": 10,"circle-color": "#007cbf",},}); function animateMarker(timestamp) {// Update the data to a new position based on the animation timestamp. The// divisor in the expression `timestamp / 1000` controls the animation speed.map.getSource("point").setData(pointOnCircle(timestamp / 1000)); // Request the next frame of the animation.requestAnimationFrame(animateMarker);} // Start the animation.animateMarker(0);});</script> </body></html>