Posted on 2005-05-09 08:50
edison1024 阅读(2880)
评论(14) 编辑 收藏 所属分类:
javascript + DHTML 、
C# 、
webgis
一直很忙很忙,没空写点东西。。。。。

。。。。
51前写的一个demo,3.8M的Provinces.gml(仅空间数据)发布成压缩过的SVG后327K。
这是load4.htm的代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>

<script>
var svgEmb = null;
var svgDoc = null;

function init()


{
svgEmb = document.embeds["SVG1"];
//alert(svgEmb);
svgDoc = svgEmb.getSVGDocument();
svgEmb.window.getURL("line.aspx",loadSVG,"text/xml");
}

function loadSVG(templeContent)


{
if(templeContent.success)

{
var domResponse = svgEmb.window.parseXML(templeContent.content);
var frag = svgEmb.window.parseXML(svgEmb.window.printNode(domResponse.getElementsByTagName("svg").item(0)), svgDoc);
//frag.firstChild.setAttribute("transform","scale(1,-1)");
svgDoc.replaceChild(frag.firstChild, svgDoc.rootElement);
//svgDoc.rootElement.appendChild(frag.firstChild);
svgDoc.getElementById("omVectorLayer").setAttribute("transform","scale(1,-1)");
var svgRect = svgDoc.rootElement.getBBox();
//var svgRect = svgDoc.getElementById("omVectorLayer").getBBox();
var strViewBox = svgRect.x + " " + svgRect.y + " " + svgRect.width + " " + svgRect.height;
//alert(svgRect.x);
svgDoc.rootElement.setAttribute("viewBox", strViewBox);
}
}

function getSvg()


{
//var oPop = window.open();
//oPop.document.body.innerText = svgEmb.window.printNode(svgDoc);
alert(svgEmb.window.printNode(svgDoc));
//svgDoc.rootElement.setAttribute("transform","scale(1,-1)");
}

function getViewBox()


{
alert(svgDoc.rootElement.getAttribute("viewBox"));
}
</script>
</head>

<body onLoad="init()" bgcolor="#666600" background="background.jpg">
<embed id="SVG1" width="500" height="500" src="test.svg"></embed>
<input value="getsvg" type="button" onClick="getSvg()">
<input value="getviewbox" type="button" onClick="getViewBox()">
</body>
</html>

这是line.aspx的C#代码,需要ZIPLIB
this.Response.ContentType = "image/svg+xml";
XslTransform xslt = new XslTransform();
xslt.Load(Server.MapPath("Region.xsl"));
XPathDocument xpathdocument = new XPathDocument(Server.MapPath("chinese.gml"));
GZipOutputStream CompressedOutput = new GZipOutputStream(Response.OutputStream, 100);
XmlTextWriter writer = new XmlTextWriter(CompressedOutput, Encoding.UTF8);
writer.Formatting=Formatting.Indented;
xslt.Transform(xpathdocument, null, writer, null);
CompressedOutput.Finish();
下面是截图,弹的的数字的当前的viewbox。(少了几个省是因为XSLT还没写完)
