diff --git a/svgmap/src/components/map/Map.tsx b/svgmap/src/components/map/Map.tsx index 9f67caa..9a6de8d 100644 --- a/svgmap/src/components/map/Map.tsx +++ b/svgmap/src/components/map/Map.tsx @@ -3,7 +3,8 @@ import react, { useState } from 'react'; import './Map.css'; import MouseHandler from './MouseHandler'; -import ResizeableBoard from './ResizeableBoard'; +import SlippyBoard from './SlippyBoard'; +import TiledLayer from './TiledLayer'; interface MapProperties { height: number; @@ -21,7 +22,7 @@ const Map: react.FC = (props: MapProperties) => { }; const addZoom = (zoomFactor: number, center: { x: number; y: number }) => { - setShift({ + addShift({ x: (shift.x - center.x) * (zoomFactor - 1), y: (shift.y - center.y) * (zoomFactor - 1), }); @@ -41,7 +42,15 @@ const Map: react.FC = (props: MapProperties) => { addZoom={addZoom} boardSize={boardSize} /> - + }, + { key: 'circle', content: }, + ]} + /> ); diff --git a/svgmap/src/components/map/SlippyBoard.tsx b/svgmap/src/components/map/SlippyBoard.tsx new file mode 100644 index 0000000..7116a59 --- /dev/null +++ b/svgmap/src/components/map/SlippyBoard.tsx @@ -0,0 +1,28 @@ +import react, { Fragment, ReactElement, ReactSVGElement } from 'react'; + +interface SlippyBoardProperties { + boardSize: number; + shift: { x: number; y: number }; + zoom: number; + layers?: { key: string; content: ReactElement }[]; +} + +const SlippyBoard: react.FC = ( + props: SlippyBoardProperties +) => { + return ( + + + {props.layers + ? props.layers.map((layer) => ( + {layer.content} + )) + : null} + + + ); +}; + +export default SlippyBoard; diff --git a/svgmap/src/components/map/TiledLayer.tsx b/svgmap/src/components/map/TiledLayer.tsx new file mode 100644 index 0000000..a4863eb --- /dev/null +++ b/svgmap/src/components/map/TiledLayer.tsx @@ -0,0 +1,11 @@ +import react from 'react'; + +interface TiledLayerProperties {} + +const TiledLayer: react.FC = ( + props: TiledLayerProperties +) => { + return ; +}; + +export default TiledLayer;