Le 13/04/2012 21:05, Jean-Guilhem Cailton a écrit :
Salut Pierre,
On peut peut-être demander de l'aide sur la liste dev-fr (en copie),
ou sinon sur dev (en anglais) ?
Merci d'avance les gars (et les filles, bien sûr) ! ;-)
Bien cordialement,
Jean-Guilhem
Le 13/04/2012 20:41, Pierre Béland a écrit :
Avant d'ajouter la fonction de Crowdsourcing, j'ai légèrement remanié
la carte interactive du Mali.
http://pierzen.dev.openstreetmap.org/hot/openlayers/mali.php
J'ai ajouté la section de droite qui servira à ajouter les
instructions. Maintenant la fonction de description des marqueurs
fonctionne correctement, tant pour les localités que les aéroports.
Et je vais maintenant greffer les instructions de Crowdsourcing.
Mais un problème auquel on devrait répondre, c'est l'encombrement des
icônes de marqueurs sur la carte. Pour l'instant, j'ai réduit la
taille des cercles représentant les localités.
Voici une brève description du problème. Pourrais-tu trouver
quelqu'un qui peut nous aider à résoudre ce problème?
J'utilise présentement le styleMap suivant :
var styleMap_villes2 = new OpenLayers.StyleMap({
"default": new OpenLayers.Style(OpenLayers.Util.applyDefaults({
graphicOpacity: 0.5,
pointRadius: 4}, OpenLayers.Feature.Vector.style["default"]))
});
Pour diminuer l'encombrement, il serait bien d'avoir un styleMap avec
une fonction de variabilité de la taille selon le niveau de zoom. Aux
niveaux de zoom supérieur, il serait aussi possible de ne pas
afficher les marqueurs, laissant ainsi la place au texte de
description des localités.
J'ai vu l'exemple suivant où une fonction permet de modifier la
variable pointRadius. Mais ne réussit pas à le faire fonctionner. Il
y a un traitement en JQuery avec la variable ${radius}. Je ne suis
suffisamment familier avec le tout pour modifier et déboguer le tout.
var style_villes = new OpenLayers.Style({
pointRadius: "*${radius}*",
fillColor: "red",
fillOpacity: 0.8,
strokeColor: "#ff5555",
strokeWidth: 2,
strokeOpacity: 0.8
}, {
context: {
*radius: function(feature)* {
return Math.min(feature.attributes.count, 7) + 3;
},
}
});
var styleMap_villes = new OpenLayers.StyleMap({
"default": style_villes,
"select": {
fillColor: "#8aeeef",
strokeColor: "#32a8a9"
}
});
//
/Pierre/
//
--
gpg 0x5939EAE2
_______________________________________________
dev-fr mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev-fr
Salut,
J'utilise une fonction sur pointRadius pour www.pistes-nordiques.org,
mais avec une strategy: cluster sur le layer. Sinon,
feature.attribute.count est probablement toujours égal à 1. Mais si tu
utilise une strategie 'cluster' sur le layer, je ne vois pas trop bien
comment tu peux sortir le popup avec les attributs du point noyé dans un
cluster.
Dans ton cas, la fonction radius() devrait plutôt dépendre de map.getZoom().
Essaye ça:
context: {
* radius: function(feature)* {
return map.getZoom();
},
Ce qui fonctionne chez moi avec une strategy cluster:
var pointStyle = new OpenLayers.Style(
{pointRadius: "${radius}",
fillColor: "#FF7800",
fillOpacity: 0.5,
strokeColor: "#FF7800",
strokeWidth: 1,
strokeOpacity: 0},
{context:
{ radius: function(feature) {
return Math.min(feature.attributes.count, 10) + 2;
}
}
});
var pistesLayerLowZoom = new
OpenLayers.Layer.Vector("Pistes_Low-zoom", {
strategies: [
new OpenLayers.Strategy.Fixed(),
new OpenLayers.Strategy.Cluster()
],
protocol: new OpenLayers.Protocol.HTTP({
url:"data/nordic_1npw.osm",
format: new OpenLayers.Format.OSM()
}),
projection: new OpenLayers.Projection("EPSG:4326"),
maxScale: 1000000,
styleMap: new OpenLayers.StyleMap({
"default": pointStyle,
"highlight": new OpenLayers.Style({fillColor:
"#4477EE",strokeColor: "#4477EE"})
})
});
map.addLayers([pistesLayerLowZoom])
Yves
_______________________________________________
dev-fr mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev-fr