2021-05-02 13:24:27 -04:00
|
|
|
import * as React from 'react';
|
|
|
|
import { TileLayer } from 'react-leaflet';
|
|
|
|
|
|
|
|
import { MapTheme } from '../../config/map-config';
|
|
|
|
|
2021-05-06 13:53:57 -04:00
|
|
|
const OS_API_KEY = 'UVWEspgInusDKKYANE5bmyddoEmCSD4r';
|
2021-05-02 13:24:27 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Base raster layer for the map.
|
|
|
|
* @param theme map theme
|
|
|
|
*/
|
|
|
|
export function CityBaseMapLayer({theme}: {theme: MapTheme}) {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Ordnance Survey maps - UK / London specific
|
|
|
|
* (replace with appropriate base map for other cities/countries)
|
|
|
|
*/
|
2021-05-06 13:53:57 -04:00
|
|
|
const apiKey = OS_API_KEY;
|
|
|
|
const layer = theme === 'light' ? 'Light_3857' : 'Night 3857';
|
|
|
|
|
|
|
|
const baseUrl = `https://api.os.uk/maps/raster/v1/zxy/${layer}/{z}/{x}/{y}.png?key=${apiKey}`;
|
2021-05-02 13:24:27 -04:00
|
|
|
const attribution = 'Building attribute data is © Colouring London contributors. Maps contain OS data © Crown copyright: OS Maps baselayers and building outlines. <a href=/ordnance-survey-licence.html>OS licence</a>';
|
|
|
|
|
|
|
|
return <TileLayer
|
|
|
|
key={theme} /* needed because TileLayer.key is not mutabe in react-leaflet v3 */
|
|
|
|
url={baseUrl}
|
|
|
|
attribution={attribution}
|
|
|
|
maxNativeZoom={18}
|
|
|
|
maxZoom={19}
|
|
|
|
detectRetina={true}
|
|
|
|
/>;
|
|
|
|
}
|
|
|
|
|