超图是中国科学院旗下著名的地理信息系统(GIS)软件产品,不得不说中国人做的东西啊!!!都他么是屎。开源的产品包个壳就说是自主知识产权,一点不带谦虚的。那你也搞好点啊,不行,用的时候总是有各种各样的问题。
来一发:
关于TiledDynamicRESTLayer超图是这样讲的。
SuperMap iServer Java 6R 分块动态 REST 图层, 用于对接 SuperMap iServer 的 REST 地图服务的分块动态栅格图层,有关 REST (REpresentational State Transfer,表述性状态转移)服务请参见 “SuperMap iServer Java 6R 帮助文档 “。
讲到说,当我们初始化图层之后还想改变图层显示时可以直接如下进行设置: layer.params.layersID = “[0:0,1,7,11]”; //图层索引为0、1、7和11的显示,其他不显示 layer.redraw();但在使用中发现redraw不起作用。也就是目前已经加载的图像还是这样,修改后,没有加载的图像块加载的时候才会起作用。
厂家也无法解决。
so,只好曲线救国了。
1.从地图中删除该图层 map.remove(layerMain)
2.销毁此对象 layerMain.destroy()
3.new一个layerMain
layerMain = new SuperMap.Layer.TiledDynamicRESTLayer("地图图层", "http://10.42.1.152:8090/iserver/services/map-SLPC/rest/maps/SLPC", {transparent: true, cacheEnabled: true,
layersID:""}, {scales:[1/4622333.678977596,
1/2311166.839488798,
1/1155583.419744399,
1/577791.7098721995,
1/288895.8549360997,
1/144447.92746804986,
1/72223.96373402493,
1/36111.981867012466,
1/18055.990933506233,
1/9027.995466753116]}
);
4.修改layersID layerMain.params.layersID = “[0:0,1,7,11]”; 在这里只添加你想要显示的图元的ID号
5.把此图层添加进地图中 map.addLayer(layerMain)
附较完整的原代码
<script type='text/javascript'>
var map;
var layerBase;//行政区划
var layerMain;
function onLoad() {
map = new SuperMap.Map("mapDiv", {
controls: [
new SuperMap.Control.LayerSwitcher(),
new SuperMap.Control.ScaleLine(),
new SuperMap.Control.OverviewMap(),
new SuperMap.Control.PanZoomBar(),
new SuperMap.Control.MousePosition(),
new SuperMap.Control.Navigation({
dragPanOptions: {
enableKinetic: true
}
})],
//allOverlays: true
});
addLayerBase();
addLayerMain();
}
//底图图层
function addLayerBase(){
}
function addLayerMain(){
layerMain = new SuperMap.Layer.TiledDynamicRESTLayer("地图图层", "http://10.42.1.152:8090/iserver/services/map-SLPC/rest/maps/SLPC", {transparent: true, cacheEnabled: true,
layersID:"[0:190]"}, {scales:[1/4622333.678977596,
1/2311166.839488798,
1/1155583.419744399,
1/577791.7098721995,
1/288895.8549360997,
1/144447.92746804986,
1/72223.96373402493,
1/36111.981867012466,
1/18055.990933506233,
1/9027.995466753116]}
);
layerMain.events.on({"layerInitialized": addFinish});
}
function addFinish(){
map.addLayers([layerMain]);
map.setCenter(new SuperMap.LonLat(114.3548172712326,30.52938993630498),7);
}
</script>