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 revision Previous revision
Next revision
Previous revision
tecnica:gps_cartografia_gis:openlayers_style [2009/09/17 16:31]
niccolo
tecnica:gps_cartografia_gis:openlayers_style [2011/07/15 16:03] (current)
niccolo [Definire lo stile di un Vector layer]
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 ​  = "#​FF0000";​
 +style.strokeWidth ​  = 5;
 +style.strokeOpacity = 0.7;
 +style.fillColor ​    = "#​FFA500";​
 +style.fillOpacity ​  = 0.3;
 +
 +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.1253197886.txt.gz · Last modified: 2009/09/17 16:31 by niccolo