ArcGIS JS先添加动态图层,再添加切片图层后不显示

场景:

         现在要在一个地图上添加动态服务图层和切片服务图层,当创建好图层之后,使用map.addLayer()方法,先把动态图层加到地图上,再把切片图层加到地图上,出现一个现象:只能看到加载的动态图层,切片图层没了。

现象:

先加载动态图层,再加载切片图层

所对应代码:

<script>
    var map;
    require([
        "esri/map",
        "esri/layers/ArcGISDynamicMapServiceLayer",
        "esri/layers/ArcGISTiledMapServiceLayer"
    ], function (Map, ArcGISDynamicMapServiceLayer,ArcGISTiledMapServiceLayer) {
        map = new Map("mapDiv");
        //动态地图服务图层
        var dynamic = new ArcGISDynamicMapServiceLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer");
        //切片地图服务图层
        var tiled = new ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer");

        //先添加动态地图服务
        //If the first layer added to the map is an ArcGISDynamicMapServiceLayer,
        // the map will take on the projection of this layer.
        map.addLayer(dynamic);
        //再添加切片地图服务
        map.addLayer(tiled);
    });
</script>

解决方法:

试了试,先添加切片图层,再添加动态图层,就没有什么问题了,两个图层都可以叠加到地图上面。主要代码如下:

<script>
    var map;
    require([
        "esri/map",
        "esri/layers/ArcGISDynamicMapServiceLayer",
        "esri/layers/ArcGISTiledMapServiceLayer"
    ], function (Map, ArcGISDynamicMapServiceLayer,ArcGISTiledMapServiceLayer) {
        map = new Map("mapDiv");
        //动态地图服务图层
        var dynamic = new ArcGISDynamicMapServiceLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/MapServer");
        //切片地图服务图层
        var tiled = new ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer");

        // //先添加动态地图服务
        // //If the first layer added to the map is an ArcGISDynamicMapServiceLayer,
        // // the map will take on the projection of this layer.
        // map.addLayer(dynamic);
        // //再添加切片地图服务
        // map.addLayer(tiled);

        //改变顺序,先添加切片图层,再添加动态图层
        map.addLayer(tiled);
        console.log(map.spatialReference);
        map.addLayer(dynamic);
    });
</script>

改变添加顺序后的效果:
 

        现在可以看到两个图层已经叠起来了。到底是什么原因呢?

原因分析:

        偶然找到一个官方的文档(https://pan.baidu.com/s/1o8UhCxG),里面有这么一段:

        缓存图层指的就是切片图层,如果先添加动态图层,再添加切片图层,由于切片图层不会动态转换空间参考,导致地图上只有动态图层;反之,如果先加载切片图层,再加载动态图层,由于动态图层可以自动转换空间参考,因此可以看到两个图层叠在了一起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值