2014-11-13 5 views
1

Я хочу показать строки на карте, используя ol.genom.lineString, мой план в будущем будет реализовывать три строки одновременно с использованием multiLineString. Моя проблема заключается в том, что я не могу понять, как реализовать LineString. это где им в настоящее:LineString и multiLine openlayer3

http://jsfiddle.net/6RS2z/125/

(function(){ 

var map = new ol.Map({ 
    layers: [new ol.layer.Tile({source: new ol.source.OSM()})], 
    target: document.getElementById('map'), 
    view: new ol.View({ 
    center: [0, 0], 
    zoom: 1 
    }) 
}); 

var vectorSource = new ol.source.Vector({ 
    //create empty vector 
}); 

var plyFeature = new ol.Feature({ 
    genometry : new ol.geom.LineString([0,0,18,60], 'EPSG:4326', 'EPSG:3857') 
}); 

vectorSource.addFeature(plyFeature); 

var plyLayer = new ol.layer.Vector({ 
    source : vectorSource 
}) 

map.addLayer(plyLayer); 

})();

ответ

5

Чтобы создать ol.geom.LineString, вы предоставляете массив точек в качестве первого аргумента конструктора:

var geom = new ol.geom.LineString([[0, 0], [18, 60]]); 

Чтобы преобразовать геометрию проекции вид, что вы сделали следующее:

geom.transform('EPSG:4326', 'EPSG:3857'); 

Когда ты создайте ol.geom.MultiLineString, вы предоставите массив linestrings в качестве аргумента первого конструктора:

var multigeom = new ol.geom.MultiLineString([ 
    [[0, 0], [18, 60]], 
    [[18, 60], [9, 30]] 
]); 

Преобразования координат работают одинаково для всех типов геометрии.

+1

спасибо! это мое решение http://jsfiddle.net/6RS2z/132/. Я не мог понять, как иметь разные цвета на полилиниях при использовании ol.new.multiLineString. Прямо сейчас я использую разные слои для каждой полилинии, чтобы я мог решить, какой из них показывать сверху. Это хорошее решение? Я был бы признателен за любые советы, которые у вас могут быть. – 199user911

+0

Лучше спросить о стилях в новом вопросе, потому что это не связано с этим. – ahocevar