diff --git a/src/modules/Map.ts b/src/modules/Map.ts new file mode 100644 index 0000000..354845a --- /dev/null +++ b/src/modules/Map.ts @@ -0,0 +1,36 @@ +import { + Map as MapInterface, + map, + tileLayer, + TileLayer, +} from 'leaflet'; + +import 'leaflet/dist/leaflet.css'; +import { PROVIDER } from '$config/frontend'; // +import { DEFAULT_PROVIDER, PROVIDERS } from '$constants/providers'; + +interface Props { + container: string +} + +export class Map { + constructor({ container }: Props) { + this.map = map(container).setView([55.0153275, 82.9071235], 13); + // todo: change coords? + + this.tileLayer.addTo(this.map); + } + + map: MapInterface; + tileLayer: TileLayer = tileLayer(PROVIDER.url, { + attribution: 'Независимое Велосообщество', + maxNativeZoom: 18, + maxZoom: 18, + }); + + setProvider = (provider: string): void => { + const { url } = (provider && PROVIDERS[provider] && PROVIDERS[provider]) || PROVIDERS[DEFAULT_PROVIDER]; + + this.tileLayer.setUrl(url); + } +}