Sai come avere un clustering piacevole in OpenLayers come questo google example?OpenLayers, nice marker clustering
risposta
È possibile aggiungere un'etichetta a pointStyle nell'esempio sopra e spiegare il contesto di questa etichetta. Il codice dovrebbe essere qualcosa di simile:
var pointStyle = new OpenLayers.Style({
// ...
'label': "${label}",
// ...
}, {
context: {
// ...
label: function(feature) {
// clustered features count or blank if feature is not a cluster
return feature.cluster ? feature.cluster.length : "";
}
// ..
}
});
var styleMap = new OpenLayers.StyleMap({
'default': pointStyle,
});
var googleLikeLayer = new OpenLayers.Layer.Vector("GoogleLikeLayer", {
// ...
styleMap : styleMap,
// ...
});
Questa è una grande opzione, grazie! – apneadiving
funziona perfettamente con la strategia cluster, tks. Upvoted! –
Utilizzare OpenLayers.Strategy.Cluster
per il clustering.
Non ho visto questo ma è lontano dal mio esempio :) – apneadiving
vedere la risposta aggiornata – igorti
Ho visto anche questo, mi dispiace :) – apneadiving
si può fare questo con il maggior igorti ha detto. il soltion sta usando classe OpenLayers.Strategy.Cluster e styling il vostro strato con classe OpenLayers.Style ...
per lo styling:
var pointStyle = new OpenLayers.Style({
'default': new OpenLayers.Style({
'pointRadius': '${radius}',
'externalGraphic': '${getgraph}'
....
},{
context:{
radius: function(feature){
return Math.min(feature.attributes.count,7)+3;
},{
getgraph : function(feature){
return 'ol/img/googlelike.png';
}}}};
si deve ti aiuta, più potere a voi!
temo che non ci sarà il numero di marcatori visualizzati sul clusterer. Non è ancora quello che sto cercando. – apneadiving
ho appena implementato un cosiddetto strategia AnimatedCluster per OpenLayers. Puoi vedere un po 'di più a questo indirizzo: http://www.acuriousanimal.com/2012/08/19/animated-marker-cluster-strategy-for-openlayers.html
È solo una versione iniziale, ma aggiunge una bella animazione ai cluster. Ci sono molte cose da migliorare ma è un punto di partenza.
Grazie per l'informazione, avrò uno sguardo – apneadiving
Ti spiace adattare la tua meravigliosa strategia di AnimatedCluster per adattarla anche alle ultime versioni di OpenLayers, ovvero 2.13+? L'ho provato un po ', ma sembra che ci sia un certo conflitto nelle animazioni tra l'attenuazione del cluster e il cambio dello zoom del livello (hanno fatto l'animazione per questo nelle ultime versioni). Peccato che OpenLayers 3 non abbia ancora implementato cluster, forse sarà anche un buon campo per adattare gli AnimatedClusters? ;) (btw, OL3 sembra già ottimo). – unibasil
Puoi mettere un problema in github con il problema di animazione? Grazie !!! – EricSonaron
Ecco il JSfiddle per il clustering basato su attributi personalizzati aggiunti ai livelli. Ho faticato un po 'con questo, quindi l'ho messo qui; mostra anche la creazione di un'immagine grafico a torta una sintesi quando si ingrandisce con i dati in cluster http://jsfiddle.net/alexcpn/518p59k4/
creato anche un piccolo tutorial openlayers per spiegare questo OpenLayers Advanced Clustering
var getClusterCount = function (feature) {
var clustercount = {};
var planningcount = 0;
var onaircount = 0;
var inerrorcount = 0;
for (var i = 0; i < feature.cluster.length; i++) {
if (feature.cluster[i].attributes.cluster) {
//THE MOST IMPORTANT LINE IS THE ONE BELOW, While clustering open layers removes the orginial feature layer with its own. So to get the attributes of the feature you have added add it to the openlayer created feature layer
feature.attributes.cluster = feature.cluster[i].attributes.cluster;
switch (feature.cluster[i].attributes.cluster) {
......
return clustercount;
};
C'è una grande clustering example disponibile in OpenLayers 3.
Ho creato un codice jsFiddle dal codice in modo da poter giocare con esso.
Fondamentalmente si deve creare un ol.source.Cluster
con un raggruppamento distanza da un ol.source.Vector
formata da una matrice di ol.Feature
. Ogni ol.Feature
creato dalle coordinate di origine sotto forma di ol.geom.Point
.
var features = [
new ol.Feature(new ol.geom.Point([lon1, lat1])),
new ol.Feature(new ol.geom.Point([lon2, lat2])),
...
];
var cluster = new ol.source.Cluster({
distance: 50,
source: new ol.source.Vector({ features: features });
});
var map = new ol.Map({
layers: [
new ol.source.MapQuest({layer: 'sat'}), // Map
new ol.layer.Vector({ source: cluster }) // Clusters
],
renderer: 'canvas',
target: 'map'
});
- 1. openlayers simple mouseover sul marker
- 2. OpenLayers visualizza tutti i marker sullo schermo
- 3. Cambia l'indice z del marker negli openlayers
- 4. OpenLayers e GeoJSON, non moltiplicare il marker sulle stesse coordinate
- 5. Map Clustering Algorithm
- 6. php print_r nice table
- 7. Nice-Level per pthreads?
- 8. Come posso utilizzare un'immagine SVG come marker di mappa in OpenLayers-3?
- 9. Forzare un livello Marker OpenLayers per disegnare in alto e con livelli selezionabili sotto
- 10. Marker annotazione vs Marker interfaccia
- 11. marcatori di clustering su mapbox/leaflet
- 12. Parola chiave "nice" in C++?
- 13. Jquery Nice scroll not working
- 14. Server Side Clustering Markers Google - Python/Django
- 15. clustering spettrale
- 16. Markov Clustering
- 17. Aggiornamento a OpenLayers 3
- 18. Java equivalente di OpenLayers
- 19. Disattiva zoom con Openlayers
- 20. OpenLayers applicazione sempre offline?
- 21. OpenLayers Refresh Strategy Problemi
- 22. OpenLayers e TypeScript?
- 23. Regola in OpenLayers 3
- 24. Openlayers 3 center map
- 25. Crea codice in LaTeX look * nice *
- 26. Python: ulimit e nice per subprocess.call/subprocess.Popen?
- 27. Nice Trascina su una tela HTML5
- 28. Differenza tra nice e setpriority in unix
- 29. Markov Clustering Algoritmo
- 30. Matlab: K-significa clustering
Ciao, non stai parlando di marcatori Openlayer giusto? (http://dev.openlayers.org/docs/files/OpenLayers/Marker-js.html) – eMarine
@eMarine no sui cluster di marcatori – apneadiving