以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  [原创][求助]svg应用于地图时,tooltip显示的内容会随着地图的放大而产生偏移,怎么解决??  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=20153)


--  作者:leomay
--  发布时间:7/5/2005 9:45:00 AM

--  [原创][求助]svg应用于地图时,tooltip显示的内容会随着地图的放大而产生偏移,怎么解决??
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="800px" height="800px"  viewbox="0 0 1600 1600" enableZoomAndPanControls="true"

style="shape-rendering:geometricPrecision;text-rendering:geometricPrecision;image-rendering:optim

izeQuality" onload="initialize(evt)" xmlns="http://www.w3.org/2000/svg">
<g id="disp_coord" onclick="lbc(evt)">
  <rect x="100" y="50" height="200" width="200" stroke="darkslategrey" stroke-width="2"

fill="grey"   fill-opacity="0.4"/>
</g>
<script type="text/javascript">
<![CDATA[
var svgdoc;
var tooltip,tttelem,ttrelem;
var svgdocElement;
var scale;

function initialize(evt)
{
 svgdoc=evt.getTarget().getOwnerDocument();
 svgdocElement = svgdoc.getDocumentElement();
 scale = svgdocElement.getCurrentScale();
 tttelem=svgdoc.getElementById("ttt");
 ttrelem=svgdoc.getElementById("ttr");
 tooltip=svgdoc.getElementById("tooltip");
 
}
function lbc(evt)
{       

 tttelem.childNodes.item(0).data=evt.clientX+","+evt.clientY;
 var translateX = svgdocElement.getCurrentTranslate().getX();
     var translateY = svgdocElement.getCurrentTranslate().getY();
 var pixel =2/scale;
 var offsetX = parseFloat(0) - translateX * pixel;
 var offsetY = parseFloat(0) - translateY * pixel;
 tttelem.setAttribute ('x', Math.round(offsetX + evt.getClientX() * pixel));
 tttelem.setAttribute ('y', (Math.round(offsetY + evt.getClientY() * pixel-26/scale)));
 var svgstyle = tttelem.getStyle();
 svgstyle.setProperty ('visibility', 'visible');
 svgstyle.setProperty('font-size', 24/scale);
 var txtlen=tttelem.getComputedTextLength()+50/scale;
 ttrelem.setAttribute ('x', (Math.round(offsetX + evt.getClientX() * pixel-txtlen/2)));
 ttrelem.setAttribute ('y', (Math.round(offsetY + evt.getClientY() * pixel-52/scale)));
 ttrelem.setAttribute ('width', txtlen);
 ttrelem.setAttribute ('height',30/scale);
 var svgstyle = ttrelem.getStyle();
 svgstyle.setProperty ('visibility', 'visible');
 
}

]]>

</script>
<g id="tooltip" visibility="hidden">
<rect id="ttr" x="0" y="0" width="100px" height="15px" fill="rgb(255,255,255)"

stroke="rgb(9,0,130)" stroke-width="1px" shape-rendering="optimizeSpeed"/>
<text id="ttt" style="text-anchor:middle" x="0" y="0">dyn.text</text>
</g>

</svg>


--  作者:sunchy2005
--  发布时间:7/5/2005 5:03:00 PM

--  
用transform 动态调整
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
109.375ms