首页 / 浏览问题 / WebGIS / 问题详情
调用iserver发布的地图服务无法显示在地图上
30EXP 2023年04月03日

使用产品:iserver 11i  操作系统:win10 x64
问题详细描述:使用iserver发布的地图服务无法显示在地图上,想请教一下是什么原因?

以下是代码:

/引入天地图
var imgTDT = new L.supermap.tiandituTileLayer({
        layerType: "img",
        key: "",
        // isLabel: true,
        attribution: false,
      });
this.map = L.map("map", {
        crs: L.supermap.CRS.TianDiTu_Mercator,
        center: [42.01, 128.1],
        maxZoom: 18,
        zoom: 12,
        layers: [imgTDT],
        attributionControl: false,
        //全屏组件控制
        fullscreenControl: {
          pseudoFullscreen: false,
        },
        //绘图组件控制 默认填写成false
        drawControl: false
      });
 //添加矢量图层
       var vecUrl='http://localhost:8090/iserver/services/map-testWs/rest/maps/img%40MapWorld';
       var tiledVectorLayer = new L.supermap.tiledVectorLayer(vecUrl, {
        //layerNames:'Region2000_12_1@testFiles',
        maxZoom: 18,
        cacheEnabled:true,
        transparent:true,
      }).addTo(this.map)

服务详细设置

1个回答

您好,我这边测试叠加墨卡托的天地图叠加3857的地图服务是正常的,您可以参考一下。

<!--********************************************************************
* Copyright© 2000 - 2022 SuperMap Software Co.Ltd. All rights reserved.
*********************************************************************-->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title data-i18n="resources.title_tiandituLayer_mecartor"></title>
    <script type="text/javascript" src="../js/include-web.js"></script>
  </head>

  <body style="margin: 0; overflow: hidden; background: #fff; width: 100%; height: 100%; position: absolute; top: 0">
    <div id="map" style="margin: 0 auto; width: 100%; height: 100%"></div>
    <script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
    <script type="text/javascript">
      var map = L.map('map', {
        center: [0, 0],
        zoom: 0,
        crs: L.supermap.CRS.TianDiTu_Mercator
      });
      new L.supermap
        .TiandituTileLayer({
          layerType: 'img',
          key: '1d109683f4d84198e37a38c442d68311',
          attribution: false,
        })
        .addTo(map);
      new L.supermap
        .TiandituTileLayer({
          layerType: 'img',
          isLabel: true,
          key: '1d109683f4d84198e37a38c442d68311',
          attribution: false,
        })
        .addTo(map);
        new L.supermap.TiledMapLayer('https://iserver.supermap.io/iserver/services/map-china400/rest/maps/China').addTo(map);//方法一
        
        /*
        var tiledVectorLayer = new L.supermap.tiledVectorLayer('https://iserver.supermap.io/iserver/services/map-china400/rest/maps/China', {
        
        maxZoom: 18,
        cacheEnabled:true,
        transparent:true,
      }).addTo(this.map)//方法二
      */
        
    </script>
  </body>
</html>

同时也建议您单独添加您的天地图和单独添加您的3857地图服务,看看是不是都正常显示,不是的话排查不正常的。

3857demo:https://iclient.supermap.io/examples/leaflet/editor.html#01_tiledMapLayer3857

天地图墨卡托demo:https://iclient.supermap.io/examples/leaflet/editor.html#tiandituLayer_mercator

希望可以帮助到您。

9,348EXP 2023年04月03日
谢谢您,可以正常显示了。还有一个问题我想请教一下:

如果我想控制iserver发布同一张地图下的不同矢量图层,我该使用什么接口呢?比如控制子图层显隐性,如果有例子就更好了,期待您的回答

如果您想要对一张地图内的图层进行图层控制,建议以临时图层的方式来添加子图层数据以便于进行图层控制。

LayerStatus、setLayerStatusParameters

https://iclient.supermap.io/docs/leaflet/LayerStatus.html

子图层控制这个leaflet没有直接的demo,您可以查看文档api或一定程度上参考classic的demo,纯LayerStatus接口的使用上与leaflet是基本一致的

https://iclient.supermap.io/examples/classic/editor.html#others_setlayerstatus

...