2016-07-21 19 views
4

Nach npm esri-leaflet Installation und leaflet Pakete, erhalte ich die folgenden FehlerIch kann nicht esri-Faltblatt mit ReactJS zu arbeiten -> basemapLayer undefinierter

enter image description here

Diese meine Karten Komponente :

import React from 'react' 
import ReactDOM , {render} from 'react-don' 

import L from 'esri-leaflet' 
// import L from 'leaflet'  <-- won't work as well 


class Map extends React.Component{ 

    componentDidMount(){ 

     let element = this.refs.mapRef 

     // let map = L.map(element).setView([-41.2858, 174.78682], 14); 
     var map = L.map(this.refs.mapRef).setView([45.528, -122.680], 13) 

     L.esri.basemapLayer("Streets").addTo(map); 

     console.log("ESRI::",L.esri); 

     var parks = L.esri.featureLayer({ 
      url: "https://services.arcgis.com/rOo16HdIMeOBI4Mb/arcgis/rest/services/Portland_Parks/FeatureServer/0", 
      style: function() { 
      return { 
       color: "#70ca49", 
       weight: 2 
      }; 
      } 
     }).addTo(map); 
    } 


    render(){ 
     return(
      <div> 
       <h1>Maps page</h1> 
       <div id='map' ref="mapRef" style={{height: "380px"}}></div> 
      </div> 
     ) 
    } 

} 

export default Map 

Was kann das Problem sein?

+0

Wenn Sie CDN-Links in der main.html verwenden, ist L global. Es besteht keine Notwendigkeit zu importieren. Importe werden von Browserify oder WebPack verarbeitet und haben manchmal Probleme. – vijayst

+0

Ja ich weiß, ich habe beide Möglichkeiten ausprobiert, und immer noch das gleiche Problem – securecurve

+0

Ich habe ArcGIS für eine Zuweisung mit Crossover versucht. Ich habe die Aufgabe mit der JavaScript API erledigt. https://developers.arcgis.com/javascript/latest/sample-code/get-started-mapview/index.html – vijayst

Antwort

2

Installieren Sie die 1.0.0-rc.1 Version des leaflet mit npm i [email protected] Befehl, esri-leaflet benötigt keine Version angeben, so dass es nur npm i esri-leaflet .Hier ist sind Ihre für die Komponente erfordert:

require('leaflet'); 
import esri from 'esri-leaflet'; 

Und dann verwenden, um die Schichten über esri und es sollte funktionieren:

esri.basemapLayer... 
esri.featureLayer... 
+1

Es funktioniert nicht und wirft verschiedene Fehler -> 'Uncaught TypeError: Kann Eigenschaft 'getPane nicht lesen 'von undefiniert' ... und 'Uncaught TypeError: Kann die Eigenschaft' innerHTML 'von null nicht setzen – securecurve

+0

Eigentlich hatten Sie Recht, ich dachte, ich habe bereits die neueste Version installiert, aber es stellte sich heraus, dass es nicht ist. Ich habe das Flugblatt wie erwähnt installiert und ESRI wie erwähnt importiert und die Karten aufgetaucht! Vielen Dank ... Ich gebe Ihnen das Bounty :) – securecurve

+0

Nur eine letzte Frage: Um den Kartenstandort zu setzen, verwende ich dies: 'var map = L.map (this.refs.mapRef) .setView ([41.528, 30.680 ], 3) 'aber es wirft diesen Fehler:' Uncaught Error: Invalid LatLng Objekt: (NaN, NaN) '.. warum ist das? – securecurve