From 3f0b0286fc48be7825f4a0013fb615056ecf5146 Mon Sep 17 00:00:00 2001 From: Schuyler Erle Date: Mon, 19 Mar 2007 14:46:15 +0000 Subject: [PATCH] Marker objects now update their lonlat after moveTo. Fixes #519. Tests pass. git-svn-id: http://svn.openlayers.org/trunk/openlayers@2817 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Marker.js | 3 ++- tests/test_Marker.html | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) 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"); + + } // -->