7 Commits

Author SHA1 Message Date
Râu Cao
f2cc9a9783 1.3.0 2022-09-09 20:29:41 +02:00
Râu Cao
0c1aeebdf7 Load current tour status from server 2022-09-09 20:29:18 +02:00
Râu Cao
3324a57206 Update route 2022-09-09 20:29:00 +02:00
Râu Cao
cf8e6882f8 1.2.1 2022-09-08 09:49:18 +02:00
Râu Cao
6c4959deda Hackety hack, no time 2022-09-08 09:48:51 +02:00
Râu Cao
e00b5576e6 1.2.0 2022-09-06 21:09:39 +02:00
Râu Cao
e06b9d5109 MVP 2022-09-06 21:09:06 +02:00
8 changed files with 46580 additions and 52826 deletions

11
dist/assets/index.148d1b99.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/index.html vendored
View File

@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Road2Bitcoin Live Map</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css">
<script type="module" crossorigin src="/assets/index.b64a86a4.js"></script>
<script type="module" crossorigin src="/assets/index.148d1b99.js"></script>
<link rel="stylesheet" href="/assets/index.eed9f443.css">
</head>
<body>

File diff suppressed because it is too large Load Diff

65
main.js
View File

@@ -13,6 +13,7 @@ import geojsonPOI from './geo/poi.json'
useGeographic();
async function main() {
const styles = {
lineOrange: new Style({
stroke: new Stroke({
@@ -60,7 +61,9 @@ const styles = {
// Route
//
const lastStageFinished = 4;
const tourStatus = await fetch('https://r2b22.kip.pe/status.json').then(res => res.json());
const lastStageFinished = tourStatus.lastStageFinished;
const stagesCompleted = geojsonRoute.features.slice(0, lastStageFinished);
const stagesAhead = geojsonRoute.features.slice(lastStageFinished);
const vectorSourceStagesCompleted = new VectorSource();
@@ -136,6 +139,18 @@ const map = new Map({
view: view
});
//
// Center map on current/next stage
//
setTimeout(() => {
const nextStageFeature = new GeoJSON().readFeature(stagesAhead[0]);
view.fit(nextStageFeature.getGeometry(), {
maxZoom: 10,
duration: 1000
});
}, 3000);
//
// Popups
//
@@ -158,22 +173,19 @@ function disposePopover() {
function createPopoverHtml(feature) {
const container = document.createElement('div');
container.className = 'popover-content';
const title = document.createElement('div');
title.textContent = feature.get('name');
container.append(title);
if (feature.get('trackable')) {
const linkParent = document.createElement('div');
const followLink = document.createElement('a');
followLink.textContent = "Follow";
followLink.addEventListener('click', console.log(feature, followLink));
// followLink.addEventListener('click', startFollowing(feature, followLink));
linkParent.append(followLink);
container.append(linkParent);
}
return container.innerHTML;
// if (feature.get('trackable')) {
// const linkParent = document.createElement('div');
// const followLink = document.createElement('a');
// followLink.textContent = 'Follow';
// followLink.href = '#';
// followLink.addEventListener('click', startFollowing(feature, followLink));
// linkParent.append(followLink);
// container.append(linkParent);
// }
}
// display popup on click
@@ -210,7 +222,8 @@ map.on('movestart', disposePopover);
//
const updateInterval = 5000;
let followedFeature = vanFeature;
// let followedFeature = vanFeature;
// let followedZoomed = false;
// let followedFeature = null;
function startFollowing(feature, followLink) {
@@ -222,6 +235,7 @@ function startFollowing(feature, followLink) {
function stopFollowing(feature, followLink) {
followedFeature = null;
followedZoomed = false;
followLink.textContent = 'Stop following';
// followLink.removeEventListener('click', stopFollowing);
followLink.addEventListener('click', startFollowing(feature, followLink));
@@ -235,13 +249,19 @@ function updateData(startInterval=false) {
const coords = [data.lon, data.lat];
vanFeature.getGeometry().setCoordinates(coords);
if (followedFeature) {
view.animate({
center: followedFeature.getGeometry().getCoordinates(),
duration: 500,
zoom: 13
});
}
// let zoomLevel;
// if (!followedZoomed) {
// zoomLevel = 13;
// followedZoomed = true;
// }
// if (followedFeature) {
// view.animate({
// center: followedFeature.getGeometry().getCoordinates(),
// duration: 500,
// zoom: zoomLevel
// });
// }
});
if (startInterval) {
@@ -250,3 +270,6 @@ function updateData(startInterval=false) {
}
updateData(true);
}
main();

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "ol-vite",
"version": "1.1.0",
"version": "1.3.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ol-vite",
"version": "1.1.0",
"version": "1.3.0",
"dependencies": {
"ol": "latest"
},

View File

@@ -1,6 +1,6 @@
{
"name": "map",
"version": "1.1.0",
"version": "1.3.0",
"scripts": {
"start": "vite",
"build": "vite build",