User Tools

Site Tools


tecnica:gps_cartografia_gis:openlayers_style

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
tecnica:gps_cartografia_gis:openlayers_style [2009/09/17 16:31] niccolotecnica:gps_cartografia_gis:openlayers_style [2011/07/15 16:02] – [Utilizzare l'oggetto StyleMap] niccolo
Line 66: Line 66:
  
 <code javascript> <code javascript>
-{{{ 
 var styleMap = new OpenLayers.StyleMap({ var styleMap = new OpenLayers.StyleMap({
     "default": {     "default": {
Line 75: Line 74:
         fillColor: "yellow"}         fillColor: "yellow"}
 }); });
-}}} 
 </code> </code>
 +
 +===== Definire lo stile di un Vector layer =====
 +
 +Esempio:
 +
 +<code javascript>
 +var style = new OpenLayers.Style();
 +
 +style.strokeColor = strokeColor;
 +style.strokeWidth = strokeWidth;
 +style.strokeOpacity = strokeOpacity;
 +style.fillColor = fillColor;
 +style.fillOpacity = fillOpacity;
 +
 +var vector = new OpenLayers.Layer.Vector(label, {'style': style});
 +vector.addFeatures(
 +    new OpenLayers.Feature.Vector(
 +        new OpenLayers.Geometry.LinearRing(points_array),
 +        null,
 +        style
 +    )
 +);
 +</code>
 +
 +===== Gesione zoom =====
 +
 +Il livello **minimo** di **zoom** è associato al numero **zero** (slider tutto verso il simbolo **-**). Per sapere a quale valore di scala corrisponde ogni livello di zoom si può aggiungere questo codice al JavaScript:
 +
 +<code javascript>
 +map.events.register("zoomend", layer_name, function() {
 +    alert("map Zoom: " + map.getZoom() + "\nmap Scale: " + map.getScale());
 +});
 +</code>
 +
 +Il codice, associato formalmente ad un layer, viene in realtà eseguito al termine di ogni operazione di zoom e mostra il livello di zoom corrente e il valore di scala.
 +
 +Aumentando un livello di zoom la scala raddoppia (dimezza il denominatore). Un layer può essere visibile solo a certi valori di scala impostando **''Layer.minScale''** e **''Layer.maxScale''**.
 +
 +Ecco un esempio di come rendere visibile un layer solo ai livelli di zoom **5**, **6** e **7**:
 +
 +^   ^ getZoom()  ^ getScale()  ^ Layer visibile  ^
 +| **+** |  9 |     316388.450 |  No  |
 +|        8 |     632776.900 |  No  |
 +|          |    1000000.000 |  maxScale  |
 +|        7 |    1265553.800 |  Sì  |
 +|        6 |    2531107.601 |  Sì  |
 +|        5 |    5062215.202 |  Sì  |
 +|          |    9000000.000 |  minScale  |
 +|        4 |   10124430.404 |  No  |
 +|        3 |   20248860.809 |  No  |
 +|        2 |   40497721.618 |  No  |
 +|        1 |   80995443.236 |  No  |
 +| **-** |  0 |  161990886.472 |  No  |
 +
 +I parametri **''Layer.minResolution''** e **''Layer.maxResolution''** invece non si capisce bene a cosa servono. Il valore impostato in Layer.maxResolution è il valore restituito da ''Layer.getResolution()'' al minimo livello di zoom (zoom 0). Ad ogni livello successivo di zoom, il valore di ''Layer.getResolution()'' è dimezzato fino a raggiungere ''Layer.minResolution''. Ma a che serve?
tecnica/gps_cartografia_gis/openlayers_style.txt · Last modified: 2011/07/15 16:03 by niccolo