import { Injectable} from '@angular/core'; import { Feature } from 'ol'; import { Point } from 'ol/geom'; import * as extent from 'ol/extent'; @Injectable() export class FeatureIconService { getIconImageDataUrl(iconClass:string, backgroundColor = "#c80a6e",color = "#ffffff"): string { const canvas = document.createElement('canvas'); canvas.width = 365; canvas.height = 560; const ctx = canvas.getContext('2d'); ctx.lineWidth = 6; ctx.fillStyle = backgroundColor; ctx.strokeStyle = "#000000"; const path = new Path2D("m182.9 551.7c0 0.1 0.2 0.3 0.2 0.3s175.2-269 175.2-357.4c0-130.1-88.8-186.7-175.4-186.9-86.6 0.2-175.4 56.8-175.4 186.9 0 88.4 175.3 357.4 175.3 357.4z"); ctx.fill(path) let iconCharacter = ""; if (iconClass != null) { const element = document.createElement("i"); element.style.display = "none"; element.className = iconClass; document.body.appendChild(element); iconCharacter = getComputedStyle(element, "::before").content.replace(/"/g, ''); const iconFont = "200px " +getComputedStyle(element, "::before").fontFamily document.body.removeChild(element); ctx.strokeStyle = color; ctx.fillStyle = color; ctx.lineWidth = 15; ctx.font = iconFont; const ts = ctx.measureText(iconCharacter); ctx.fillText(iconCharacter, 182.9 - (ts.width / 2), 250); ctx.strokeText(iconCharacter, 182.9 - (ts.width / 2), 250); } return canvas.toDataURL(); } }