MVP
This commit is contained in:
parent
b527049acb
commit
e06b9d5109
57
main.js
57
main.js
@ -60,7 +60,7 @@ const styles = {
|
|||||||
// Route
|
// Route
|
||||||
//
|
//
|
||||||
|
|
||||||
const lastStageFinished = 4;
|
const lastStageFinished = 1;
|
||||||
const stagesCompleted = geojsonRoute.features.slice(0, lastStageFinished);
|
const stagesCompleted = geojsonRoute.features.slice(0, lastStageFinished);
|
||||||
const stagesAhead = geojsonRoute.features.slice(lastStageFinished);
|
const stagesAhead = geojsonRoute.features.slice(lastStageFinished);
|
||||||
const vectorSourceStagesCompleted = new VectorSource();
|
const vectorSourceStagesCompleted = new VectorSource();
|
||||||
@ -136,6 +136,18 @@ const map = new Map({
|
|||||||
view: view
|
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
|
// Popups
|
||||||
//
|
//
|
||||||
@ -158,22 +170,19 @@ function disposePopover() {
|
|||||||
|
|
||||||
function createPopoverHtml(feature) {
|
function createPopoverHtml(feature) {
|
||||||
const container = document.createElement('div');
|
const container = document.createElement('div');
|
||||||
container.className = 'popover-content';
|
|
||||||
const title = document.createElement('div');
|
const title = document.createElement('div');
|
||||||
title.textContent = feature.get('name');
|
title.textContent = feature.get('name');
|
||||||
container.append(title);
|
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;
|
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
|
// display popup on click
|
||||||
@ -211,6 +220,7 @@ map.on('movestart', disposePopover);
|
|||||||
|
|
||||||
const updateInterval = 5000;
|
const updateInterval = 5000;
|
||||||
let followedFeature = vanFeature;
|
let followedFeature = vanFeature;
|
||||||
|
let followedZoomed = false;
|
||||||
// let followedFeature = null;
|
// let followedFeature = null;
|
||||||
|
|
||||||
function startFollowing(feature, followLink) {
|
function startFollowing(feature, followLink) {
|
||||||
@ -222,6 +232,7 @@ function startFollowing(feature, followLink) {
|
|||||||
|
|
||||||
function stopFollowing(feature, followLink) {
|
function stopFollowing(feature, followLink) {
|
||||||
followedFeature = null;
|
followedFeature = null;
|
||||||
|
followedZoomed = false;
|
||||||
followLink.textContent = 'Stop following';
|
followLink.textContent = 'Stop following';
|
||||||
// followLink.removeEventListener('click', stopFollowing);
|
// followLink.removeEventListener('click', stopFollowing);
|
||||||
followLink.addEventListener('click', startFollowing(feature, followLink));
|
followLink.addEventListener('click', startFollowing(feature, followLink));
|
||||||
@ -235,13 +246,19 @@ function updateData(startInterval=false) {
|
|||||||
const coords = [data.lon, data.lat];
|
const coords = [data.lon, data.lat];
|
||||||
vanFeature.getGeometry().setCoordinates(coords);
|
vanFeature.getGeometry().setCoordinates(coords);
|
||||||
|
|
||||||
if (followedFeature) {
|
// let zoomLevel;
|
||||||
view.animate({
|
// if (!followedZoomed) {
|
||||||
center: followedFeature.getGeometry().getCoordinates(),
|
// zoomLevel = 13;
|
||||||
duration: 500,
|
// followedZoomed = true;
|
||||||
zoom: 13
|
// }
|
||||||
});
|
|
||||||
}
|
// if (followedFeature) {
|
||||||
|
// view.animate({
|
||||||
|
// center: followedFeature.getGeometry().getCoordinates(),
|
||||||
|
// duration: 500,
|
||||||
|
// zoom: zoomLevel
|
||||||
|
// });
|
||||||
|
// }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (startInterval) {
|
if (startInterval) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user