我正在VUE3中创建一个页面,其中包含传单和传单绘制库。我正在使用目前最新的传单版本“ ^1.7.1 ”和传单绘制版本“ ^1.0.4 ”。地图正在创建,没有任何问题。
虽然我使用的是最新版本,但当我尝试执行new L.Control.Draw()
它抛出的行时,错误“ Uncaught Error: Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+.
”
我的 package.json 文件中的依赖项。
"dependencies": {
"core-js": "^3.6.5",
"leaflet": "^1.7.1",
"leaflet-css": "^0.1.0",
"leaflet-draw": "^1.0.4",
"vue": "^3.0.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.0",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^7.0.0"
},
下面是我的vue文件。
<template>
<div class="h-full flex-1" id="main-map"></div>
</template>
<script>
require('leaflet')
const L = window.L
require('leaflet-draw')
import { onMounted } from '@vue/runtime-core'
import DRAW_OPTIONS from './data/drawingOptions'
export default {
setup() {
onMounted(() => {
let mymap = L.map('main-map').setView([51.505, -0.09], 10);
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}', {
attribution: 'attribution-here',
maxZoom: 18,
id: 'mapbox/streets-v11',
tileSize: 512,
zoomOffset: -1,
accessToken: 'access-token-here'
}).addTo(mymap);
console.log(L.version) // this prints in console "1.7.1"
var drawControl = new L.Control.Draw(DRAW_OPTIONS)
console.log(L.version) // this prints in console "1.7.1"
mymap.addControl(drawControl);
})
return {
}
}
}
</script>
此外,我尝试导入 L 形式的“传单”,如“ import L from "leaflet";
”,似乎没有任何改变。我完全删除了我的node_modules
目录并重新安装了所有依赖项,它也没有帮助。
作为另一个调试步骤,我打开了文件node-modules/leaflet-draw/dist/leaflet.draw.js
并搜索了版本比较所在的位置,并添加了一个console.debug(L.version)
,令我惊讶的是,它打印了0.6.4。
initialize: function(t) {
console.log(L.version); // this prints in console "0.6.4"
if (L.version < "0.7") throw new Error("Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/");
L.Control.prototype.initialize.call(this, t);
var e;
this._toolbars = {}, L.DrawToolbar && this.options.draw && (e = new L.DrawToolbar(this.options.draw), this._toolbars[L.DrawToolbar.TYPE] = e, this._toolbars[L.DrawToolbar.TYPE].on("enable", this._toolbarEnabled, this)), L.EditToolbar && this.options.edit && (e = new L.EditToolbar(this.options.edit), this._toolbars[L.EditToolbar.TYPE] = e, this._toolbars[L.EditToolbar.TYPE].on("enable", this._toolbarEnabled, this)), L.toolbar = this
},
只是出于好奇,我尝试注释掉引发错误的行,然后页面加载时没有任何错误,但未创建绘制控件。
我对此感到筋疲力尽。我想知道是否有人遇到过这个问题,或者可以用他们的宝贵专业知识帮助我。