diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js index c5387bf2af597b16963a46577f7eb54cad7b9e68..3c9ca63ffa3af7cd915afbe33aff14aae2f4911d 100644 --- a/frontend-js/src/main/js/map/AbstractCustomMap.js +++ b/frontend-js/src/main/js/map/AbstractCustomMap.js @@ -1069,6 +1069,11 @@ AbstractCustomMap.prototype.setCenter = function (coordinates) { } }; +AbstractCustomMap.prototype.getCenter = function () { + var coordinates = this.getGoogleMap().getCenter(); + return this.fromLatLngToPoint(coordinates); +}; + /** * Sets zoom level for google maps. * diff --git a/frontend-js/src/main/js/plugin/MinervaPluginProxy.js b/frontend-js/src/main/js/plugin/MinervaPluginProxy.js index 40eeb4fb94da9762fb1bc48a7047cff1760070af..496f20b31e28fa5237bb71b17fbd55ab8b5ee63a 100644 --- a/frontend-js/src/main/js/plugin/MinervaPluginProxy.js +++ b/frontend-js/src/main/js/plugin/MinervaPluginProxy.js @@ -402,6 +402,13 @@ function createProjectMap(options) { } return submap.setCenter(new google.maps.Point(params.x, params.y)); }, + getCenter: function (params) { + var submap = map.getSubmapById(params.modelId); + if (submap === null) { + throw new Error("Unknown modelId: " + params.modelId); + } + return submap.getCenter(); + }, fitBounds: function (params) { var submap = map.getSubmapById(params.modelId); if (submap === null) { diff --git a/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js b/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js index f6ff68f9fdaa3f4b893e05e9d7c37ac4ec207f1d..72bb640b70690b43bafe385ee94a89d414619379 100644 --- a/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js +++ b/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js @@ -310,6 +310,26 @@ describe('MinervaPluginProxy', function () { }); }); + it("getCenter", function () { + var map, proxy; + return ServerConnector.getProject().then(function (project) { + map = helper.createCustomMap(project); + proxy = createProxy(map); + return proxy.project.map.setCenter({ + modelId: 15781, + x: 10, + y: 20 + }); + }).then(function () { + var center = proxy.project.map.getCenter({modelId: 15781}); + assert.ok(center instanceof google.maps.Point); + assert.closeTo(parseFloat(center.x), 10, helper.EPSILON); + assert.closeTo(parseFloat(center.y), 20, helper.EPSILON); + }).then(function () { + map.destroy(); + }); + }); + it("setZoom", function () { var map, proxy; return ServerConnector.getProject().then(function (project) {