UNPKG

@parkassist/pa-ui-library

Version:
64 lines 2.38 kB
import L from 'leaflet'; import Sign1x2Ico from '../../../assets/Icons=Sign1x2.svg'; import Sign1x2SelectedIco from "../../../assets/Icons=Sign1x2_Selected.svg"; import Sign1x2OOSIco from '../../../assets/Icons=Sign1x2OOS.svg'; import Sign1x2OOSSelectedIco from "../../../assets/Icons=Sign1x2OOS_Selected.svg"; import Sign1x6Ico from "../../../assets/Icons=Sign1x6.svg"; import Sign1x6SelectedIco from "../../../assets/Icons=Sign1x6_Selected.svg"; import Sign1x6OOSIco from "../../../assets/Icons=Sign1x6OOS.svg"; import Sign1x6OOSSelectedIco from "../../../assets/Icons=Sign1x6OOS_Selected.svg"; import Sign2x3Ico from "../../../assets/Icons=Sign2x3.svg"; import Sign2x3SelectedIco from "../../../assets/Icons=Sign2x3_Selected.svg"; import Sign2x3OOSIco from "../../../assets/Icons=Sign2x3OOS.svg"; import Sign2x3OOSSelectedIco from "../../../assets/Icons=Sign2x3OOS_Selected.svg"; const height = 18; const width = 10; function getSignIcon(url, numCol, numRow, selected = false, zoom = 0) { const border = selected ? 2 : 0; const scale = Math.pow(2, zoom); const realWidth = (width + border) * numCol * scale; const realHeight = (height + border) * numRow * scale; return L.icon({ iconUrl: url, iconSize: [Math.max(realWidth, numCol * 6 + border), Math.max(realHeight, numRow * 6 + border)] }); } export function getSignDetails(type, isOOS, selected, zoom) { let icon; let iconUrl; switch (type) { case 't1x6': if (isOOS) { iconUrl = selected ? Sign1x6OOSSelectedIco : Sign1x6OOSIco; } else { iconUrl = selected ? Sign1x6SelectedIco : Sign1x6Ico; } icon = getSignIcon(iconUrl, 6, 1, selected, zoom); return { zIndex: selected ? 15 : 10, icon }; case 't2x3': if (isOOS) { iconUrl = selected ? Sign2x3OOSSelectedIco : Sign2x3OOSIco; } else { iconUrl = selected ? Sign2x3SelectedIco : Sign2x3Ico; } icon = getSignIcon(iconUrl, 3, 1, selected, zoom); return { zIndex: selected ? 25 : 20, icon }; default: if (isOOS) { iconUrl = selected ? Sign1x2OOSSelectedIco : Sign1x2OOSIco; } else { iconUrl = selected ? Sign1x2SelectedIco : Sign1x2Ico; } icon = getSignIcon(iconUrl, 2, 1, selected, zoom); return { zIndex: selected ? 35 : 30, icon }; } }