Merge pull request #1348 from tschaub/beforechange

Add `ol.ObjectEvent` for changes to `ol.Object` properties.  Previously, `ol.Object` dispatched instances of `goog.events.Event` with type `change`.  Now `ol.ObjectEvent` instances will be dispatched on property changes.  The events include a `getKey` method to get the name of the property being changed.  The `beforepropertychange` type event is fired before a property value changes, and the `propertychange` type event fires after the property value changes.
This commit is contained in:
Tim Schaub
2013-12-13 07:28:36 -08:00
9 changed files with 334 additions and 34 deletions

View File

@@ -25,11 +25,13 @@ var deviceOrientation = new ol.DeviceOrientation();
var track = new ol.dom.Input(document.getElementById('track'));
track.bindTo('checked', deviceOrientation, 'tracking');
deviceOrientation.on('change', function(event) {
document.getElementById('alpha').innerHTML = event.target.getAlpha();
document.getElementById('beta').innerHTML = event.target.getBeta();
document.getElementById('gamma').innerHTML = event.target.getGamma();
document.getElementById('heading').innerHTML = event.target.getHeading();
deviceOrientation.on('propertychange', function(event) {
// event.getKey() is the changed property name
var key = event.getKey();
var element = document.getElementById(key);
if (element) {
element.innerHTML = deviceOrientation.get(key);
}
});
// tilt the map

View File

@@ -29,7 +29,7 @@ geolocation.bindTo('projection', map.getView());
var track = new ol.dom.Input(document.getElementById('track'));
track.bindTo('checked', geolocation, 'tracking');
geolocation.on('change', function() {
geolocation.on('propertychange', function() {
$('#accuracy').text(geolocation.getAccuracy() + ' [m]');
$('#altitude').text(geolocation.getAltitude() + ' [m]');
$('#altitudeAccuracy').text(geolocation.getAltitudeAccuracy() + ' [m]');