Proj4js
From MapbenderWiki
Proj4js ist eine Implementierung der Proj Bibliothek in Javascript. Gegründet wurde das Projekt von den MapBuilder Entwicklern und wird nun von Openlayers Entwicklern weitergeführt.
Verwendung in Mapbender
Hier ein Demo-Weg um Proj4js innerhalb des Mapbenders zu verwenden.
Checkout
svn co http://svn.codehaus.org/mapbuilder/cscs/trunk/proj4js/lib proj4js
Die benötigten Dateien (s.u.) werden in den Ordner http/extensions kopiert.
Einbinden der Dateien OLprototype.js, und wahlweise proj4js.js (minimale Version die Code evtl dynamisch per ajax nachläd z.b. bei EPSG:31466) oder proj4js-combined.js bzw proj4js-compressed.js die bereits den gesamten Code beinhalten. In der Map.php
require_once(dirname(__FILE__) . "/../extensions/OLprototype.js"); require_once(dirname(__FILE__) . "/../extensions/proj4js.js");
In allen Fällen werden die EPSG definitionen dynamisch nachgeladen (Außer EPSG:4326 und EPSG:4269) dazu muss der Pfad vor der ersten Nutzung noch richtig eingestellt werden noch richtig eingestellt werden:
Proj4js.libPath = "./extensions/"
dort müssen sich die Unterordner defs für die EPSG Definitionen und projCode für das dynamische Code nachladen befinden.
EPSG Definitionen von denen man vorher weiß, dass sie gebraucht werden können auch schon vorher eingebunden werden, einzeln sind sie nicht groß.
require_once(dirname(__FILE__) . "/../extensions/defs/EPSG31466.js");
Die Transformation läuft dann wie folgt ab:
var e4326 = new Proj4js.Proj("EPSG:4326");
var e31466 = new Proj4js.Proj("EPSG:31466");
var p = new Proj4js.Point(x,y);
Proj4js.transform(e4326,e31466,p);
x = p.x;
y = p.y;
Die Dateien OLprototype.js und proj4js-compressed.js sind zusammen knapp 100kb groß, auch mit eingeschaltetem GZIP ergibt sich ein Übertragungsvolumen von ca. 25kb
In dem Ordner defs sind nicht besonders viele Definitionen, diese sollen jedoch auch dynamisch von http://spatialreference.org/ref nachgeladen werden, das habe ich aber noch nicht getestet. Ansonsten könnte man auch ein Script schreiben, dass diese aus der Datenbank generiert.
