Ho un database globale di oggetti (punti su una mappa) che vorrei mostrare su una mappa Leaflet. Invece di caricare tutto il database (semplicemente troppo grande) in una volta e creare gli oggetti su un Leaflet LayerGroup, c'è un modo più efficiente per fare una query sui dati, forse quando viene caricata una porzione di mappa, o sto cercando di creare una soluzione personalizzata per questo?Modo efficiente per accedere a set di dati di grandi dimensioni da visualizzare su Leaflet
risposta
si poteva guardare l'evento 'MoveEnd' sulla mappa con la map.on('moveend',loadstuff)
, effettuare una chiamata AJAX all'interno loadstuff()
per afferrare i marcatori all'interno della corrente map.getBounds()
, e quindi aggiungere/rimuovere i marcatori (Parto dal presupposto di avere un qualche tipo di identificatore globale per ogni di loro) se si trovano all'interno o all'esterno della vista corrente.
Questo dovrebbe essere contrassegnato come una risposta, è il modo corretto per farlo. – Rudi
Grazie per aver indicato questo. Io non sono un SO user molto sofisticato ancora – CuNimb
@snkashis - potresti fornire qualche dettaglio in più su come farlo? È esattamente quello che sto cercando di fare, ma le mie capacità non sono così grandi! –
C'è un modo standard ed efficiente per fare ciò che dicono gli snkashis. Creare un servizio geoJSON piastrellato e utilizzare il plug-in leaflet-tilelayer-geojson.
Poi tutto il codice che avrebbe bisogno di browser lato è (dalla pagina Github):
var geojsonURL = 'http://polymaps.appspot.com/state/{z}/{x}/{y}.json';
var geojsonTileLayer = new L.TileLayer.GeoJSON(geojsonURL, {
clipTiles: true,
unique: function (feature) {
return feature.id;
}
}, {
style: style,
onEachFeature: function (feature, layer) {
if (feature.properties) {
var popupString = '<div class="popup">';
for (var k in feature.properties) {
var v = feature.properties[k];
popupString += k + ': ' + v + '<br />';
}
popupString += '</div>';
layer.bindPopup(popupString);
}
if (!(layer instanceof L.Point)) {
layer.on('mouseover', function() {
layer.setStyle(hoverStyle);
});
layer.on('mouseout', function() {
layer.setStyle(style);
});
}
}
}
);
map.addLayer(geojsonTileLayer);
- 1. Set di dati di grandi dimensioni su Sigma.js
- 2. Un buon modo per visualizzare immagini di grandi dimensioni online
- 3. Cluster di set di dati di grandi dimensioni Highcharts
- 4. Elaborazione di set di dati di grandi dimensioni tramite LINQ
- 5. Prestazioni di Firebase con set di dati di grandi dimensioni
- 6. Il modo migliore per archiviare e recuperare set di dati di grandi dimensioni con Java
- 7. Leggere in modo efficiente file di testo di grandi dimensioni
- 8. GZipStream su dati di grandi dimensioni
- 9. Qual è il modo migliore per visualizzare insiemi di dati di grandi dimensioni in QT
- 10. Modo efficiente per analizzare grandi quantità di dati?
- 11. Come dividere in modo efficiente file di grandi dimensioni
- 12. Come gestire set di dati di grandi dimensioni per la simulazione lato server -> browser client
- 13. Ottimizzazione del completamento automatico per set di dati di grandi dimensioni
- 14. Diagramma dendrogramma in errore Scipy per set di dati di grandi dimensioni
- 15. PyQt QTableView rallenta in modo proibitivo quando si scorre con set di dati di grandi dimensioni
- 16. Importazione di set di dati di grandi dimensioni su iPhone utilizzando CoreData
- 17. Elaborazione di un file .txt di grandi dimensioni in python in modo efficiente
- 18. Trasferimento efficiente di grandi quantità di dati di byte da C++ a Java
- 19. modo efficiente per ottenere il massimo di ogni riga per matrice sparse di grandi dimensioni
- 20. Caricamento di un set di dati di grandi dimensioni in Highcharts
- 21. JavaScript è pronto per la visualizzazione di set di dati di grandi dimensioni?
- 22. Il modo più efficiente per cercare in un file di grandi dimensioni
- 23. Come calcolare il numero di occorrenze al minuto per un set di dati di grandi dimensioni
- 24. Cercando di lavorare in fogli con set di dati di grandi dimensioni
- 25. Il modo più veloce per migrare da sql server a sqlite per dataset di grandi dimensioni
- 26. Perché lo srotolamento del ciclo non ha effetto per un set di dati di grandi dimensioni?
- 27. HTML5: accesso a dati locali strutturati di grandi dimensioni
- 28. Velocizza la funzione plot() per set di dati di grandi dimensioni
- 29. come gestire set di dati di grandi dimensioni con isotopo jQuery
- 30. Leggere in modo efficiente righe specifiche da file di grandi dimensioni in R
Come si servono la mappa? Mi aspetto che il server abbia un metodo che può essere interrogato usando un riquadro di delimitazione. Oppure, a seconda della quantità di oggetti, puoi usare Markerclusters. Il loro esempio ha [una mappa che mostra 50000 articoli] (http://leaflet.github.com/Leaflet.markercluster/example/marker-clustering-realworld.50000.html). – flup
Non voglio usare markerclusters, perché voglio visualizzare ogni marker che è visibile invece di aggregare. Quello che sto cercando di decidere è esattamente come dovrei servire la mia mappa. Poiché questo viene spostato o ingrandito, probabilmente non avrebbe molto senso interrogare il server ogni volta in base al nuovo riquadro di delimitazione (che potrebbe parzialmente sovrapporsi a quello precedente). Posso immaginare alcuni modi per farlo, ma prima di reinventare la ruota, vorrei assicurarmi che non ci sia già una buona soluzione a questo – CuNimb
Bene, ad un certo punto, quando si esegue lo zoom in tutto il mondo, quello ' d significa mostrare ogni singolo marker. Quindi il clustering ha senso. O non mostrerai alcun indicatore al di sotto di un livello minimo di zoom? Quanti marcatori hai? – flup