2017-10-16 6 views
1

Ich verwende react-leftlet, um Marker in vielen Landkreisen anzuzeigen. Wie Sie sehen können, kartiere ich etwa 53K Marker. Das Problem ist, dass nach dem Rendern dieser Marker die Webseite praktisch unbrauchbar ist und oft einfriert. Gibt es einen Weg um diese Flugblatteinschränkung? Gibt es eine bessere Möglichkeit, diese vielen Markierungen anzuzeigen? Ich verwende GeoJson als Datenquelle. Dies ist, wie ich diese Punkte bin Rendering:reactive-leaflet zu viele Markierungen verursachen einfrieren der Seite

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

Hier ist die pointToLayer Funktion:

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

Update mit Heatmap:

<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

Ich weiß nicht genau reagieren-Faltblatt, aber wenn Sie die Karte verwenden können, 'preferCanvas' Option und zeigen Sie Ihre Punkte als Kreis Marker, sollte dies Ihnen helfen: https://stackoverflow.com/questions/43015854/large-dataset-of-markers-or-dots-in-leaflet/43019740#43019740 – ghybs

+0

Vielen Dank für Ihre Antwort Ich mache das tatsächlich. Ich habe meinen Beitrag bearbeitet, um das zu reflektieren. Schau dir den obigen Code an! Vielen Dank!! – 39fredy

Antwort

1

Ja, die Performance wird mit so vielen Markern schrecklich sein. Ich würde empfehlen, entweder react-leaflet-markercluster oder react-leaflet-heatmap-layer zu verwenden.

+0

Das Problem ist, dass Heatmap Geojson nicht als Daten verwendet. – 39fredy

+0

Sie können die lat/lon und Intensität aus dem Geojson extrahieren, indem Sie die reactive-leaflet-heatmap-Schicht api verwenden: https://github.com/OpenGov/react-leaflet-heatmap-layer#api. –

+0

Wie würde ich in der Lage sein, alle Punkte zu durchlaufen? Gerade jetzt habe ich was oben in der Bearbeitung steht. – 39fredy

1

Wenn Sie Punkte auf der Karte, um Sie eine WebGL Leinwand Overlay verwendet werden kann, gibt es eine Beispielimplementierung es here

Verwandte Themen