svg insert shape string bug

not support custom areaProps attributes ???


const svg = document.querySelector(`[data-uuid="live_map_svg"]`); svg.insertAdjacentHTML(`beforeend`, svgPolygon); svgPolygon = `<polygon stroke="" fill="#DB524F" points="454.99798583984375 586.333984375 534.9979858398438 586.333984375 534.9979858398438 719.6680297851562 454.99798583984375 719.6680297851562" center='{"x":494.99798583984375,"y":653.0010070800781}' areaprops='{"id":10202,"activityEventId":2801,"ticketCategoryId":11201,"desc":"_贵宾区","name":"贵宾区","floor":0,"sort":0,"status":1} uuid="polygon_1583483461614_10045"></polygon>` // "<polygon stroke="" fill="#DB524F" points="454.99798583984375 586.333984375 534.9979858398438 586.333984375 534.9979858398438 719.6680297851562 454.99798583984375 719.6680297851562" center='{"x":494.99798583984375,"y":653.0010070800781}' areaprops='{"id":10202,"activityEventId":2801,"ticketCategoryId":11201,"desc":"_贵宾区","name":"贵宾区","floor":0,"sort":0,"status":1} uuid="polygon_1583483461614_10045"></polygon>" svg.insertAdjacentHTML(`beforeend`, svgPolygon); svgPolygon = `<polygon stroke="" fill="#DB524F" points="454.99798583984375 586.333984375 534.9979858398438 586.333984375 534.9979858398438 719.6680297851562 454.99798583984375 719.6680297851562" uuid="polygon_1583483461614_10045"></polygon>`
// "<polygon stroke="" fill="#DB524F" points="454.99798583984375 586.333984375 534.9979858398438 586.333984375 534.9979858398438 719.6680297851562 454.99798583984375 719.6680297851562" uuid="polygon_1583483461614_10045"></polygon>" svg.insertAdjacentHTML(`beforeend`, svgPolygon); svgPolygon = `<text x="494.99798583984375" y="653.0010070800781" fill="#000" uuid="area_1583483461614_10045">贵宾区</text>`
// "<text x="494.99798583984375" y="653.0010070800781" fill="#000" uuid="area_1583483461614_10045">贵宾区</text>" svg.insertAdjacentHTML(`beforeend`, svgPolygon);

solution

missing ' single quote bug ️

OK


const computePolygonCenterPoint = (points = []) => {
// 设置旋转的 origin,为 polygon 的中心,旋转偏移量
let [top, left, right, bottom] = ["", "", "", ""];
points.forEach(([x, y], i) => {
if (i === 0) {
top = y;
bottom = y;
left = x;
right = x;
} else {
top = Math.min(top, y);
bottom = Math.max(bottom, y);
left = Math.min(left, x);
right = Math.max(right, x);
}
});
const point = {
cx: (left + right) / 2,
cy: (top + bottom) / 2,
};
return point;
} const polygonGenerator = (feature = {}, uuid = ``, areaUuid, offsetFlag = false) => {
const {
properties: {
labelPoint,
fill,
stroke,
type,
// text === name / desc,
id,
activityEventId,
ticketCategoryId,
desc,
name,
floor,
sort,
status,
},
geometry: {
coordinates,
},
} = feature;
const points = coordinates.flat(3).join(` `);
const points_arr = coordinates[0];
let x = 0;
let y = 0;
if(!labelPoint) {
const {
cx,
cy,
} = computePolygonCenterPoint(points_arr);
x = cx;
y = cy;
} else {
const {
x: cx,
y: cy,
} = labelPoint;
x = cx;
y = cy;
}
// svg 绑定区域的 text 偏移量优化 ??? offsetFlag ? +number : -number
const xOffset = 20;
const yOffset = -10;
x = x - xOffset;
y = y - yOffset;
const center = JSON.stringify({
x,
y,
});
let result = ``;
// true && number !== boolean
// if (type === "section" && (name.length ? true : false)) {
if (type === "section" && name.length > 0) {
const ticketArea = {
id,
activityEventId,
ticketCategoryId,
desc,
name,
floor,
sort,
status,
};
const areaProps = JSON.stringify(ticketArea);
// areaprops areaProps auto convert to lowercase bug
result = `
<polygon stroke="${stroke || ''}" fill="${fill || polygonFillColor}" points="${points}" center='${center}' areaprops='${areaProps}' uuid="${uuid}"></polygon>
<text x="${x || ''}" y="${y || ''}" fill="${textFillColor}" uuid="${areaUuid}">${name}</text>
`;
} else {
result = `
<polygon stroke="${stroke || ''}" fill="${fill || polygonFillColor}" points="${points}" center='${center}' uuid="${uuid}"></polygon>
`;
}
return result.trim();
}

最新文章

  1. va_list结构体
  2. List之Union(),Intersect(),Except()
  3. GUI之绘画控制
  4. scp使用加密算法报错unknown cipher type
  5. Linux清除磁盘上的RAID信息
  6. POJ 1753 Flip Game (DFS + 枚举)
  7. day9_python学习笔记_chapter12_模块
  8. 利用STM32F唯一96bit序列号实现反拷贝加密的源代码公开(转)
  9. 遍历ul下的li,点击弹出li的索引
  10. lucene倒排索引缓冲池的细节
  11. 201521123066《Java程序设计》第七周学习总结
  12. 社群公会GangSDK:程序员入行AI领域需要哪些技能?
  13. Linux系统中errno对应的中文意思 errno.h
  14. win7共享打印机和防火墙配置
  15. java 多线程二
  16. java 全组合 与全排列
  17. 浏览器输入URL后发生了什么
  18. 【CodeForces】901 C. Bipartite Segments
  19. 开发者应该了解的API技术清单
  20. Codeforces Round #545 (Div. 2)D(KMP,最长公共前后缀,贪心)

热门文章

  1. maven project builder fails when running on jdk&gt;9
  2. 三次握手 四次握手 原因分析 TCP 半连接队列 全连接队列
  3. v-show和v-if指令的共同点和不同点?
  4. 常用shell命令及其用法
  5. 向数据库添加100W 条数据 性能测试
  6. Spring Cloud与Docker——微服务架构概述
  7. hive启动错误总结
  8. (15)Linux命令基本格式
  9. Educational Codeforces Round 83 D. Count the Arrays(组合,逆元,快速幂)
  10. 【bzoj 2339】[HNOI2011]卡农(数论--排列组合+逆元+递推)