From 2d79cc68aa76a0c9dab2e29d5b6ab2e9152c0c5e Mon Sep 17 00:00:00 2001 From: uwap Date: Wed, 1 Nov 2017 05:54:03 +0100 Subject: [PATCH] Now with layers --- config/rzl.js | 13 +++++++------ src/map.js | 44 +++++++++++++++++++++++++++++--------------- types/types.js | 3 ++- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/config/rzl.js b/config/rzl.js index bab45ac..1640146 100644 --- a/config/rzl.js +++ b/config/rzl.js @@ -348,18 +348,19 @@ const config : Config = { layers: [ { image: "img/layers/rzl/rooms.png", - forceVisibility: "on", - name: "RaumZeitLabor" + baseLayer: true, + name: "RaumZeitLabor", + defaultVisibility: "visible" }, { image: "img/layers/rzl/details.png", - forceVisibility: "on", - name: "Details" + name: "Details", + defaultVisibility: "visible" }, { image: "img/layers/rzl/labels.png", - forceVisibility: "on", - name: "Labels" + name: "Labels", + defaultVisibility: "visible" } ] }; diff --git a/src/map.js b/src/map.js index f7e0512..c4d9992 100644 --- a/src/map.js +++ b/src/map.js @@ -1,6 +1,6 @@ // @flow import React from "react"; -import { Map, ImageOverlay, Marker, Popup } from "react-leaflet"; +import { Map, ImageOverlay, Marker, Popup, LayersControl } from "react-leaflet"; import Leaflet from "leaflet"; import R from "ramda"; import Config from "./config"; @@ -37,21 +37,35 @@ const Markers = (props) => R.values(R.mapObjIndexed((el,key) => ( ), R.propOr({}, "controls", Config))); -const Layer = (layer: Layer, bounds: Array>) => ( - -); +class SpaceMap extends React.Component<{state: State, width: number, height: number, + zoom: number, image: string}> { -const visibleLayers = (state: State) => R.filter( - x => (x.forceVisibility == null && R.contains(state.visibleLayers, x.image)) - || x.forceVisibility == "on", Config.layers) + constructor(props) { + super(props); + } -const SpaceMap = (props: { state: State, width: number, height: number, - zoom: number, image: string}) => ( - - {R.map(x => Layer(x, [c([0,0]), c([props.width, props.height])]), visibleLayers(props.state))} - {Markers(props)} - -); + render() { + const props = this.props; + return ( + + {Markers(props)} + + {Config.layers.map(x => this.renderLayer(x, [c([0,0]), c([props.width, props.height])]))} + + + ); + } + + renderLayer(layer, bounds) { + const LayersControlType = layer.baseLayer ? LayersControl.BaseLayer : LayersControl.Overlay; + return ( + + + + ); + } +} export default SpaceMap; diff --git a/types/types.js b/types/types.js index 76e5d35..0b4f154 100644 --- a/types/types.js +++ b/types/types.js @@ -63,7 +63,8 @@ declare type State = { declare type Layer = { image: string, name: string, - forceVisibility?: "on"|"off" + baseLayer: boolean, + defaultVisibility: "visible" | "hidden", }; declare type StateAction = {