More work on the editor-layer-index

This commit is contained in:
Pieter Vander Vennet 2020-09-25 23:00:20 +02:00
parent 08175a747f
commit d0641ba409
3 changed files with 341741 additions and 13 deletions

View file

@ -9,8 +9,17 @@ import {Basemap} from "./Leaflet/Basemap";
*/ */
export default class AvailableBaseLayers { export default class AvailableBaseLayers {
public static osmCarto =
{
id: "osm", url: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
max_zoom: 19, license_url: "https://openStreetMap.org/copyright",
name: "OpenStreetMap", geometry: null,
leafletLayer: Basemap.CreateBackgroundLayer("osm", "OpenStreetMap",
"https://tile.openstreetmap.org/{z}/{x}/{y}.png", "OpenStreetMap", 19, false, false)
}
public static layerOverview = AvailableBaseLayers.LoadRasterIndex(); public static layerOverview = AvailableBaseLayers.LoadRasterIndex();
public availableEditorLayers: UIEventSource<{ id: string, url: string, max_zoom: number, license_url: number, name: string, geometry: any, leafletLayer: any }[]>; public availableEditorLayers: UIEventSource<{ id: string, url: string, max_zoom: number, license_url: string, name: string, geometry: any, leafletLayer: any }[]>;
constructor(state: State) { constructor(state: State) {
const self = this; const self = this;
@ -37,8 +46,9 @@ export default class AvailableBaseLayers {
} }
public static AvailableLayersAt(lon: number, lat: number): { url: string, max_zoom: number, license_url: number, name: string, geometry: any }[] { public static AvailableLayersAt(lon: number, lat: number):
const availableLayers = [] { url: string, max_zoom: number, license_url: string, name: string, geometry: any }[] {
const availableLayers = [AvailableBaseLayers.osmCarto as any]
const globalLayers = []; const globalLayers = [];
for (const i in AvailableBaseLayers.layerOverview) { for (const i in AvailableBaseLayers.layerOverview) {
const layer = AvailableBaseLayers.layerOverview[i]; const layer = AvailableBaseLayers.layerOverview[i];
@ -59,8 +69,8 @@ export default class AvailableBaseLayers {
return availableLayers.concat(globalLayers); return availableLayers.concat(globalLayers);
} }
private static LoadRasterIndex(): { id: string, url: string, max_zoom: number, license_url: number, name: string, feature: any }[] { private static LoadRasterIndex(): { id: string, url: string, max_zoom: number, license_url: string, name: string, feature: any }[] {
const layers: { id: string, url: string, max_zoom: number, license_url: number, name: string, feature: any, leafletLayer: any }[] = [] const layers: { id: string, url: string, max_zoom: number, license_url: string, name: string, feature: any, leafletLayer: any }[] = []
// @ts-ignore // @ts-ignore
const features = editorlayerindex.features; const features = editorlayerindex.features;
for (const i in features) { for (const i in features) {
@ -87,6 +97,11 @@ export default class AvailableBaseLayers {
if (props.url.toLowerCase().indexOf("{bbox}") > 0) { if (props.url.toLowerCase().indexOf("{bbox}") > 0) {
continue; continue;
} }
if(props.name === undefined){
console.log("Editor layer index: name not defined on ", props)
continue
}
const leafletLayer = Basemap.CreateBackgroundLayer( const leafletLayer = Basemap.CreateBackgroundLayer(
props.id, props.id,

View file

@ -4,6 +4,7 @@ import {DropDown} from "./Input/DropDown";
import Translations from "./i18n/Translations"; import Translations from "./i18n/Translations";
import {State} from "../State"; import {State} from "../State";
import {UIEventSource} from "../Logic/UIEventSource"; import {UIEventSource} from "../Logic/UIEventSource";
import Combine from "./Base/Combine";
export default class BackgroundSelector extends UIElement { export default class BackgroundSelector extends UIElement {
@ -22,24 +23,19 @@ export default class BackgroundSelector extends UIElement {
private CreateDropDown(available) { private CreateDropDown(available) {
if(available.length === 0){ if(available.length === 0){
console.warn("NO AVAILABLE LAYERS") console.warn("NO LAYERS FOUND!")
return;
} }
console.log("ALL LAYERS", available)
const baseLayers: { value: any, shown: string }[] = []; const baseLayers: { value: any, shown: string }[] = [];
for (const i in available) { for (const i in available) {
const layer: { url: string, max_zoom: number, license_url: number, name: string, geometry: any, leafletLayer: any } = available[i]; const layer: { url: string, max_zoom: number, license_url: number, name: string, geometry: any, leafletLayer: any } = available[i];
if (layer.name === undefined) {
continue;
}
baseLayers.push({value: layer.leafletLayer, shown: layer.name}); baseLayers.push({value: layer.leafletLayer, shown: layer.name});
} }
const dropdown = new DropDown(Translations.t.general.backgroundMap, baseLayers, State.state.bm.CurrentLayer) const dropdown = new DropDown(Translations.t.general.backgroundMap, baseLayers, State.state.bm.CurrentLayer)
console.log("Installed dropdown with ",baseLayers);
this._dropdown = dropdown; this._dropdown = dropdown;
} }

341717
assets/editor-layer-index.json Normal file

File diff suppressed because it is too large Load diff