Skip to content
Snippets Groups Projects
Commit 41c0ff75 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

listener for zoom change added

parent 5046b700
No related branches found
No related tags found
1 merge request!221Resolve "plugin API should allow to store user data"
......@@ -26,6 +26,7 @@ function AbstractCustomMap(model, options) {
if (model === undefined) {
throw Error("Model must be defined");
}
this.registerListenerType("onZoomChanged");
this.setElement(options.getElement());
this.setConfiguration(options.getConfiguration());
......@@ -884,6 +885,11 @@ AbstractCustomMap.prototype._createMapChangedCallbacks = function () {
google.maps.event.addListener(this.getGoogleMap(), 'zoom_changed', function () {
sessionData.setZoomLevel(self.getModel(), self.getGoogleMap().getZoom());
});
google.maps.event.addListener(this.getGoogleMap(), 'zoom_changed', function () {
return self.callListeners("onZoomChanged", self.getGoogleMap().getZoom());
});
// listener for changing location of the map (moving left/right/top/bottom
google.maps.event.addListener(this.getGoogleMap(), 'center_changed', function () {
var coord = self.getGoogleMap().getCenter();
......
......@@ -5,7 +5,7 @@ var IdentifiedElement = require('../map/data/IdentifiedElement');
var UserDbOverlay = require('../map/overlay/UserDbOverlay');
var Configuration = require('../Configuration');
var logger= require('../logger');
var logger = require('../logger');
var Promise = require("bluebird");
......@@ -271,12 +271,28 @@ function createProjectMap(options) {
listenerWrapper = function (e) {
return param.callback(e.arg);
};
} else if (param.object === "map") {
object = map;
if (param.type !== "onZoomChanged" && param.type !== "onCenterChanged") {
throw new Error("Unknown listener type: " + param.type);
}
listenerWrapper = function (e) {
return param.callback({modelId: e.object.getId(), zoom: e.arg});
};
} else {
throw new Error("Invalid argument");
}
object.addListener(listenerType, listenerWrapper);
listenersData.push({listener: param.callback, wrapper: listenerWrapper, object: object, type: listenerType});
if (object === map) {
var submaps = map.getSubmaps();
for (var i = 0; i < submaps.length; i++) {
var submap = submaps[i];
submap.addListener(listenerType, listenerWrapper);
listenersData.push({listener: param.callback, wrapper: listenerWrapper, object: submap, type: listenerType});
}
}
},
removeListener: function (param) {
var dbOverlay = getOverlayByName(map, param.dbOverlayName);
......
......@@ -536,6 +536,29 @@ describe('MinervaPluginProxy', function () {
return map.destroy();
});
});
it('on zoom changed', function () {
var callbackOk = false;
var map;
return ServerConnector.getProject().then(function (project) {
map = helper.createCustomMap(project);
helper.createSearchDbOverlay(map);
var proxy = createProxy(map);
proxy.project.map.addListener({
object: "map",
type: "onZoomChanged",
callback: function (data) {
assert.equal(map.getId(), data.modelId);
assert.equal(4, data.zoom);
callbackOk = true;
}
});
return map.setZoom(4);
}).then(function () {
assert.ok(callbackOk);
return map.destroy();
});
});
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment