First working version of split road functionality

This commit is contained in:
Pieter Vander Vennet 2021-07-18 21:37:14 +02:00
parent 61f2ebf9ba
commit 248ea78b17
11 changed files with 88 additions and 66 deletions

View file

@ -34,7 +34,6 @@ export default class ChangeApplicator implements FeatureSource {
runningUpdate = true;
changes = changes.filter(ch => !seenChanges.has(ch))
changes.forEach(c => seenChanges.add(c))
console.log("Called back", changes)
ChangeApplicator.ApplyChanges(self.features.data, changes, mode)
source.features.ping()
runningUpdate = false;
@ -67,6 +66,7 @@ export default class ChangeApplicator implements FeatureSource {
const now = new Date()
function add(feature) {
feature.id = feature.properties.id
features.push({
feature: feature,
freshness: now
@ -135,9 +135,7 @@ export default class ChangeApplicator implements FeatureSource {
for (const change of changesPerId.get(id)) {
for (const kv of change.tags ?? []) {
// Apply tag changes and ping the consumers
const k = kv.k
let v = kv.v
f.properties[k] = v;
f.properties[kv.k] = kv.v;
}
// Apply other changes to the object

View file

@ -43,7 +43,7 @@ export default class FeaturePipeline implements FeatureSource {
new FeatureDuplicatorPerLayer(flayers,
new RegisteringFeatureSource(
new ChangeApplicator(
updater, changes, {generateNewGeometries: true}
updater, changes
))
)), layout));
@ -65,7 +65,12 @@ export default class FeaturePipeline implements FeatureSource {
const amendedOsmApiSource = new RememberingSource(
new MetaTaggingFeatureSource(allLoadedFeatures,
new FeatureDuplicatorPerLayer(flayers,
new RegisteringFeatureSource(new ChangeApplicator(fromOsmApi, changes)))));
new RegisteringFeatureSource(new ChangeApplicator(fromOsmApi, changes,
{
// We lump in the new points here
generateNewGeometries: true
}
)))));
const merged =
new FeatureSourceMerger([

View file

@ -76,7 +76,6 @@ export default class FilteringFeatureSource implements FeatureSource {
return false;
});
console.log("Filtering layer source: input: ", upstream.features.data?.length, "output:", newFeatures.length)
self.features.setData(newFeatures);
if (missingLayers.size > 0) {
console.error("Some layers were not found: ", Array.from(missingLayers))