[OpenLayers-Users] Vector layer and multiple symbolizers

Sergeant_york electronicpanda at gmail.com
Fri Feb 8 00:03:46 PST 2013


I tryed context functions to change the offsets of the points (by dividing
bikes and docks to 2 features) but unfortunately after bike's style applied
then when docks style gets applied bike's style also changes. Might be a bug
because of me, I could came to this position lastly, maybe you can see the
error here, couldn't have time to recheck:

//Stations layer 
var stations = []; // my  data of stations i want in a vector layer
var station1 = {
    position:new OpenLayers.Geometry.Point(-5000000,0),
    data: {
        bikes: 8,
        docks: 20
    }
}
var station2 = {
    position:new OpenLayers.Geometry.Point(500000,4000000),
    data: {
        bikes: 2,
        docks: 10
    }
}
stations.push(station1);
stations.push(station2);
var resultVectors=[];
var tempData=[];
for(var i=0;i<stations.length;i++){
//here we create new point features for each type 
    //for bike points
    tempData.bikes=stations[i].data.bikes;
    resultVectors.push(new OpenLayers.Feature.Vector(stations[i].position,
tempData));
    tempData=[];
    tempData.docks=stations[i].data.docks
    resultVectors.push(new OpenLayers.Feature.Vector(stations[i].position,
tempData));
    tempData=[];
}
//how to define a custom style to display BOTH labels of stations datas
(bikes and docks) one on top, one on bottom of the green circle centered to
the station position?
var context = {
    label : function(station){
        // docks or bikes , how ?
        if(typeof station.data.bikes!='undefined')
            return "bikes:"+station.data.bikes ;
        else if(typeof station.data.docks!='undefined')
            return "docs:"+station.data.docks;
    }  ,
    yOffset : function(station){

        // - for docks, + for bikes , how ?
        if(typeof station.data.bikes!='undefined')
            return 100;
        else if(typeof station.data.docks!='undefined')
            return 0;
    },
    grap : function(station){
        // - for docks, + for bikes , how ?
        if(typeof station.data.bikes!='undefined')
            return
'http://www.inflatable-watertoy.com/photo/pm818499-lovely_durable_pvc_inflatable_beach_balls_with_smiling_face_to_play_in_the_water_pool.jpg'
;
        else if(typeof station.data.docks!='undefined') 
            return
'http://www.gettyicons.com/free-icons/123/onebit-3/png/48/sad_face_48.png';
    }
}

var style = new OpenLayers.Style({
    pointRadius : 15,
    fillColor: '#32cd32',     
    label: '${label}',
    graphicYOffset: "${yOffset}",
    externalGraphic: "${grap}"
},{
    context:{
     label : function(station){
        // docks or bikes , how ?
        if(typeof station.data.bikes!='undefined')
            return "bikes:"+station.data.bikes ;
        else if(typeof station.data.docks!='undefined')
            return "docs:"+station.data.docks;
    }  ,
    yOffset : function(station){

        // - for docks, + for bikes , how ?
        if(typeof station.data.bikes!='undefined')
            return 100;
        else if(typeof station.data.docks!='undefined')
            return 0;
    },
    grap : function(station){
        if(typeof station.data.bikes!='undefined')
            return
'http://www.inflatable-watertoy.com/photo/pm818499-lovely_durable_pvc_inflatable_beach_balls_with_smiling_face_to_play_in_the_water_pool.jpg'
;
        else if(typeof station.data.docks!='undefined') 
            return
'http://www.gettyicons.com/free-icons/123/onebit-3/png/48/sad_face_48.png';
    }
        
        
    }
});

var stationsLayer = new OpenLayers.Layer.Vector('Stations' , {styleMap :new
OpenLayers.StyleMap(style)} );
//stationsLayer.addFeatures(stations);
stationsLayer.addFeatures(resultVectors);
var map = new OpenLayers.Map({
    div: "map",
    center : [0,0],
    zoom:2,
    layers: [new OpenLayers.Layer.OSM(),stationsLayer ],
    controls:[new OpenLayers.Control.Navigation(),new
OpenLayers.Control.LayerSwitcher()]
});







--
View this message in context: http://osgeo-org.1560.n6.nabble.com/Vector-layer-and-multiple-symbolizers-tp5032127p5032993.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.


More information about the Users mailing list