arcgis api for js中MapImageLayer如何移除MapImage

使用MapImageLayer在map中添加影像,部分代码如下,已实现了影像添加,可是使用removeImage函数,却无法对其移除,求各位指导!
var img=new esri.layers.MapImage({
 'extent':obj.ext,
 'href':obj.path});
  if(v=="glyphicon glyphicon glyphicon-eye-close")
{
       //添加影像
       imglayer.addImage(img);
       v="glyphicon glyphicon glyphicon-eye-open";
       document.getElementById(spid).className=v;
 }
 else
  {
      //移除影像
       imglayer.removeImage(img);
       //map.addLayer(imglayer);
       v="glyphicon glyphicon glyphicon-eye-close";
       document.getElementById(spid).className=v;
  }

有几个问题补充一下,
1、由于我需要叠加的image比较多,而且每张image是分开单独按钮控制的,(image数目不确定)我不可能先把所有的MapImage创建好,然后控制它的添加和移除,我只能点击按钮,实时获取image的extent和href进行创建,再对其进行图层的添加或移除操作,是不是按照我这样的做法每次创建的MapImage都是不一样的?那我该如何实现我所需的功能?我看了API,创建MapImage的时候也没办法对其确定id之类的。
2、我实现的功能是这样的场景,通过查询可以得到一些查询结果,每个记录都有一个按钮控制这个记录的image的添加与移除。第一次点击按钮后,后台获取image的extent和href,再将其返回前台,添加image到map中,第二次点击按钮,则将该image给移除。就这样的情形,不知道您有没有什么解决方案?
已邀请:

goldenlimit - Major in MIS and minor in GIS, graduated from University of Alabama. GIS is not a simply tool but a way of exploring the unknow

赞同来自:

我写了一个小的sample,你可以参考下:
https://jsfiddle.net/mma6sqmm/
 
这是我添加的新的截图,getImage() method 返回的Object值:

MapimageLayer.JPG

 
 
根据你的说法,看起来你需要做很多query和计算来添加或者去掉这些MapImage,

根据我对我们JavaScript API 的了解,MapImage和MapImageLayer这两个Class都是相当于一个helper的类,其主要目的是帮助你把得到的图片,简单转化然后加载到地图上,并不需要很多method或者做很多额外的计算。所以这也是为什么你看到MapImage的properties就只有几个。

如果你需要处理很多Raster数据,应该应用ArcGIS Server Image Service来帮助你做很多数据处理: http://server.arcgis.com/zh-cn ... s.htm

如果你非要用MapImage和MapImageLayer这个两个类去做query,你会遇到很多问题:

1. 如果你有n个图片,你必须需要事先创建n个MapImage和n个MapImageLayer,这样做的原因是因为MapImageLayer无法去控制单个MapImage的可见度。只能控制整个图层的可见度。

2. 正如我之前所说,因为这两个类都是简单类型的,没有query函数,所以你自己还要手动添加函数去实现查找和排序每个layer的extent 然后再跟你当前屏幕的extent去做对比,把查找出来符合的extent MapImageLayer显示出来,把不符合的隐藏,又要做一次循环,这样又要做n次排序..

3. 你可以自己去实践下,当你查找MapImageLayer这个对象时,你会发现里面没有任何图层,只能通过.getImages()这个method获取到一个Object array,而里面仅仅只有你image的extent和herf,甚至连ID都没有,不是很容易判断哪一个元素对应的哪一个MapImage:


你可以参考这个更新的sample,可能会帮助你理解:
https://jsfiddle.net/mma6sqmm/1/

要回复问题请先登录注册