A new element now shows up directly on the map

This commit is contained in:
pietervdvn 2021-01-04 22:14:56 +01:00
parent bee2878b76
commit 32bc1433b4
5 changed files with 24 additions and 15 deletions

View file

@ -317,9 +317,9 @@ export class InitUiElements {
State.state.locationControl
.addCallback(() => {
// Close the layer selection when the map is moved
// checkbox.isEnabled.setData(false);
});
// Close the layer selection when the map is moved
// checkbox.isEnabled.setData(false);
});
const fullScreen = new LayerControlPanel();
checkbox.isEnabled.addCallback(isEnabled => {
@ -358,7 +358,7 @@ export class InitUiElements {
State.state.availableBackgroundLayers, State.state.layoutToUse.map((layout: LayoutConfig) => layout.defaultBackgroundId));
const attr = new Attribution(State.state.locationControl, State.state.osmConnection.userDetails, State.state.layoutToUse,
const attr = new Attribution(State.state.locationControl, State.state.osmConnection.userDetails, State.state.layoutToUse,
State.state.leafletMap);
const bm = new Basemap("leafletDiv",
State.state.locationControl,
@ -396,11 +396,10 @@ export class InitUiElements {
State.state.filteredLayers.setData(flayers);
const updater = new LoadFromOverpass(state.locationControl, state.layoutToUse, state.leafletMap);
State.state.layerUpdater = updater;
const source =
new FilteringFeatureSource(
@ -408,10 +407,11 @@ export class InitUiElements {
State.state.locationControl,
new FeatureSourceMerger([
new RememberingSource(new WayHandlingApplyingFeatureSource(flayers,
new NoOverlapSource(flayers, new FeatureDuplicatorPerLayer(flayers, updater))
new NoOverlapSource(flayers, new FeatureDuplicatorPerLayer(flayers, updater))
)),
new FeatureDuplicatorPerLayer(flayers, State.state.changes)]));
new FeatureDuplicatorPerLayer(flayers, State.state.changes)
])
);
source.features.addCallback((featuresFreshness: { feature: any, freshness: Date }[]) => {
let features = featuresFreshness.map(ff => ff.feature);
@ -419,9 +419,10 @@ export class InitUiElements {
State.state.allElements.addElement(feature);
})
MetaTagging.addMetatags(features);
console.log("ALL FEATURES", features);
})
new ShowDataLayer(source.features, State.state.leafletMap,
new ShowDataLayer(source.features, State.state.leafletMap,
State.state.locationControl.map(l => l.zoom),
State.state.layoutToUse.data);

View file

@ -36,8 +36,11 @@ export default class FeatureDuplicatorPerLayer implements FeatureSource {
return;
}
let foundALayer = false;
for (const layer of layers) {
if (layer.layerDef.overpassTags.matchesProperties(f.feature.properties)) {
foundALayer = true;
if (layer.layerDef.passAllFeatures) {
// We copy the feature; the "properties" field is kept identical though!
@ -58,6 +61,9 @@ export default class FeatureDuplicatorPerLayer implements FeatureSource {
}
}
}
if(!foundALayer){
console.error("LAYER DEDUP PANIC: no suitable layer found for ", f, JSON.stringify(f), "within layers", layers)
}
}
return newFeatures;

View file

@ -90,9 +90,6 @@ export class Changes implements FeatureSource{
}
}
this.features.data.push({feature:geojson, freshness: new Date()});
this.features.ping();
// The basictags are COPIED, the id is included in the properties
// The tags are not yet written into the OsmObject, but this is applied onto a
const changes = [];
@ -104,6 +101,10 @@ export class Changes implements FeatureSource{
changes.push({elementId: id, key: kv.key, value: kv.value})
}
State.state.allElements.addOrGetElement(geojson).ping();
this.features.data.push({feature:geojson, freshness: new Date()});
this.features.ping();
this.uploadAll([osmNode], changes);
return geojson;
}

View file

@ -1,7 +1,7 @@
import { Utils } from "../Utils";
export default class Constants {
public static vNumber = "0.2.7-rc2";
public static vNumber = "0.2.7-rc3";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {

View file

@ -32,6 +32,7 @@ export default class ShowDataLayer {
}
function update() {
console.log("UPDATING!")
if (features.data === undefined) {
return;
}