2015-01-27 13 views
6

Ich habe ein MapQuest mit OpenLayer3 angezeigt. Ich möchte Koordinaten des Ansichtsfensters erhalten (Kartenbereich wird gerade angezeigt). Für die ganze Map sollte das so aussehen: (180,90) x (-180, -90).OpenLayer3 - wie man Koordinaten des Ansichtsfensters bekommt

aber ich habe: Top-rechts Länge: 37.570.328,14272983 Top-Rechts-Breite: 18.941.707,105292957 unten links Länge: -37570328,14272983 unten links Breite: -18941707,105292957

I jsFiddle für sie haben: http://jsfiddle.net/0d6d6kxf/2/

(klicken Sie auf "Get Ansichtsfenster coords" div coords der aktuellen Karte zu bekommen)

der Befehl, den ich für get verwenden Koordinaten ist: var Umfang = map.getVi ew(). calculateExtent (map.getSize());

Warum sind diese Ergebnisse nicht in Grad? Wie bekomme ich Grad-Koordinaten?

JS-Code:

$(document).ready(function(){ 
    object = new QuestMapWrapper();  
    object.openMap(); 
    object.getViewportCords();  
}); 

function QuestMapWrapper() 
{ 
    //private var 
    var map; 
    var view; 

    //public var 
    this.wrapperName="QuestMapWrapper"; 

    //methods 
    this.openMap = function() { 

    //$('#ol-viewport').show(); 
    //$('#gmap').hide(); 


    //set layers of one 
    var layers = [ 
    new ol.layer.Tile({ 
     style: 'Road', 
     source: new ol.source.MapQuest({layer: 'osm'}) 
    })] 

    view = new ol.View({ 
    //center: ol.proj.transform([20, 52.702222], 'EPSG:4326', 'EPSG:3857'), 
    center: ol.proj.transform([0., 0.0], 'EPSG:4326', 'EPSG:3857'), 
    //center: [-73.979378, 40.702222], 
    zoom: 1 
    }); 

    map = new ol.Map({ 
     layers: layers, 
     //renderer: exampleNS.getRendererFromQueryString(), 
     target: 'map', 
     view: view 
    }); 

    }; 

    /** Set viewport details */ 
    this.getViewportCords = function() { 

    //var extent = view.calculateExtent(map.getSize()); 
    var extent = map.getView().calculateExtent(map.getSize()); 

    //var extent = map.getExtent().transform(map.projection, map.displayProjection) 

    var factor = 1; // coordinates must be devided by 100000 to get real coord 

    $('#tr-lon').text(extent[2]/factor); 
    $('#tr-lat').text(extent[3]/factor);  
    $('#dl-lon').text(extent[0]/factor); 
    $('#dl-lat').text(extent[1]/factor);  
    } 
} 

Antwort

18

Sie sind fast da.

var extent = map.getView().calculateExtent(map.getSize()); 

Diese Linie ist richtig, aber die Koordinaten, die Sie erhalten, sind in einer Projektion von der Karte verwendet (EPSG: 3857), und Sie müssen es konvertieren wieder normal lon/lat (WGS84/EPSG: 4326).

setzen Sie die folgende Zeile nach dem Ausmaß zu konvertieren:

extent = ol.proj.transformExtent(extent, 'EPSG:3857', 'EPSG:4326'); 

Wie Sie sehen können, wenn Sie die Ansicht erstellt haben, verwenden Sie eine Transformationsfunktion, die Mittelpunktkoordinaten zu EPSG konvertieren: 3857, das ein Format ist, das die Karte verstehen. Wenn Sie Koordinaten in die Ansicht senden, müssen Sie sie in dieser Projektion senden. Wenn Sie aus der Ansicht lesen, müssen Sie sie zurück in die Projektion konvertieren, in diesem Fall EPSG: 4326.

+0

Ja:) ... Ich habe das vor ein paar Minuten nach dem ersten Hinweis gelöst:) ... –

Verwandte Themen