2013-03-05 7 views
6

Ich benutze ein Leafletjs für ein Projekt zu Hause (Das ist es, gerade jetzt . Aber ich kann nicht finden, muss die Projektion einrichten, ich habe es für OpenLayers gefunden, die so aussieht :Setup-Projektion auf Leafletjs

// Openlayers settings 
    //var defaultMaxExtent = new OpenLayers.Bounds(427304, 6032920, 927142, 6485144); 
    var defaultMaxExtent = new OpenLayers.Bounds(427304, 6032920, 927142, 6485144); 

    var defaultProjection = "EPSG:25832"; 
    var defaultUnits = "Meters"; 
    var defaultResolutions = new Array(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024); 
    var defaultExtent = new OpenLayers.Bounds(215446, 2103547, 706886, 6203897); //this extent is used when the page is loaded. 
    //var defaultExtent = new OpenLayers.Bounds(705446, 6203547, 706886, 6203897); //this extent is used when the page is loaded. 
    map = new OpenLayers.Map('map', { projection: defaultProjection, units: defaultUnits, maxExtent: defaultMaxExtent, resolutions: defaultResolutions, controls: [ 

     // Hide controls by default 
    new OpenLayers.Control.Navigation({ wheelChange: HideInfoBox() }), 
    new OpenLayers.Control.ArgParser(), 
    new OpenLayers.Control.Attribution()] 
    }); 
    layer = new OpenLayers.Layer.WMS("kort", "http://serverAddress?", { nbr: '', username: 'admin', password: 'adminadmin', layers: 'Overlayer', format: 'image/png' }); 

Jeder, der mir helfen kann

Update:? ich habe versucht, die Standard-Projektion von Leaflet zu nehmen und es besonders angefertigt, wie so

L.CRS.EPSG25832 = L.extend({}, L.CRS, { 
    code: 'EPSG:25832', 
    projection: L.Projection.SphericalMercator, 
    transformation: new L.Transformation(0.5/Math.PI, 0.5, -0.5/Math.PI, 0.5), 

    project: function (latlng) { // (LatLng) -> Point 
     var projectedPoint = this.projection.project(latlng), 
       earthRadius = 6378137; 
     return projectedPoint.multiplyBy(earthRadius); 
    } 
}); 

Jetzt ist die Projektion korrekt. Aber das Problem ist jetzt, dass die Koordinaten falsch sind, also wenn ich zum Beispiel die Koordinaten von Leaflet bekomme, ist Kolding jetzt mitten in Frankreich, nicht in Dänemark.

+0

Vielleicht Hilfe Quellen: https://github.com/Leaflet/Leaflet/blob/master/src/map/Map.js#L10 und https://github.com/ Broschüre/Broschüre/Baum/Meister/src/geo/crs. – tbicr

+0

was läuft schief? – flup

+0

@FLUP Das sollte mehr wie dieses Bild aus der Quelle strecken https://dl.dropbox.com/u/2230967/DKv2.PNG – mortenstarck

Antwort

6

Ich fand die Lösung für das Problem selbst. dies stattdessen Dadurch:

var crs = L.CRS.proj4js('EPSG:25832', '+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs', new L.Transformation(0.5/(Math.PI * L.Projection.Mercator.R_MAJOR), 0.5, -0.5/(Math.PI * L.Projection.Mercator.R_MINOR), 0.5)); 

    var map = new L.Map('Krak-Map', { center: new L.LatLng(latitude, longitude), zoom: 17, crs: crs }); 
+2

Hallo Morten, ich habe ähnliche Probleme hier mit anderen Projektion: http: // stackoverflow. com/questions/31070949/leaflet-map-with-wms-and-custom-projektion Frage: Woher bist du gegangen, um den Transformationsteil herauszufinden? – Steen

+0

Also war das Problem, dass EPSG: 25832 wurde nicht unterstützt, aber Sie haben es korrigiert, indem Sie utm + Zone 32 und so weiter? –

Verwandte Themen