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

Next revision
Previous revision
Last revisionBoth sides next revision
tecnica:gps_cartografia_gis:openlayers_style [2009/09/17 16:30] – created niccolotecnica:gps_cartografia_gis:openlayers_style [2011/07/15 16:02] – [Utilizzare l'oggetto StyleMap] niccolo
Line 14: Line 14:
 <code css> <code css>
 #layerswitcher { #layerswitcher {
 +    /* This will work: */
     width: 250px;     width: 250px;
-    /* Does not work: overridden by the JavaScript constructor. +    /* Does not work: overridden by the JavaScript constructor. */ 
-     * color: yellow; +    color: yellow; 
-     * float: left; +    float: left;
-     */+
 } }
 </code> </code>
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