DOM是文档对象模型(Document Object Model)的简称,是表示文档(比如HTML和XML
SVG的DOM
用户点击页面上的放大按钮,触发按钮的onclick事件,调用zoomOut()函数,在该函数中将地图放大为原来的1.5倍。消息响应的函数如下:
字串7function zoomOut(groupName)
{ 字串8var svgDoc = document.mysvg.getSVGDocument();
var curView = svgDoc.getElementById(groupName);
var curZoom = svgDoc.documentElement.currentScale;
i = i*1.5; 字串9 curView.setAttribute("transform","translate("+j+" "+k+") scale("+ curZoom*i+")"); 字串2 } 这里的i、j、k都是全局变量,分别记录缩放倍数、左右平移、上下平移的数值,这样多次缩放和平移操作就可以累加了。topview是封装所有地图元素以后的分组的id名称。 缩小、地图平移、全图显示等功能与上面的地图放大类似,都是对transform的属性进行设置。function searchFeature(featureName)
{
var svgDoc = document.mysvg.getSVGDocument(); 字串1 var svgObj = svgDoc.getElementById(featureName); 字串4if (svgObj)
{
var svgStyle = svgObj.getStyle();
svgStyle.setProperty('stroke', 'white');
}
} 字串8 下面对如何实现地图的图层管理功能进行说明。 字串4在SVG地图中,根据不同分类,地理对象被组织在不同的层中,以组元素<g>作为其分层的方式,每个图层都有相应的标识ID,不同的图层根据ID来进行区分,例如:
<g id="Soil" style="opacity:1.0;visibility:visible;"></g> 字串9 对不同的图层进行显示控制可以用如下函数实现: 字串9function setMapLayerVisible(id, checkBool)
{
var svgObj = svgdoc.getElementById(id); 字串4 var svgStyle = svgObj.getStyle(); 字串7if (checkBool)
svgStyle.setProperty('visibility', 'visible'); 字串7else
svgStyle.setProperty('visibility', 'hidden');
}
如果checkBool为true,将该层设置为可见;checkBool为false时,将该层设置为不可见。 字串9 还有其它一些GIS相关的基本功能,比如,显示地理对象信息、改变图元颜色、地理对象坐标的显示等等,基本都和上面的代码相类似,可以通过DOM接口直接操作SVG文件。