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).