openlayers/ol3 — pull request #2063 by tschaub (2014-05-13 22:46:16+00:00)
Title: Fire moveend only once after view settles

Currently, the `moveend` event is fired multiple times after the view "settles." This can be seen by logging events in any of the examples:
```js
var ends = 0;
map.on('moveend', function() {
++ends;
console.log('end', ends);
});
```

The Canvas and WebGL renderers behave differently with regard to the excessive events, but the event is consistently fired too often. Instead, `moveend` should be fired under these conditions:

* the user is not interacting with the map in a way that modifies the view
* the view is not animating between states
* the view changed (with regard to visible extent) since the last time the event was fired

Note that `moveend` **will** be fired even if there are tiles still loading. Rendering new tiles does result in a changed view (from the user's perspective), but rendering tiles does not "move" the view (and `moveend` should not wait until all tiles are rendered). If it is desirable to know when all tiles have finished loading and are rendered, that should be handled by a different event (without "move" in the name).

Fixes #1823.