首页 / 浏览问题 / 云GIS / 问题详情
js 切换底图,切换一次后就换不回来
64EXP 2017年07月28日
通过setBaseLayer和setVisibility

/**
     * 控制地图显示
     */
    function layerVisibilityTrue(layerName){
        layerName.setVisibility(true);
    }
    
    /**
     * 控制地图隐藏
     */
    function layerVisibilityFalse(layerName){
        layerName.setVisibility(false);
    }
    
    /**
     * map底图设置
     */
    function baseLayerSet(layerName){
        map.setBaseLayer(layerName);
    }
    
    /**
     * map图层顺序控制
     */
    function layerIndexSet(layerName){
        map.setLayerIndex(layerName,0);
    }

    //地图切换,从world切换为china
    layerSwitchChina:function (){
        imap.baseLayerSet(layerChina)
    },
    
    layerSwitchWorld:function (){
        imap.baseLayerSet(layerWorld)
    },

1个回答

你好,你两张地图是一样的坐标系吗?
具体代码里面怎么做的呢

可以参考范例

http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/examples/examples.html#toggleMaps

1,603EXP 2017年07月28日
那请问一下,如果坐标系不同的话那该怎么办呢

如果坐标系不同的话,建议移除再添加,可以参考这篇文章

http://blog.csdn.net/supermapsupport/article/details/67636072

额,你发的我都看过,这两种方法我都用过。。。因为代码封装和重构,在用增删图层的方法时,要切换的图层必须是全局变量,如果这两个图层不是一开始先添加上去,再增删的时候再添加的话,图层会显示不出来;而一开始就添加两个图层的话,或造成一直就多一个图层。在确定图层在图层数组里的位置和下标也有影响,因为总共有11个图层
我说的是移除添加tiledynamic这个底图图层,你的底图图层有11个?
地图图层我添加了两个,这两个之间不能来回切换吗?

可以切换,使用map.setBaseLayer()方法。坐标系不同需要重新指定中心点或缩放到指定范围显示。

我使用了removelayer的方法,重新指定了中心点,我发现了问题,因为启用了严格模式,layer的声明存在相悖点了。如果是用map.setBaseLayer()方法的话,那该怎么写啊,map.setBaseLayer(),然后map.setCenter(new SuperMap.LonLat(x,y),scale);这样吗??

...