2016-12-30 9 views
0

Я очень новичок в OpenLayers и JavaScript, и у меня есть следующая проблема.Как установить координаты для многоугольника в openlayers?

У меня есть таблица .csv, представляющая координаты точек, которые я хочу визуализировать на карте, используя OpenLayers.

Я нашел следующий пример на странице OpenLayers,

https://openlayers.org/en/latest/examples/polygon-styles.html

Однако, я не мог понять представление координат там. В частности, я не знал, что означает e в координате [-5e6, 6e6].

Однако я пытался построить простой квадрат на моей карте, используя мои координаты, но это только дает мне точку в центре карты, следующим образом:

https://jsfiddle.net/api/post/library/pure/#&togetherjs=bD5bfPm7vz

Так что дон Не знаете, что именно не так, и что я должен изменить? Я думаю, что все так написано, но не уверены.

И это мой код:

var styles = [ 
    new ol.style.Style({ 
    stroke: new ol.style.Stroke({ 
     color: 'blue', 
     width: 3 
    }), 
    fill: new ol.style.Fill({ 
     color: 'rgba(0, 0, 255, 0.1)' 
    }) 
    }), 
    new ol.style.Style({ 
    image: new ol.style.Circle({ 
     radius: 5, 
     fill: new ol.style.Fill({ 
     color: 'orange' 
     }) 
    }), 
    geometry: function(feature) { 
     // return the coordinates of the first ring of the polygon 
     var coordinates = feature.getGeometry().getCoordinates()[0]; 
     return new ol.geom.MultiPoint(coordinates); 
    } 
    }) 
]; 

var geojsonObject = { 
    'type': 'FeatureCollection', 
    'crs': { 
    'type': 'name', 
    'properties': { 
     'name': 'EPSG:3857' 
    } 
    }, 
    'features': [{ 
    'type': 'Feature', 
    'geometry': { 
     'type': 'Polygon', 
     'coordinates': [[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6], 
      [-3e6, 6e6], [-5e6, 6e6]]] 
    } 
    }] 
}; 

var source = new ol.source.Vector({ 
    features: (new ol.format.GeoJSON()).readFeatures(geojsonObject) 
}); 

var layer = new ol.layer.Vector({ 
    source: source, 
    style: styles 
}); 

    var basic = new ol.layer.Tile({ 
     source: new ol.source.OSM() 
    }); 

var map = new ol.Map({ 
    layers: [basic, layer], 
    target: 'map', 
    view: new ol.View({ 
    center: [0, 3000000], 
    zoom: 2 
    }) 
}); 

ответ

0

ОК, я нашел ответ. Следующие координаты [-5e6, 6e6] в формате X, Y, и основывается на проекции EPSG:3857. XeY равен X * 10^Y. Обычно открытые слои используют проекцию EPSG:3857, но для использования формата координат долготы/широты мы должны использовать проекцию: EPSG:4326 проекции, и мы четко указываем ее: projection: 'EPSG:4326