Search code examples
zoomingopenlayersopenstreetmapsproutcore

Openlayers zoom in or out


I am quite new to Openlayers and was wondering if there is a method or event that returns the zooming direction, e.g. onzoomin/onzoomout events. I am using sproutcore 1.0 and trying to modify a feature font according to the zooming level. I tried working with Rules but according to the application structure this does not work. Here is my sample event of what I want to do:

this.map.events.on({ "zoomend": function (e) {
  var sub = 0;
  if (ZOOMOUT){
    sub = this.getZoom();
  } else {
    sub = this.getZoom() * -1;
  }
  var font = myFeature.layer.styleMap.styles['default'].defaultStyle.fontSize;
  font = font + sub*10;
  myFeature.layer.redraw();
}});

Solution

  • Found a workaround using geometry bounds which gives a good result:

    this.map.events.on({ "zoomend": function (e) {
        var width = myFeature.geometry.bounds.right - myFeature.geometry.bounds.left;
        var div = 0;
    
        if (this.getZoom() > 12) {
            div = 4;
        } else {
            div = 6;
        }
        myFeature.layer.styleMap.styles['default'].defaultStyle.fontSize = (width/((15 - this.getZoom())+1)) / div).toString() + "px"; 
        myFeature.layer.redraw();
    }});