diff --git a/lib/OpenLayers/Marker.js b/lib/OpenLayers/Marker.js index c8bfd0ae2f..1338e9c124 100644 --- a/lib/OpenLayers/Marker.js +++ b/lib/OpenLayers/Marker.js @@ -71,7 +71,8 @@ OpenLayers.Marker.prototype = { moveTo: function (px) { if ((px != null) && (this.icon != null)) { this.icon.moveTo(px); - } + } + this.lonlat = this.map.getLonLatFromLayerPx(px); }, /** diff --git a/tests/test_Marker.html b/tests/test_Marker.html index c9b8f0badc..d3a3ba42b5 100644 --- a/tests/test_Marker.html +++ b/tests/test_Marker.html @@ -71,6 +71,39 @@ t.eq(parseFloat(marker.icon.imageDiv.style.opacity), 0.5, "marker.setOpacity() works"); } + function test_04_Marker_moveTo(t) { + t.plan( 6 ); + + 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.eq(marker.lonlat.lon, 0, "marker lon okay"); + t.eq(marker.lonlat.lat, 0, "marker lat okay"); + console.log(marker.icon); + + marker.moveTo(new OpenLayers.Pixel(250,275)); + t.eq(marker.lonlat.lon, 0, "marker lon no change"); + t.eq(marker.lonlat.lat, 0, "marker lat no change"); + + marker.moveTo(new OpenLayers.Pixel(0,0)); + t.eq(marker.lonlat.lon, map.getExtent().left, "on left edge of map"); + t.eq(marker.lonlat.lat, map.getExtent().top, "on top edge of map"); + + } // -->