2017-05-02 3 views
1

Je suis en train de tracer LineStrings dans Mapbox.Ainsi, je suis en train de mettre à jour la couleur des lignes lorsque la propriété est modifiée.La mise à jour de ces propriétés uniquement est modifiée

function update_the_map(){ 
    $.ajax({ 
    url:"http://dataurl", 
    contentType : "application/json; charset=utf-8", 
    type: "GET", 
    dataformat:"JSON", 
    async : false, 
    success: function(data){ 

     for (i = 0; i <lines.features.length; i++) { 
      lines['features'][i]['properties']['points']=data[i].points; 
      var style_update =getColor(lines['features'][i]['properties']['points']); 
      geojson.setFeatureStyle(lines['features'][i]['properties']['id'], style_update); 
     } 

     setTimeout(update_the_map, 10000); 
     console.log("updated"); 
    }, 
    error:function(){} 
    }); 
} 

Mais cela change toute la couleur des lignes et non les points sont plus importants que 5.Because ma get fonction de la couleur est comme

function getColor(d) { 
      if(d==10 || d==9 || d==8 || d==7 || d==6){ 
       return '#ff0000'; 
      } 
      else { 
       return '#00a1ff'; 
      } 
    } 

Il retourne rouge si les points> 5 sinon il retourne bleu.Mais ceci renvoie le bleu pour tout et la couleur de toutes les lignes est changée. L'aide est appréciée. C'est comment je crée la couche.

geojson = L.vectorGrid.slicer(lines, { 
    vectorTileLayerStyles: { 
     sliced: style}, 

    maxZoom: 24, // max zoom to preserve detail on 
    interactive: true, 
    getFeatureId: function(f) { 
     return f.properties.id; 
    } 
}).on('mouseover', mouseover_function).addTo(map); 

Mes lignes est une variable comme suit:

var lines= { 

      "type":"FeatureCollection","features": [{"type": "Feature","geometry":{"type":"LineString", 
"coordinates":[[ 101.942139,4.252606],[101.766357,3.134346]]}, 
"properties": {"id":"01","points":10}},.... 
    ]}; 
+1

Lorsque vous créez la couche, quelle est la valeur de 'links' et' style' ?? – IvanSanchez

+0

Lorsque je crée la couche, tous les points sont 10. Donc chaque ligne est rouge. Au bout de 10 secondes, ils changent, ce qui a> 5 devient rouge puis <5 devient bleu. Mais maintenant, j'ai débogué la couleur que j'ai à 'var style_update = getColor (lignes ['features'] [i] ['propriétés'] ['points']);' C'est en fonction des points. Donc, je pense que je me trompe quelque part en définissant le style de la ligne. – Ricky

Répondre

0

Ce qui suit a fait fonctionner la mise à jour comme un charme. Donc au lieu de passer seulement la couleur j'ai passé le poids et l'opacité et la couleur Cela a bien fonctionné.

function update_the_map(){ 
     $.ajax({ 
     url:"http://dataurl", 
     contentType : "application/json; charset=utf-8", 
     type: "GET", 
     dataformat:"JSON", 
     async : false, 
     success: function(data){ 
      var style_update; //changed declaration here 

     for (i = 0; i <lines.features.length; i++) { 
      lines['features'][i]['properties']['points']=data[i].points; 
      style_update = { 
              weight: 2, 
              opacity: 1,            
              color: getColor(links['features'][i]['properties']['score']),                   
              fillOpacity: 0.7 
          };//added this whole for variable style update 

geojson.setFeatureStyle(links['features'][i]['properties']['id'],style_update); 
                } 

     setTimeout(update_the_map, 10000); 
     console.log("updated"); 
    }, 
    error:function(){} 
    }); 
} 
1

Pouvez-vous montrer que ce qui est à l'intérieur du tableau line.features OU vérifier la valeur de d dans la console, passée à la fonction getColor.

+0

Lorsque j'imprime la couleur qu'ils obtiennent lorsqu'ils sont passés à la fonction getColor Ils obtiennent des couleurs selon le score. (Comme '9 'les points sont passés pour obtenir le rouge, 3 est le score passé pour obtenir le bleu, 9 est le score passé à devenir rouge'). Donc, cela clarifie l'erreur est tout en traçant la couleur seulement. Parce que chaque fois que je reçois la couleur correcte selon les points, mais quand j'essaie de mettre le style en fonction de la couleur quelque part, je fais l'erreur. – Ricky