[OpenLayers-Users] Attempting to get styling going on my layer.
Andreas Hocevar
ahocevar at opengeo.org
Mon Mar 12 06:02:37 EDT 2012
You'll need to replace
if (lateKiosk == 1) {
feature.attributes.icon = "/images/red_9x9.png";
} else {
feature.attributes.icon = "/images/green_9x9.png";
}
with
if (lateKiosk == 1) {
return "/images/red_9x9.png";
} else {
return "/images/green_9x9.png";
}
Andreas.
On Tue, Mar 6, 2012 at 7:18 PM, Scott Chapman <scott at mischko.com> wrote:
> Hi!
>
> I'm close here, I think but I don't know the last piece or I'm missing
> something.
>
> I have a Vector layer that includes the Cluster strategy. It displays
> correctly if I instantiate it without the styleMap.
>
> I made a style that should set the icon to a red image if any of the
> features have a "late" attribute of 1, green otherwise.
>
> Here's the code for the style and the layer instantiation:
>
> var style = new OpenLayers.Style({
> externalGraphic: "${icon}",
> } , {
> context: {
> icon: function(feature) {
> if(feature.cluster) {
> lateKiosk = 0;
> for(var c = 0; c < feature.cluster.length; c++) {
> i = feature.cluster[c].attributes.late;
> if( i == 1) {
> lateKiosk = 1;
> break;
> }
> }
> if (lateKiosk == 1) {
> feature.attributes.icon = "/images/red_9x9.png";
> } else {
> feature.attributes.icon = "/images/green_9x9.png";
> }
> }
> console.log(feature);
> return feature.attributes.icon;
> }
> }
> }
> );
>
> var stores_layer = new OpenLayers.Layer.Vector("Stores", {
> styleMap: new OpenLayers.StyleMap({"default": style}),
> strategies: [
> new OpenLayers.Strategy.Fixed(),
> new OpenLayers.Strategy.Refresh({interval: 60000}),
> new OpenLayers.Strategy.Cluster()
> ],
> protocol: new OpenLayers.Protocol.HTTP(
> {
> url: "/kiosks_status_geoJSON/",
> headers: {'Accept':'application/json'},
> format: new OpenLayers.Format.GeoJSON()
> }
> )
> });
>
> Here's the feature log from the console, showing the icon has been set:
>
> OpenLayers.Feature.Vector.OpenLayers.Class.initialize
> attributes: Object
> count: 2
> icon: "/images/red_9x9.png"
> ....
>
> Here's confirmation that the red image is getting loaded from the web server:
>
> 127.0.0.1 - - [06/Mar/2012:10:05:32] "GET /images/red_9x9.png
> HTTP/1.1" 200 183 "http://localhost:7000/source/index.html"
> "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko)
> Ubuntu/10.04 Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.11"
>
> I'm close but I'm missing something. Can someone please fill in the blank?
>
> Thanks!
> Scott
> _______________________________________________
> Users mailing list
> Users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/openlayers-users
--
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.
More information about the Users
mailing list