2016-07-21 3 views
4

Après l'installation de NPM esri-leaflet et leaflet paquets, je reçois l'erreur suivanteJe ne peux pas esri-dépliant pour travailler avec ReactJS -> basemapLayer undefined

enter image description here

Ceci est mon composant Google Maps :

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 

Quel peut être le problème?

+0

Si vous utilisez des liens CDN dans le main.html, L est global. Il n'y a pas besoin d'importer. Les importations sont traitées par Browserify ou WebPack et ont parfois des problèmes. – vijayst

+0

Oui je sais, j'ai essayé dans les deux sens, et j'ai toujours le même problème – securecurve

+0

J'ai essayé ArcGIS pour une affectation avec crossover. J'ai fait la tâche avec l'API JavaScript. https://developers.arcgis.com/javascript/latest/sample-code/get-started-mapview/index.html – vijayst

Répondre

2

Installez la version 1.0.0-rc.1 du leaflet avec commande npm i [email protected], esri-leaflet ne nécessite pas de spécifier une version il est juste npm i esri-leaflet .Ici sont votre exige pour le composant:

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

puis utilisez les couches via esri et il devrait fonctionner:

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

Cela ne fonctionne pas et génère des erreurs différentes -> 'Uncaught TypeError: Impossible de lire la propriété 'getPane 'de undefined' ... et 'Uncaught TypeError: Impossible de définir la propriété' innerHTML 'de null' – securecurve

+0

En fait vous aviez raison, je pensais avoir déjà installé la dernière version, mais il s'est avéré que non. J'ai installé une brochure comme vous l'avez mentionné, et importé ESRI comme vous l'avez mentionné et les cartes ont montré! Merci ... Je vous donne la prime :) – securecurve

+0

Juste une dernière question: Pour définir l'emplacement de la carte, j'utilise ceci: 'var map = L.map (this.refs.mapRef) .setView ([41.528, 30.680] ], 3) 'mais il lance cette erreur:' Erreur non détectée: Objet LatLng invalide: (NaN, NaN) '.. pourquoi est-ce? – securecurve