diff --git a/lib/OpenLayers/Icon.js b/lib/OpenLayers/Icon.js index 6fbc0ca149..f6a6004b52 100644 --- a/lib/OpenLayers/Icon.js +++ b/lib/OpenLayers/Icon.js @@ -106,6 +106,18 @@ OpenLayers.Icon = OpenLayers.Class({ } this.draw(); }, + + /** + * Method: setUrl + * + * url - {String} + */ + setUrl: function(url) { + if (url != null) { + this.url = url; + } + this.draw(); + }, /** * Method: draw diff --git a/lib/OpenLayers/Marker.js b/lib/OpenLayers/Marker.js index 59cab53532..c0372438ed 100644 --- a/lib/OpenLayers/Marker.js +++ b/lib/OpenLayers/Marker.js @@ -171,6 +171,16 @@ OpenLayers.Marker = OpenLayers.Class({ this.icon.setOpacity(opacity); }, + /** + * Method: setUrl + * Change URL of the Icon Image. + * + * url - {String} + */ + setUrl: function(url) { + this.icon.setUrl(url); + }, + /** * Method: display * Hide or show the icon diff --git a/tests/test_Marker.html b/tests/test_Marker.html index e6356be142..8547fcd62b 100644 --- a/tests/test_Marker.html +++ b/tests/test_Marker.html @@ -73,6 +73,34 @@ t.eq(parseFloat(marker.icon.imageDiv.style.opacity), 0.5, "marker.setOpacity() works"); map.destroy(); } + + function test_03_Marker_setUrl(t) { + t.plan( 2 ); + + var map = new OpenLayers.Map("map"); + + var url = "http://octo.metacarta.com/cgi-bin/mapserv"; + layer = new OpenLayers.Layer.WMS(name, url); + + map.addLayer(layer); + + mlayer = new OpenLayers.Layer.Markers('Test Layer'); + map.addLayer(mlayer); + + map.zoomToExtent(new OpenLayers.Bounds(-50,-50,50,50)); + + //onscreen marker + var ll = new OpenLayers.LonLat(0,0); + var marker = new OpenLayers.Marker(ll); + mlayer.addMarker(marker); + + t.ok(marker.icon.imageDiv.firstChild.src.contains("img/marker.png"), "Marker.png is default URL"); + + marker.setUrl("http://example.com/broken.png"); + t.eq(marker.icon.imageDiv.firstChild.src, "http://example.com/broken.png", "image source changes correctly."); + + map.destroy(); + } function test_04_Marker_moveTo(t) { t.plan( 6 );