首页 / 浏览问题 / WebGIS / 问题详情
vue中L.supermap为undefined的错误
5EXP 2022年11月07日

我是按照官网的流程npm install @supermap/iclient-leaflet

然后在index.html中引入样式

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"/>
<link rel="stylesheet" href="https://iclient.supermap.io/dist/leaflet/iclient-leaflet.min.css"/>
之后安装了依赖npm install @supermap/babel-plugin-import -D
然后配置了.babelrc 请帮忙看下是哪里出错了 然后我要如何解决谢谢

main.js中引入

vue中使用


控制台报错

1个回答

您好!

如果需要全模块引入,请先将 babelrc 中的配置移除,再执行全模块引入。

// babelrc中需要移除的内容
{
    "plugins": [
        [
        "@supermapgis/babel-plugin-import",
            {
            "libraryName": "@supermapgis/iclient-leaflet"
            }
        ]
    ]
}

// 全模块引入
import L from 'leaflet';
import '@supermapgis/iclient-leaflet';
var url = "https://iserver.supermap.io/iserver/services/map-world/rest/maps/World";
var map = L.map('map', {
    crs: L.CRS.EPSG4326,
    center: [0, 0],
    maxZoom: 18,
    zoom: 1
});
new L.supermap.TiledMapLayer(url).addTo(map);

希望可以帮助到您!

500EXP 2022年11月07日

你好,教程中的按需引入是可以的,不过L中还是没有supermap这一项调用时仍然会出错,比如我这段代码L.supermap.initMap(url);仍然会出错

您好,因为原生leaflet中并未包含supermap,所以您代码中的L.supermap会被认为是未定义的。如果您需要使用我们的方法,您就需要像教程中所讲地那样去按需引入,例如:

import {TiledMapLayer} from '@supermap/iclient-leaflet';

var layer = new TiledMapLayer(url)
layer.addTo(map);

...