let busDownSvg = '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 48 48"><g transform="translate(5090 -8088)"><circle cx="24" cy="24" r="24" transform="translate(-5090 8088)" fill="#fff"/><path d="M24,2a22.006,22.006,0,0,0-8.563,42.272A22.006,22.006,0,0,0,32.563,3.728,21.86,21.86,0,0,0,24,2m0-2A24,24,0,1,1,0,24,24,24,0,0,1,24,0Z" transform="translate(-5090 8088)" fill="#ff7400"/><path d="M11.761,25.291,0,30,11.81,1.579,23.664,30Z" transform="translate(-5078 8094.421)" fill="#ff7400"/></g></svg>'; /** * svg 的 utf8 编码方法 * @param {*} svg图标 * @returns utf8 编码后的 svg 数据 */ function encodeSvg(svg) { return svg .replace( "<svg", ~svg.indexOf("xmlns") ? "<svg" : '<svg xmlns="http://www.w3.org/2000/svg"' ) .replace(/"/g, "'") .replace(/%/g, "%25") .replace(/#/g, "%23") .replace(/{/g, "%7B") .replace(/}/g, "%7D") .replace(/</g, "%3C") .replace(/>/g, "%3E"); } /** * svg 图标转换为 dataUri 方法 * @param {*} svg svg图标 * @param {*} angle 旋转角度 * @returns svg 格式的 dataUri */ export function svgIconToDataUri(svg, angle) { // 旋转 svg 图标的角度 svg = svg.replace("<svg", `<svg style="transform: rotate(${angle}deg)"`); return `data:image/svg+xml;utf8,${encodeSvg(svg)}`; } svgIconToDataUri(svg, orientation);