首先 - 对问题的简短描述.我编写了一个JavaScript函数来将一些文本标签放在SVG画布中.这里是:
function set_label(x,y,title)
{
var newTitle = document.createElementNS(svgNS,"text");
newTitle.setAttributeNS(null,"x",x);
newTitle.setAttributeNS(null,"y",y);
newTitle.setAttributeNS(null,"font-size","17px");
newTitle.setAttributeNS(null,"font-family","WinGreek");
var textNode = document.createTextNode(title);
newTitle.appendChild(textNode);
document.getElementById("viewport").appendChild(newTitle);
}
Run Code Online (Sandbox Code Playgroud)
由于我的项目积分,我必须使用希腊字体.所以,我称之为功能:
set_label (10,50,'Qitos')
Run Code Online (Sandbox Code Playgroud)
这将显示Ktitos标签 - 没问题.
但是 - 当我尝试这样打电话时:
set_label (10,50,'QamÚraj')
Run Code Online (Sandbox Code Playgroud)
甚至更糟:
set_label (10,50,'Θαρσανδαλα')
Run Code Online (Sandbox Code Playgroud)
这必须显示Θαρσανδαλα标题形成全部来自特殊字符 - 问题累积 - utf-8符号出现像我写它 - 与代码:(
这里在其他类似的问题的一些研究,我发现,如果我转换UTF-8码ESC序列,如\ U00B0 - 这必须解决这个问题,但是... - 我无法弄清楚它是如何做到这一点, - 如何如果特殊字符在字符串的中间 - 就像第二个例子那样做
我使用 SVG 来绘制地理地图。但是当视图框具有负值时 - 鼠标事件不起作用。请回顾一下下面的小提琴:
<svg
id="svg" class="mapNavSVG"
width="100%"
viewBox="27.7333333 -43.2233334 0.2183334 0.0566667"
preserveAspectRatio="xMidYMid meet"
xmlns="http://www.w3.org/2000/svg"
xlink="http://www.w3.org/1999/xlink"
ev="http://www.w3.org/2001/xml-events"
shape-rendering="geometricPrecision"
>
<rect x="27.7333333" y="-43.2233334" width="0.2183334" height="0.0566667" style="fill:#0059b3;" />
<rect onClick="alert('Test!');" x="27.9408" y="-43.1944975" width="0.006" height="0.006" style="fill:yellow;" />
</svg>Run Code Online (Sandbox Code Playgroud)
值是真实的 GPS 坐标。正如您所看到的 - 当单击黄色矩形时 - 什么也没有发生。
先感谢您。
更新:2018 年 1 月 8 日,经过一些评论和其他研究后,我发现该问题的原因是实数(非整数)很小。在 Chrome 中,问题已得到解决,但在 Firefox 中,问题在版本 64 中仍然存在,即使bugzilla 中有问题日志。对我来说缩放地图中的所有 SVG 元素太困难了,因为我是从 GIS 软件获取它们的。感谢大家的帮助。