发表用户:lonestar42
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=11&ID=13164
信息原始来源:lonestar42

文章标题:关于MapJ.getlayers().insertlayer()和MapJ.getlayer().removeLayer()的深入研究

全文下载: 下载地址1

下载要求:论坛注册用户

文章简介:

关于MapJ.getlayers().insertlayer()和MapJ.getlayer().removeLayer()的深入研究,达人乱入,班主任乱入
这两天继续研究分析图层的问题.开始已经可以顺利的进行定制图元的绘制柱图了.这两天出了一个新问题.之前我写在servlet里每次都是重新启动tomcat基本没问题.现在做了一个jsp页面,加了一个列表(<select>)模拟对某些图元的定制.问题接着出现了.

1.      当我第一次进行传入参数,也就是检索图元的id(比如我要id=1,2,3这3个点柱图分析)
的时候可以进行正常的专题图分析,也就是说analysislayer正确的建立了也对featurelayer进行了正确的分析.但当我不关闭tomcat继续传入第二次参数的时候,画出来的是,第一次分析的图层还在,而featurelayer的点变了,但是却没有相应的柱图在上面.

2.      我怀疑是第一次的analysislayer没有被清除于是改了代码,在每次我传入参数的时候都使用mapj.loaddefeinition()重新从.mdf文件中载入mapj(此时.mdf里只有基础图层没有任何分析图层).再此运行,奇怪的事情发生了,当我第二次传入参数时状况依然没有得到改变.而我做的输出语句中清楚的看到我是在第二次的时候重新载入了新的mapj(此时只有基础图层),然后再加上analysislayer和featurelayer的.于是我想到了个更极端的办法.

3.      这次实验我在insertlayer的时候把每个名字都设置不同.做了一个计数器count,当每次传入新参数的时候就+1,拼字符串layername="analysis_layer"+count;这样每次传入新的参数时候名字就为analysis_layer1,analysis_layer2,analysis_layer3.....
        再次实验......奇迹出现了......居然得到了正常的结果.....而且每次传入新的参数的时候得到的图上一次生成的柱图都会被清除掉.

    问题来了.....:第三次做的实验中,上一次做的分析图层没有保留下来,这个证明了我每次重新载入mapj的方法起作用了. 但是我第二次做的实验中第二次传入参数时,得到的图层是保留了第一次传参时的柱图,而第二次分析图图层没有加进来.只有一些光秃秃的点.这种现象证明了mapj的重新载入没有起作用.这与第三次实验的结果相矛盾.而2者之间唯一的区别就是我在insert()的时候名字取法问题.实验2是一直都用一个名字"analysis_layer"而实验3每次都用不同的名字.而实验2时按理说我重新new了一个mapj的话此时mapj里应该没有名为"analysis_layer"的图层,(事实也是这样的),而我动态加入的analysis_layer也确实应该是根据第二次传参得到的动态的feautrelayer分析得到的.但是就是加不进去,换句话说加的话加的还是第一次的分析图层.......

说的比较乱...我把代码和图的显示发上来...各位给参谋参谋......