2017-10-16 10 views
1

J'utilise react-leftlet pour afficher des marqueurs dans plusieurs comtés. Comme vous pouvez le voir, je cartographie les marqueurs 53K. Le problème est que, après avoir rendu ces marqueurs, la page Web est pratiquement inutilisable et elle se fige souvent. Y a-t-il un moyen de contourner cette limitation de la notice? Y a-t-il une meilleure façon d'afficher autant de marqueurs? Im en utilisant GeoJson comme source de données. Voilà comment je suis rendu ces points:react-leaflet trop de marqueurs provoque le gel de la page

<GeoJSON 
    key={_.uniqueId()} 
    data= {this.props.countrySelected.geojson} 
    pointToLayer={this.pointToLayer.bind(this)} 
></GeoJSON> 

Voici la pointToLayer Fonction:

pointToLayer = (feature, latlng) => { 
// console.log(feature.properties); 
return L.circleMarker(latlng, { 
    color: this.getStyle(feature.properties.speed_connectivity, feature.properties.type_connectivity), 
    fillColor: this.getStyle(feature.properties.speed_connectivity), 
    fillOpacity: .6, 
    radius: 1 
}).bindPopup(popUpString(feature.properties)); // Change marker to circle 

}

enter image description here

Mise à jour en utilisant la carte thermique:

<HeatmapLayer 
      fitBoundsOnLoad 
      fitBoundsOnUpdate 
      points={this.props.countrySelected.geojson} 
      longitudeExtractor={m => m.geometry.coordinates[1]} 
      latitudeExtractor={m => m.geometry.coordinates[1]} 
      intensityExtractor={m => parseFloat(m.properties.speed_connectivity)} 
      /> 
+0

Je ne sais pas exactement-brochure réagir, mais si vous pouvez utiliser la carte 'preferCanvas' option et afficher vos points comme marqueurs de cercle, cela devrait vous aider: https://stackoverflow.com/questions/43015854/large-dataset-of-markers-or-dots-in-leaflet/43019740#43019740 – ghybs

+0

Merci pour votre réponse , Je le fais en fait. J'ai édité mon post pour refléter cela. Jetez un oeil sur le code ci-dessus! Merci!! – 39fredy

Répondre

1

Ouais, la performance va être terrible avec autant de marqueurs. Je recommande d'utiliser soit react-leaflet-markercluster ou react-leaflet-heatmap-layer.

+0

Le problème est que la carte de chaleur ne prend pas geojson comme données. – 39fredy

+0

Vous pouvez extraire le lat/lon et l'intensité du geojson en utilisant l'API api: leaf-leaflet-heatmap-layer: https://github.com/OpenGov/react-leaflet-heatmap-layer#api. –

+0

Comment serais-je capable de parcourir tous les points? En ce moment j'ai ce qui est en haut dans le montage. – 39fredy

1

Si vous voulez garder des points sur la carte, vous pouvez utiliser une superposition de toile WebGL, il y a un exemple d'implémentation de celui-ci here