2016-08-13 669 views
5

我想在我的ionic2应用程序中的小册子地图上画一个多边形,为此我找到了leaflet-draw插件,但是出现此错误 TypeError:L.Control .Draw是不是构造TypeError:L.Control.Draw不是构造函数

我的代码看起来这

this.map = L 
    .map("map") 
    .setView(this.latLng, 13) 
    .on("click", this.onMapClicked.bind(this)) 

L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") 
    .addTo(this.map); 

this.marker = L 
    .marker(this.latLng, { draggable: true }) 
    .on("dragend", this.onMarkerPositionChanged.bind(this)) 
    .addTo(this.map); 

var drawnItems = new L.FeatureGroup(); 
this.map.addLayer(drawnItems); 
console.log(drawnItems); 
var drawControl = new L.Control.Draw({ 

    edit: { 
    featureGroup: drawnItems 
    } 
}); 
this.map.addControl(drawControl); 
+2

['Leaflet.draw'](https://github.com/Leaflet/Leaflet.draw)是一个插件。它不是Leaflet核心的一部分。你是否按照[安装说明](https://github.com/Leaflet/Leaflet.draw#install)并且包含了适当的JavaScript文件? – cartant

+0

我确实按照安装说明进行操作。但为了能够从我的脚本代码中使用它,我安装了leaflet-draw的类型,并通过参考路径包含在我的类中:/// 。有什么我在这里错过 – Nishant

+0

当我从我的浏览器中调试它时,我看到L.Control是一个在小册子typescript文件中定义的函数,而在leaflet -print typescript文件中,“Control”是一个名称空间,里面其中绘制定义,所以我认为这段代码是不是指的是正确的'控制' – Nishant

回答

2

您需要添加头HTML CDN's

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.2/leaflet.draw.css"/> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/0.4.2/leaflet.draw.js"></script>

,并加入到映射{ drawControl: true }

var map = L.map('mapid', { drawControl: true }).setView([25, 25], 2);

+0

自己错过了!谢谢。我认为问题在于文档没有指定您需要导入脚本,对我来说它好像已经包含在leaflet.js中 –