Bug in the maps zoomTo method since OL 2.13

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Bug in the maps zoomTo method since OL 2.13

Johannes Weskamm
Hi,

I think i found a bug in the zoomTo Method of the map, while investigating an issue in geoext 2 ( https://github.com/geoext/geoext2/issues/205).
The problem seems to be introduced since OL 2.13 and is also occuring in 2.13.1:

When you zoom the map with the zoomTo Method multiple times in a row, the result will be confusing.
To be exact, it will not be the last zoomValue you have given to the method, instead it will become e.g. 0.

Here is the simple code which i used to test the behaviour:

m = map;
m.zoomTo(1);
m.zoomTo(2);
m.zoomTo(3);
m.zoomTo(4);
m.zoomTo(5);
m.getZoom();

The result of the last line should return a value of 5. But since OL 2.13, it returns 0 or some other non-correct value.
I checked this with the official examples of OL 2.12, 2.13 and 2.13.1:

http://dev.openlayers.org/releases/OpenLayers-2.12/examples/all-overlays.html

In 2.12, everything works as expected, but in

http://dev.openlayers.org/releases/OpenLayers-2.13/examples/all-overlays.html

or

http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/all-overlays.html

it does not, like described above.
A first finding is that when you use "zoomMethod: null" on map instanciation, the problem disappears. So this bug could have something todo with the " zoomTween" on the map. Maybe someone could have a detailed look at this?

Best regards,

Johannes Weskamm

_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev
Reply | Threaded
Open this post in threaded view
|

Re: Bug in the maps zoomTo method since OL 2.13

Andreas Hocevar-4
With your above example, your zoom level when you call map.getZoom() will be something between 0 and 5. This is because map.zoomTo() is asynchronous now, at least when a zoomMethod is configured for the map.

So instead of calling getZoom() directly, you should register for a zoomend listener and call getZoom() there.

Andreas.


On Wed, Nov 27, 2013 at 11:17 AM, Johannes Weskamm <[hidden email]> wrote:
Hi,

I think i found a bug in the zoomTo Method of the map, while investigating an issue in geoext 2 ( https://github.com/geoext/geoext2/issues/205).
The problem seems to be introduced since OL 2.13 and is also occuring in 2.13.1:

When you zoom the map with the zoomTo Method multiple times in a row, the result will be confusing.
To be exact, it will not be the last zoomValue you have given to the method, instead it will become e.g. 0.

Here is the simple code which i used to test the behaviour:

m = map;
m.zoomTo(1);
m.zoomTo(2);
m.zoomTo(3);
m.zoomTo(4);
m.zoomTo(5);
m.getZoom();

The result of the last line should return a value of 5. But since OL 2.13, it returns 0 or some other non-correct value.
I checked this with the official examples of OL 2.12, 2.13 and 2.13.1:

http://dev.openlayers.org/releases/OpenLayers-2.12/examples/all-overlays.html

In 2.12, everything works as expected, but in

http://dev.openlayers.org/releases/OpenLayers-2.13/examples/all-overlays.html

or

http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/all-overlays.html

it does not, like described above.
A first finding is that when you use "zoomMethod: null" on map instanciation, the problem disappears. So this bug could have something todo with the " zoomTween" on the map. Maybe someone could have a detailed look at this?

Best regards,

Johannes Weskamm

_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev


_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev
Reply | Threaded
Open this post in threaded view
|

Re: Bug in the maps zoomTo method since OL 2.13

Marc Jansen-2
Hey all,

I think Johannes might have discovered a bug / behavioural change still undocumented. While in 2.12 it was perfectly fine to call zoomTo multiple times, with 2.13 and later you get very unexpected results. If we can we should guard against that:

Run the following lines in a console against 2.12 and 2.13 (e.g. http://dev.openlayers.org/releases/OpenLayers-2.12/examples/all-overlays.html, http://dev.openlayers.org/releases/OpenLayers-2.13/examples/all-overlays.html)
console.log('Initial zoom is: ' + map.getZoom());
console.log('calling zoomTo: 1, 2, 1, 0');
map.zoomTo(1);
map.zoomTo(2);
map.zoomTo(1);
map.zoomTo(0);
console.log('wait 10 seconds, and then get the zoom');
var to = window.setTimeout(function(){
    console.log('Current zoom is: ' + map.getZoom());
}, 10000);
2.12 (as expected):
Initial zoom is: 0
calling zoomTo: 1, 2, 1, 0
wait 10 seconds, and then get the zoom
Current zoom is: 0

2.13 (ends with zoom 4, IMHO wrong, at least highly unexpected):
Initial zoom is: 0
calling zoomTo: 1, 2, 1, 0
wait 10 seconds, and then get the zoom
Current zoom is: 4

2.13.1 is the same as 2.13

I don't think that it is ok that we end up with four.

Best,
Marc




On 27.11.2013 13:14, Andreas Hocevar wrote:
With your above example, your zoom level when you call map.getZoom() will be something between 0 and 5. This is because map.zoomTo() is asynchronous now, at least when a zoomMethod is configured for the map.

So instead of calling getZoom() directly, you should register for a zoomend listener and call getZoom() there.

Andreas.


On Wed, Nov 27, 2013 at 11:17 AM, Johannes Weskamm <[hidden email]> wrote:
Hi,

I think i found a bug in the zoomTo Method of the map, while investigating an issue in geoext 2 ( https://github.com/geoext/geoext2/issues/205).
The problem seems to be introduced since OL 2.13 and is also occuring in 2.13.1:

When you zoom the map with the zoomTo Method multiple times in a row, the result will be confusing.
To be exact, it will not be the last zoomValue you have given to the method, instead it will become e.g. 0.

Here is the simple code which i used to test the behaviour:

m = map;
m.zoomTo(1);
m.zoomTo(2);
m.zoomTo(3);
m.zoomTo(4);
m.zoomTo(5);
m.getZoom();

The result of the last line should return a value of 5. But since OL 2.13, it returns 0 or some other non-correct value.
I checked this with the official examples of OL 2.12, 2.13 and 2.13.1:

http://dev.openlayers.org/releases/OpenLayers-2.12/examples/all-overlays.html

In 2.12, everything works as expected, but in

http://dev.openlayers.org/releases/OpenLayers-2.13/examples/all-overlays.html

or

http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/all-overlays.html

it does not, like described above.
A first finding is that when you use "zoomMethod: null" on map instanciation, the problem disappears. So this bug could have something todo with the " zoomTween" on the map. Maybe someone could have a detailed look at this?

Best regards,

Johannes Weskamm

_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev



_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev


_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev
Reply | Threaded
Open this post in threaded view
|

Re: Bug in the maps zoomTo method since OL 2.13

Andreas Hocevar-4
Hey Marc,


Andreas.


On Fri, Nov 29, 2013 at 9:41 AM, Marc Jansen <[hidden email]> wrote:
Hey all,

I think Johannes might have discovered a bug / behavioural change still undocumented. While in 2.12 it was perfectly fine to call zoomTo multiple times, with 2.13 and later you get very unexpected results. If we can we should guard against that:

Run the following lines in a console against 2.12 and 2.13 (e.g. http://dev.openlayers.org/releases/OpenLayers-2.12/examples/all-overlays.html, http://dev.openlayers.org/releases/OpenLayers-2.13/examples/all-overlays.html)
console.log('Initial zoom is: ' + map.getZoom());
console.log('calling zoomTo: 1, 2, 1, 0');
map.zoomTo(1);
map.zoomTo(2);
map.zoomTo(1);
map.zoomTo(0);
console.log('wait 10 seconds, and then get the zoom');
var to = window.setTimeout(function(){
    console.log('Current zoom is: ' + map.getZoom());
}, 10000);
2.12 (as expected):
Initial zoom is: 0
calling zoomTo: 1, 2, 1, 0
wait 10 seconds, and then get the zoom
Current zoom is: 0

2.13 (ends with zoom 4, IMHO wrong, at least highly unexpected):
Initial zoom is: 0
calling zoomTo: 1, 2, 1, 0
wait 10 seconds, and then get the zoom
Current zoom is: 4

2.13.1 is the same as 2.13

I don't think that it is ok that we end up with four.

Best,
Marc





On 27.11.2013 13:14, Andreas Hocevar wrote:
With your above example, your zoom level when you call map.getZoom() will be something between 0 and 5. This is because map.zoomTo() is asynchronous now, at least when a zoomMethod is configured for the map.

So instead of calling getZoom() directly, you should register for a zoomend listener and call getZoom() there.

Andreas.


On Wed, Nov 27, 2013 at 11:17 AM, Johannes Weskamm <[hidden email]> wrote:
Hi,

I think i found a bug in the zoomTo Method of the map, while investigating an issue in geoext 2 ( https://github.com/geoext/geoext2/issues/205).
The problem seems to be introduced since OL 2.13 and is also occuring in 2.13.1:

When you zoom the map with the zoomTo Method multiple times in a row, the result will be confusing.
To be exact, it will not be the last zoomValue you have given to the method, instead it will become e.g. 0.

Here is the simple code which i used to test the behaviour:

m = map;
m.zoomTo(1);
m.zoomTo(2);
m.zoomTo(3);
m.zoomTo(4);
m.zoomTo(5);
m.getZoom();

The result of the last line should return a value of 5. But since OL 2.13, it returns 0 or some other non-correct value.
I checked this with the official examples of OL 2.12, 2.13 and 2.13.1:

http://dev.openlayers.org/releases/OpenLayers-2.12/examples/all-overlays.html

In 2.12, everything works as expected, but in

http://dev.openlayers.org/releases/OpenLayers-2.13/examples/all-overlays.html

or

http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/all-overlays.html

it does not, like described above.
A first finding is that when you use "zoomMethod: null" on map instanciation, the problem disappears. So this bug could have something todo with the " zoomTween" on the map. Maybe someone could have a detailed look at this?

Best regards,

Johannes Weskamm

_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev



_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev


_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev


_______________________________________________
Dev mailing list
[hidden email]
http://lists.osgeo.org/mailman/listinfo/openlayers-dev