2016-07-31 41 views
0

Ich habe einige Probleme mit OpenLayers3 und versuchen, eine Vektorebene anzuzeigen. Ich sammle die Geometrien von SQL Server in C# und übergebe sie an Javascript. Von dort soll dieser Code ihn auf eine Karte zeichnen (der Code ist angepasst von http://www.c-sharpcorner.com/article/getting-started-with-openlayers-3-and-spatial-data/).OpenLayers3 und Javascript - Vektoren werden nicht angezeigt

<script type="text/javascript"> 
     //services for our shapes 
     var GeoArray = <%=JavaScript.Serialize(this.CGeo) %>; 
     var wktReader = new ol.format.WKT(); 
     var featureCollection = []; 
     //start getting, styling and drawing shapes 
     for (var i = 0; i < GeoArray.length; i++) 
     { 
      var feature = wktReader.readFeature(GeoArray[i]); 
      feature.getGeometry().transform('EPSG:4326', 'EPSG:3857'); 
      feature.setStyle(new ol.style.Style(
      { 
       stroke: new ol.style.Stroke(
       { 
        color: 'red', 
        width: 3 
       }), 
       fill: new ol.style.Fill(
       { 
        color: 'rgba(255, 0, 0, 1)' 
       }) 
      })); 
      featureCollection.push(feature); 
     } 
     //create our vector source and layer 
     var Vsource = new ol.source.Vector({features: featureCollection}); 
     var vectorLayer = new ol.layer.Vector({source: Vsource}); 
     //define our map and basemap layer 
     var osmLayer = new ol.layer.Tile(
     { 
      source: new ol.source.OSM() 
     }); 
     var map = new ol.Map(
     { 
      layers: [osmLayer, vectorLayer], 
      target: 'map', 
      view: new ol.View(
      { 
       center: [0, 0], 
       zoom: 2 
      }) 
     }); 
    </script> 

Wir tun die Formen aus dem C# abholen (sie sind alle Polygone, und ich habe einige alert (GeoArray.length) und alert (featureCollection.length) ruft getan, die alle wieder mit dem kommen müssen zurückgegebener Betrag), aber sie werden nicht gezogen.

Nebenbei verwenden wir das Koordinatensystem EPSG: 3111, aber wenn ich das verwende (im Gegensatz zu EPSG: 3857), wird es überhaupt nicht funktionieren (Eigenschaft kann nicht erhalten werden). Aber selbst wenn ich festlege, dass es 3857 ist (was es nicht ist), sollte es immer noch zeichnen, nur falsch ausgerichtet sein (sogar die Übersetzungszeile entfernt und nichts passiert).

Antwort

0

Okay, ich habe versucht, alten OpenLayers-Code mit OpenLayers3 zu verwenden. Neue Antwort, für alle Interessierten (im Moment lädt dies nur eine Funktion):

<script> 
     //services for our shapes 
     var GeoArray = <%=JavaScript.Serialize(this.CGeo) %>; 
     var format = new ol.format.WKT(); 
     var featureCollection=[]; 
     var feature=format.readFeature(GeoArray[1], 
     { 
      dataProjection: 'EPSG:3111', 
      featureProjection: 'EPSG:3857' 
     }); 
     var VLayer = new ol.layer.Vector({ 
      source: new ol.source.Vector({ 
       features: [feature] 
      }) 
     }); 
     //define our map and basemap layer 
     var osmLayer = new ol.layer.Tile(
     { 
      source: new ol.source.OSM() 
     }); 
     var map = new ol.Map(
     { 
      layers: [osmLayer, VLayer], 
      target: 'map', 
      view: new ol.View(
      { 
       center: [0, 0], 
       zoom: 2 
      }) 
     }); 
    </script>