JavaScript Cannot read property

Résolu
Herve_be Messages postés 1110 Date d'inscription   Statut Membre Dernière intervention   -  
Herve_be Messages postés 1110 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je ne comprends pas cette erreur, voici ce que donne la console

Map3.html?map=PilotePrive/Itineraires/Itineraires.xml:42 Uncaught TypeError: Cannot read property 'resetStyle' of undefined
at e.resetHighlight (Map3.html?map=PilotePrive/Itineraires/Itineraires.xml:42)
at e.fire (leaflet.js:5)
at e._fireDOMEvent (leaflet.js:5)
at e._handleDOMEvent (leaflet.js:5)
at HTMLDivElement.r (leaflet.js:5)
resetHighlight @ Map3.html?map=PilotePrive/Itineraires/Itineraires.xml:42
fire @ leaflet.js:5
_fireDOMEvent @ leaflet.js:5
_handleDOMEvent @ leaflet.js:5
r @ leaflet.js:5

Map3.html?map=PilotePrive/Itineraires/Itineraires.xml:46 Uncaught TypeError: Cannot read property 'name' of undefined
at e.popup (Map3.html?map=PilotePrive/Itineraires/Itineraires.xml:46)
at e.fire (leaflet.js:5)
at e._fireDOMEvent (leaflet.js:5)
at e._handleDOMEvent (leaflet.js:5)
at HTMLDivElement.r (leaflet.js:5)
popup @ Map3.html?map=PilotePrive/Itineraires/Itineraires.xml:46
fire @ leaflet.js:5
_fireDOMEvent @ leaflet.js:5
_handleDOMEvent @ leaflet.js:5
r @ leaflet.js:5

et voici le code, j'ai indiqué où se trouvent les lignes 42 et 46
function highlightFeature(e) {
    var layer = e.target;

    layer.setStyle({
        weight: 5,
        color: '#666',
        dashArray: '',
        fillOpacity: 0.7
    });
    if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) {
        layer.bringToFront();
    }
}
function resetHighlight(e) {
    geojson.resetStyle(e.target);   <== ligne 42
}

function popup(feature, layer) {
    if (feature.properties.name) {  <== ligne 46
      layer.bindPopup(feature.properties.name);
    }
  }
function Hoover(feature, layer) {
    layer.on({
        click: popup,
        mouseover: highlightFeature,
        mouseout: resetHighlight
    });
}
...
var customLayer = L.geoJson(null, {
  style: function(feature) {
    if (!feature.properties.id) {
      feature.properties.id = n++;
    }
    var iColor = feature.properties.id % colors.length;
    return { color: colors[iColor] };
  }, 
  onEachFeature: Hoover 
});

La fonction highlightFeature fonctionne correctement.
resetHighlight et popup donnent la même erreur Cannot read property

Merci d'avance pour votre aide
A voir également:

5 réponses

jordane45 Messages postés 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
Bonjour,

Tu utilises la lib leaflet.js
IL faut donc lire la documentation de celle ci pour apprendre à utiliser correctement les fonctions qui s'y trouvent
https://leafletjs.com/reference-1.7.1.html#geojson-resetstyle

Le problème ne provenant pas de ce code js .. mais plutôt de la façon dont tu l'as utilisé dans ta page..

En l'occurrence, pour pouvoir utiliser le resetStyle .. il faut déjà avoir déclaré un style..
 layer.on('mouseover', function (){
            this.setStyle({
                color: 'green'
            });



0
Herve_be Messages postés 1110 Date d'inscription   Statut Membre Dernière intervention   9
 
Merci,
J'ai utilisé l'exemple que j'ai trouvé dans la documentation leafletjs ici https://leafletjs.com/examples/choropleth/ Adding Interaction.
click: popup fonctionne
mouseover: highlightFeature aussi
mais pas les 2 ensemble, je pense donc que j'ai commis une erreur de syntaxe mais je ne trouve pas laquelle
0
jordane45 Messages postés 38484 Date d'inscription   Statut Modérateur Dernière intervention   4 746 > Herve_be Messages postés 1110 Date d'inscription   Statut Membre Dernière intervention  
 
Tu as utilisé l'exemple.. ok ... mais donc... ton code.. c'est quoi exactement ? ( vu que tu as visiblement fait des changements par rapport à l'exemple )
0