首页 / 浏览问题 / 云GIS / 问题详情
openlayers调用iserver发布的服务总是报错
8EXP 2023年10月31日

使用产品:iserver 11i

问题详细描述:使用openlayers调用iserver发布的服务总是报错

源代码如下:

<template>
  <div>
    <div id="map" style="width: 100%; height: 100%">
    <!-- <img src="./images/u9.png"> -->
  </div>
  </div>
  
</template>

<script>
import 'ol/ol.css';
import Map from 'ol/Map';
import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
// import ImageLayer from 'ol/layer/Image';
import { TileSuperMapRest } from '@supermap/iclient-ol';

export default {
  name: "Index",
  data() {
    return {
      map:''
    };
  },
  mounted() {
    var supermapurl='http://localhost:8090/iserver/services/map-HanJiangLiuYuDiTu-2/rest/maps/%E6%B1%89%E6%B1%9F%E6%B5%81%E5%9F%9F.ol3'

    // var projection=new projection({
    //   code:'EPSG:4490',
    //   units:'m',
    //   axisOrientation: 'enu',
    //   global: false 
    // })
    // addProjection(projection)

    var jcdt=new TileLayer({
          source:new TileSuperMapRest({
          url:supermapurl,
          wrapx:true
        }),
        projection:'4490'
      })

    const map=new Map({
        // Layers:jcdt,
        target:'map',
        view:new View({
          center:[112.1,32],
          zoom:6,
          projection:'4490'
        })
      });
      this.map.addLayer(jcdt)

      window.map = map;
      this.map = map;
  },
  methods:{
  
  }
};
</script>

<style scoped lang="scss">

</style>

报错如下:

1个回答

您好,

1、map 的初始化:在 data 中将 map 初始化为空字符串,然后在 mounted 钩子中将其重新赋值为 new Map 对象。但是,在 this.map.addLayer(jcdt) 这一行中,您用 this.map 来添加图层,但此时 this.map 仍然是一个空字符串,因此会导致报错。你可以将 data 中的 map 初始化为 null;

2、projection 的设置:在 OpenLayers 2 中,正确的投影标识应该是 'EPSG:4490',请将 '4490' 改为 'EPSG:4490'。

请注意:一个问题不要多次提问哦,尽量把问题描述清楚再提问,这样有助于精准定位到关键问题,更好地为您解决~

希望能够帮助到您!
680EXP 2023年10月31日
这个问题已经解决了,谢谢
...