[OpenLayers-Dev] [OpenLayers-Commits] r5509 - in trunk/openlayers: lib/OpenLayers lib/OpenLayers/Layer tests/Layer

Erik Uzureau euzuro at gmail.com
Thu Aug 21 13:14:35 EDT 2008


http://trac.openlayers.org/ticket/1683

On Wed, Jan 9, 2008 at 7:52 PM, Erik Uzureau <erik.uzureau at metacarta.com> wrote:
> A comment related to this patch.
>
> The commit done here is very good... what i'm actually wondering about
> is the original setOpacity() function as defined on the
> OpenLayers.Layer object.
>
> Why are we doing DOMElement modifications at this level? the basic
> Layer object does not own images and should not know anything about
> them. just like this patch overrides setOpacity() to individually set
> the opacity of its markers, so should the Grid layer iterate through
> its tiles and call setOpacity() on each of them.
>
> no?
>
>
>
> ---------- Forwarded message ----------
> From: commits at openlayers.org <commits at openlayers.org>
> Date: Dec 19, 2007 9:00 AM
> Subject: [OpenLayers-Commits] r5509 - in trunk/openlayers:
> lib/OpenLayers lib/OpenLayers/Layer tests/Layer
> To: commits at openlayers.org
>
>
> Author: fredj
> Date: 2007-12-19 10:00:49 -0500 (Wed, 19 Dec 2007)
> New Revision: 5509
>
> Modified:
>  trunk/openlayers/lib/OpenLayers/Layer.js
>  trunk/openlayers/lib/OpenLayers/Layer/Markers.js
>  trunk/openlayers/tests/Layer/test_Markers.html
> Log:
> OpenLayers.Layer.Markers - propagate layer's opacity to the markers. Thanks
> ahughes for the bug report and crschmidt for review and advices. (Closes #1114)
>
>
>
> Modified: trunk/openlayers/lib/OpenLayers/Layer/Markers.js
> ===================================================================
> --- trunk/openlayers/lib/OpenLayers/Layer/Markers.js    2007-12-19
> 12:51:06 UTC (rev 5508)
> +++ trunk/openlayers/lib/OpenLayers/Layer/Markers.js    2007-12-19
> 15:00:49 UTC (rev 5509)
> @@ -57,7 +57,22 @@
>        OpenLayers.Layer.prototype.destroy.apply(this, arguments);
>    },
>
> -
> +    /**
> +     * APIMethod: setOpacity
> +     * Sets the opacity for all the markers.
> +     *
> +     * Parameter:
> +     * opacity - {Float}
> +     */
> +    setOpacity: function(opacity) {
> +        if (opacity != this.opacity) {
> +            this.opacity = opacity;
> +            for (var i = 0; i < this.markers.length; i++) {
> +                this.markers[i].setOpacity(this.opacity);
> +            }
> +        }
> +    },
> +
>    /**
>     * Method: moveTo
>     *
> @@ -85,6 +100,11 @@
>     */
>    addMarker: function(marker) {
>        this.markers.push(marker);
> +
> +        if (this.opacity != null) {
> +            marker.setOpacity(this.opacity);
> +        }
> +
>        if (this.map && this.map.getExtent()) {
>            marker.map = this.map;
>            this.drawMarker(marker);
>
> Modified: trunk/openlayers/lib/OpenLayers/Layer.js
> ===================================================================
> --- trunk/openlayers/lib/OpenLayers/Layer.js    2007-12-19 12:51:06
> UTC (rev 5508)
> +++ trunk/openlayers/lib/OpenLayers/Layer.js    2007-12-19 15:00:49
> UTC (rev 5509)
> @@ -29,6 +29,12 @@
>     */
>    div: null,
>
> +    /**
> +     * Property: opacity
> +     * {Float} The layer's opacity. Float number between 0.0 and 1.0.
> +     */
> +    opacity: null,
> +
>    /**
>     * Constant: EVENT_TYPES
>     * {Array(String)} Supported application event types
>
> Modified: trunk/openlayers/tests/Layer/test_Markers.html
> ===================================================================
> --- trunk/openlayers/tests/Layer/test_Markers.html      2007-12-19
> 12:51:06 UTC (rev 5508)
> +++ trunk/openlayers/tests/Layer/test_Markers.html      2007-12-19
> 15:00:49 UTC (rev 5509)
> @@ -77,7 +77,33 @@
>
>    }
>
> +    function test_Layer_Markers_setOpacity(t) {
> +        t.plan(1);
>
> +        layer = new OpenLayers.Layer.Markers('Test Layer');
> +
> +        var opacity = 0.1234;
> +
> +        for (var i = 0; i < 12; i++) {
> +            layer.addMarker(new OpenLayers.Marker(new
> OpenLayers.LonLat(0,0), new OpenLayers.Icon()));
> +        }
> +
> +        layer.setOpacity(opacity);
> +
> +        for (var i = 0; i < 4; i++) {
> +            layer.addMarker(new OpenLayers.Marker(new
> OpenLayers.LonLat(0,0), new OpenLayers.Icon()));
> +        }
> +
> +        var itWorks = false;
> +        for (var i = 0; i < layer.markers.length; i++) {
> +            itWorks =
> parseFloat(layer.markers[i].icon.imageDiv.style.opacity) == opacity;
> +            if (!itWorks) {
> +                break;
> +            }
> +        }
> +        t.ok(itWorks, "setOpacity change markers opacity");
> +    }
> +
>  </script>
>  </head>
>  <body>
>
> _______________________________________________
> Commits mailing list
> Commits at openlayers.org
> http://openlayers.org/mailman/listinfo/commits
>



More information about the Dev mailing list