mytest
论坛版主
论坛版主
  • 注册日期2006-12-17
  • 发帖数155
  • QQ
  • 铜币53枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2321回复:0

使用ArcXML在HTML Viewer中动态添加数据层

楼主#
更多 发布于:2006-12-21 12:25
<TABLE  cellPadding=0 width="100%" border=0>

<TR >
<TD >
<P >"MAP"这个ArcXML标签有"dynamic"属性,可以不修改mapservice(地图服务)的AXL配置文件而<BR><BR>是将图层动态地添加到mapservice.本文将为HTML Viewer中实现此功能举例.<p></p></P></TD></TR>
<TR >
<TD >
<P ><B>过程描述</B><B><p></p></B></P></TD></TR>
<TR >
<TD >
<P >下面的例子将动态地将cities.shp shapefile添加到包含states.shp的图像地图服务中.可以<BR><BR>在ArcIMS产品的例子只找到这两个数据集.<BR><BR>1.在Author或文本编辑器中新建AXL文件,states shapefile是其唯一的层.<BR>2.在文本编辑器中打开该AXL文件,将Map元素作如下改动:<BR><MAP>改为:<MAP dynamic="true" /><BR>3.启动Administrator,根据该AXL文件新建一个图像地图服务.然后启动Designer,用这个地图<BR><BR>服务建立一个HTML Viewer的Web站点.接受缺省值.<BR>4.修改deBugOn变量值,查看送到ArcIMS服务器的ArcXML:<BR>A.在文本编辑器中打开ArcIMSParams.js,搜索deBugOn,并修改成:deBugOn = 3;<BR>B.在文件头加上一行:addDynLayer = true;<BR>5.在HTML Viewer的工具栏上加一个按钮.当点击该按钮,会生成添加一个新的数据层ArcXML代<BR><BR>码,并将该段代码加到对地图图片的请求中去.<BR><BR>在文本编辑器中打开toolbar.htm,然后在文件末尾将下列代码:<BR>if (parent.MapFrame.allowOptions) {<BR>// Options. . . requiers aimsOptions.js... allowOptions is set to true in <BR><BR>this file<BR>document.write('<td align="center" valign="middle">');<BR>document.write('<img src="images/wrench.gif" width=16 height=16 hspace=1 <BR><BR>vspace=1 border=0 alt=" ' + t.buttonList[40] + '" <BR><BR>onmousedown="parent.MapFrame.writeOptionForm();" onmouseover="window.status=' ' <BR><BR>+ t.buttonList[40] + ''">');<BR>isSecond = !isSecond<BR>document.writeln('</td>');<BR>if (isSecond) document.write('</tr><tr>');<BR>}<BR>if (parent.MapFrame.canLoad) {<BR>// Load MapService. . . requires aimsGeneric.js<BR>document.write('<td align="center" valign="middle">');<BR>document.write('<img src="images/open_1.gif" width=16 height=16 hspace=1 <BR><BR>vspace=1 border=0 alt=" ' + t.buttonList[41] + '" <BR><BR>onmousedown="parent.MapFrame.loadMapForm();" onmouseover="window.status=' ' + <BR><BR>t.buttonList[41] + ''">');<BR>document.writeln('</td>');<BR>}<BR><BR>改成:<BR>if (parent.MapFrame.allowOptions) {<BR>// Options. . . requiers aimsOptions.js... allowOptions is set to true in <BR><BR>this file<BR>document.write('<td align="center" valign="middle">');<BR>document.write('<img src="images/wrench.gif" width=16 height=16 hspace=1 <BR><BR>vspace=1 border=0 alt=" ' + t.buttonList[40] + '" <BR><BR>onmousedown="parent.MapFrame.writeOptionForm();" onmouseover="window.status=' ' <BR><BR>+ t.buttonList[40] + ''">');<BR>isSecond = !isSecond<BR>document.writeln('</td>');<BR>if (isSecond) document.write('</tr><tr>');<BR>}<BR>if (parent.MapFrame.addDynLayer) {<BR>document.write('<td align="center" valign="middle">');<BR>document.write('<img src="images/wrench.gif" width=16 height=16 hspace=1 <BR><BR>vspace=1 border=0 alt="Add Dynamic Layer" <BR><BR>onmousedown="parent.MapFrame.clickFunction('CustomAXL');" <BR><BR>onmouseover="window.status='Add Dynamic Layer '">');<BR>isSecond = !isSecond<BR>document.writeln('</td>');<BR>if (isSecond) document.write('</tr><tr>');<BR>}<BR><BR>if (parent.MapFrame.canLoad) {<BR>// Load MapService. . . requires aimsGeneric.js<BR>document.write('<td align="center" valign="middle">');<BR>document.write('<img src="images/open_1.gif" width=16 height=16 hspace=1 <BR><BR>vspace=1 border=0 alt=" ' + t.buttonList[41] + '" <BR><BR>onmousedown="parent.MapFrame.loadMapForm();" onmouseover="window.status=' ' + <BR><BR>t.buttonList[41] + ''">');<BR>document.writeln('</td>');<BR>} <BR><BR>6.为了添加动态图层,请求新的地图图片,进行如下编辑:<BR>A.在文本编辑器中打开aimsClick.js.在clickFunction()函数中将下列代码:<BR>function clickFunction (toolName) {<BR>if (hasLayer("measureBox"))<BR>hideLayer("measureBox");<BR>switch(toolName) {<BR><BR>// Zooming functions<BR>case "zoomin":<BR>改成:<BR>function clickFunction (toolName) {<BR>if (hasLayer("measureBox"))<BR>hideLayer("measureBox");<BR>switch(toolName) {<BR>// Zooming functions<BR>case "CustomAXL":<BR><BR>if (aimsCustomPresent){<BR>aimsCustomPresent=false<BR>} else {<BR>aimsCustomPresent=true;<BR>}<BR><BR>parent.MapFrame.sendMapXML();<BR><BR>break;<BR><BR>case "zoomin":<BR>当aimsCustomPresent为true时,aimsXML.js文件中writeXML()函数中下面这行代码会调用<BR><BR>aimsCustom.js文件中的addCustomToMap1()函数.<BR>if (aimsCustomPresent) theString += addCustomToMap1();<BR>注:每次有更新地图图片的请求时,writeXML() 都会被调用.<BR>7.在文本编辑器中打开aimsCustom.js,作下列改动:<BR>A.将这行代码"aimsCustomPresent=true;"改成aimsCustomPresent=false;<BR>B.将addCustomToMap1() 函数中的代码段:<BR>function addCustomToMap1(){<BR>var customString = "";<BR>/*<BR>customString += '<LAYER type="ACETATE" name="theMode">n';<BR>customString += '<OBJECT units="PIXEL">n<TEXT coord="5 ' + <BR><BR>(iHeight-10) + '" label="This is a test">n';<BR>customString += '<TEXTMARKERSYMBOL fontstyle="BOLD" fontsize="12" <BR><BR>font="ARIAL" fontcolor="' + modeMapColor + '" ';<BR>customString += 'threed="TRUE" glowing="' + modeMapGlow + '" <BR><BR>/>n</TEXT>n</OBJECT>';<BR>customString += 'n</LAYER>n';<BR>*/<BR>return customString;<BR>}<BR>改成:<BR>function addCustomToMap1(){<BR>var customString = "";<BR>customString += '<WORKSPACES>n'; <BR>customString += '<SHAPEWORKSPACE name="shp_ws-1" directory="C:/Program <BR><BR>Files/ArcGIS/ArcIMS/Samples/TutorialData" />n';<BR>customString += '</WORKSPACES>n'; <BR>customString += '<LAYER type="featureclass" name="cities" visible="true" <BR><BR>id="2">n'; <BR>customString += '<DATASET name="cities" type="point" <BR><BR>workspace="shp_ws-1" />n';<BR>customString += '<SIMPLERENDERER>n';<BR>customString += '<SIMPLEMARKERSYMBOL color="255,0,0" width="20" />n'; <BR>customString += '</SIMPLERENDERER>n';<BR>customString += '</LAYER>n';<BR>return customString;<BR>}<BR>8.保存所有的文件<BR>9.在浏览器中打开WEB站点.注:会弹出消息框,显示客户端的ArcXML(REQUEST)已经发送到服务<BR><BR>器,且收到服务器返回的ArcXML()(RESPONSE).<BR>10.点击工具栏中的扳手图标.我们定制的ArcXML字符串就添加到了GET_IMAGE请求中发送到<BR><BR>ArcIMS服务器.你可以看到一个REQUEST(包含aimsCustom.js里addCustomToMap1()中的字符串<BR><BR>)和一个RESPONSE(包含输出的图片的位置)<p></p></P></TD></TR></TABLE>
喜欢0 评分0
游客

返回顶部