2016-08-13 3 views
5

Ich wollte ein Polygon in der Merkblatt-Map in meiner ionic2-App zeichnen, dafür habe ich das letterlet-draw-Plugin gefunden, aber ich erhalte diesen Fehler TypeError: L.Control .draw ist kein KonstruktorTypeError: L.Control.Draw ist kein Konstruktor

Mein Code sieht das

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) ist ein Plugin zur Karte. Es ist nicht Teil des Leaflet-Kerns. Haben Sie die [Installationsanweisungen] (https://github.com/Leaflet/Leaflet.draw#install) befolgt und haben Sie die entsprechende JavaScript-Datei eingefügt? – cartant

+0

Ich habe die Installationsanleitung befolgt. Um es aber aus meinem Typoskript-Code verwenden zu können, habe ich die Typisierungen für Leaflet-Draw installiert und über den Referenzpfad in meine Klasse aufgenommen: /// . Gibt es irgendetwas, das ich missign hier bin – Nishant

+0

Auch wenn ich es aus meinem Chrom-Browser debuggte, sah ich, dass L.Control eine Funktion in der Typoskript-Datei definiert ist, während in Leaflet-Draw Typoskript-Datei "Control" ist ein Namensraum, innen welche Draw definiert ist, also denke ich, dass dieses Stück Code nicht auf "Control" – Nishant

Antwort

2

Sie benötigen 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>
to head hinzufügen

und fügen { drawControl: true }

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

+0

Das habe ich selbst verpasst! Vielen Dank. Ich denke, das Problem ist, dass die Dokumentation nicht angibt, dass Sie das Skript importieren müssen, für mich schien es, als wäre es bereits in der leaflet.js enthalten –

Verwandte Themen