[Mapbender-commits] r6613 - trunk/mapbender/http/plugins
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Thu Jul 22 10:48:58 EDT 2010
Author: verenadiewald
Date: 2010-07-22 14:48:58 +0000 (Thu, 22 Jul 2010)
New Revision: 6613
Added:
trunk/mapbender/http/plugins/mb_getApi.js
Log:
api for get params
Added: trunk/mapbender/http/plugins/mb_getApi.js
===================================================================
--- trunk/mapbender/http/plugins/mb_getApi.js (rev 0)
+++ trunk/mapbender/http/plugins/mb_getApi.js 2010-07-22 14:48:58 UTC (rev 6613)
@@ -0,0 +1,141 @@
+var $getApi = $(this);
+
+var GetApi = function (o) {
+
+ var getParams = function () {
+ var params = {};
+
+ var getString = document.location.search.substr(1,document.location.search.length);
+ if (getString === '') {
+ return null;
+ }
+
+ var gArr = getString.split('&');
+ for (i = 0; i < gArr.length; ++i) {
+ var v = '';
+ vArr = gArr[i].split('=');
+ if (vArr.length > 1) {
+ v = vArr[1];
+ }
+ var key = unescape(vArr[0]);
+ params[key] = unescape(v);
+ }
+ return params;
+ };
+
+ var zoomToBbox = function (zoomBbox) {
+ options.$target.each(function () {
+ var mapObj = $(this).mapbender();
+ if (mapObj.id.match(/^overview/)) {
+ return;
+ }
+
+ if (mapObj === null) {
+ var e = new Mb_exception("mb_getApi: unknown map object");
+ return;
+ }
+
+ if (zoomBbox === "") {
+ var e = new Mapbender.Notice("mb_getApi: no zoomBbox found.");
+ return;
+ }
+ else {
+ var zoomBboxParams = zoomBbox.split(",");
+ var newExtent = new Mapbender.Extent(
+ parseFloat(zoomBboxParams[0]),
+ parseFloat(zoomBboxParams[1]),
+ parseFloat(zoomBboxParams[2]),
+ parseFloat(zoomBboxParams[3])
+ );
+ //check if EPSG param is given with ZOOM parameter
+ if (zoomBboxParams.length === 5 && zoomBboxParams[4].match(/EPSG/)) {
+ mapObj.transformCoords({
+ extent : newExtent,
+ crs : zoomBboxParams[4]
+ });
+ }
+ else {
+ mapObj.calculateExtent(newExtent);
+ mapObj.setMapRequest();
+ }
+ }
+ });
+ };
+
+ var params = getParams();
+
+ Mapbender.events.init.register(function () {
+ setCRS = function (params) {
+ if (!params.CRS) {
+ return;
+ }
+
+ options.$target.each(function () {
+ var mapObj = $(this).mapbender();
+ mapObj.setCrs({
+ crs : params.CRS,
+ callback : function () {
+ setZOOM(params);
+ }
+ });
+ });
+ }
+
+ setZOOM = function (params) {
+ if (!params.ZOOM) {
+ return;
+ }
+
+ options.$target.each(function () {
+ var mapObj = $(this).mapbender();
+ if (mapObj.id.match(/^overview/)) {
+ return;
+ }
+
+ if (mapObj === null) {
+ var e = new Mb_exception("mb_getApi: unknown map object");
+ return;
+ }
+
+ var zoomParams = params.ZOOM.split(",");
+
+ var epsg = "";
+ if(zoomParams[zoomParams.length -1].match(/EPSG/)){
+ epsg = zoomParams[zoomParams.length -1];
+ zoomParams.pop();
+ }
+
+ if (zoomParams.length === 4) {
+ var newExtent = new Mapbender.Extent(
+ parseFloat(zoomParams[0]),
+ parseFloat(zoomParams[1]),
+ parseFloat(zoomParams[2]),
+ parseFloat(zoomParams[3])
+ );
+
+ if (epsg) {
+ mapObj.transformExtent({
+ extent : newExtent,
+ crs : epsg
+ });
+ }
+ else {
+ mapObj.calculateExtent(newExtent);
+ mapObj.setMapRequest();
+ }
+ }
+
+ //zoomParams contains 2 coordinates + scale (and optional EPSG param)
+ if (zoomParams.length === 3) {
+ mapObj.zoom(true, zoomParams[2], zoomParams[0], zoomParams[1], epsg);
+ }
+ });
+ }
+
+ setCRS(params);
+ setZOOM(params);
+ });
+
+};
+
+$getApi.mapbender(new GetApi(options));
More information about the Mapbender_commits
mailing list