2017-07-06 1 views
0

Ich brauche den GeoJSON Vektordaten von EPSG zu transformieren: 4326 EPSG: 3857 ...Openlayers 3 Reprojizier EPSG: 4326 Vektor EPSG: 3857

Ich habe eine Karte ...

var olMapDiv = document.getElementById('olmap'); 
      control.map = new ol.Map({ 
       target: olMapDiv, 
       renderer: 'canvas', 
       layers: layers, 
       interactions: ol.interaction.defaults({ 
        altShiftDragRotate: false, 
        dragPan: false, 
        rotate: false 
       }).extend([new ol.interaction.DragPan({ kinetic: null })]), 
       pixelRatio: 1, 
       loadTilesWhileAnimating: true, 
       loadTilesWhileInteracting: true, 
       view: view 
      }); 

und Blick ...

var view = new ol.View({ 
       // make sure the view doesn't go beyond the 22 zoom levels of Google Maps 
       maxZoom: 21, 
       projection: 'EPSG:3857', 
       center: [0, 0], 
       zoom: 0 
      }); 

Ich definiere meine GeoJSON Objekt ...

var geoJsonObj = { 
         'type': 'Feature', 
         'geometry': JSON.parse(shape), 
         'name': 'V', 
         'id': V.vID 

        } 

Ich versuche, die Funktionen in einem offenen Schichten Vector-Objekt zu lesen und Projektionsparameter liefern ...

var vectorSource = new ol.source.Vector({ 
         features: (new ol.format.GeoJSON()).readFeatures(geoJsonObj, {defaultDataProjection:"EPSG:4326",featureProjection:"EPSG:3857"}) 
        }); 

Dann verwende ich die "vectorSource" oben in einer neuen Vektorschicht ...

vectors = new ol.layer.Vector({       
         title: V.vID, 
         source: vectorSource, 
         id: V.vID, 
         name: 'V', 
         label: response.VList[key].Acres, 
         fill: response.VList[key].Shade, 
         stroke: defaultStrokeHex, 
         style: function (feature, resolution) { 
          var text = resolution * 100000 < 10 ? response.VList[key].Acres : ''; 

          if (text != "") { 
           styleCache[text] = [new ol.style.Style({ 
            stroke: new ol.style.Stroke({ 
             color: '#319FD3', 
             width: 1 
            }), 
            text: new ol.style.Text({ 
             font: '12px Calibri,sans-serif', 
             text: text, 
             fill: new ol.style.Fill({ 
              color: '#000' 
             }), 
             stroke: new ol.style.Stroke({ 
              color: '#fff', 
              width: 3 
             }) 
            }), 
            fill: new ol.style.Fill({ 
             color: rcisWebMapUtilities.convertHex(response.VList[key].Shade, '0.5') 
            }) 
           })]; 
          } 
          else if (text == "") { 
           styleCache[text] = [new ol.style.Style({ 
            fill: new ol.style.Fill({ 
             color: rcisWebMapUtilities.convertHex(response.VList[key].Shade, '0.5') 
            }) 
           }) 
           ] 
          } return styleCache[text]; 
         } 


        }); 

Egal was ich tue, ich entweder sehe der Vektor gezogen ... aber in EPSG: 4326 oder nichts Lasten ...

ich viel zu viel Zeit damit verbracht habe versucht, herauszufinden, wie um OpenLayers3 dazu zu bringen dies zu tun ... Jede Hilfe wird sehr geschätzt !!

Antwort

1

Wenn Sie EPSG verwenden: 4326 Ihrer Ansicht nach sollten Ihre GeoJSON Vektor Erklärung sein

var vectorSource = new ol.source.Vector({ 
features: (new ol.format.GeoJSON()).readFeatures(geojsonObject, { 
dataProjection: 'EPSG:4326', 
featureProjection:'EPSG:4326' }) 
}); 

Wenn Sie EPSG verwenden: 3857 Ihrer Ansicht nach Verwendung dieses:

var vectorSource = new ol.source.Vector({ 
features: (new ol.format.GeoJSON()).readFeatures(geojsonObject, { 
dataProjection: 'EPSG:4326', 
featureProjection:'EPSG:3857' }) 
}); 

Nur dataProjection zu erklären ist der Quellcode. Bezeichnet das epsg Ihrer Koordinaten innerhalb der Geojson-Datei. Während featureProjection ist die EPSG deiner Ansicht und damit die EPSG deiner Karte. Mittelwerte sind die EPSG-Original-Coords sollten umgesetzt werden.

So versuchen Sie, sich an diese Regel zu erinnern: featureProjection und ol.View Projektionserklärung sollte gleich sein.

Beachten Sie, dass Ihre Geojson-Koordinaten in EPSG projiziert werden: 4326.

+0

Großartig! Danke für die Antwort und die Hilfe !! Ja, das Geojson wird in EPSG projiziert: 4326 ... Ich habe die Änderungen (** Siehe oben **) gemacht, die Sie in Ihrer Antwort vorgeschlagen haben, und jetzt lädt die Karte überhaupt nicht ... zum Beispiel, ich nicht einmal Siehe "ZoomSlider" hinzugefügt. –

+0

Keine Fehler? Keine Brandstifter? Einfach nicht laden ?? Möchten Sie eine Geige bereitstellen, damit wir herausfinden können, was Ihr Problem ist – pavlos

+0

Es funktioniert ... was ich nicht sah, ist, dass es einen anderen Fehler gab, der nicht ausgelöst wurde, der verursachte, Seite falsch zu laden .. .once Ich habe den Fehler behoben, alles funktioniert wie erwartet. Vielen Dank!! –

Verwandte Themen