2016-04-22 7 views
0

私はOLの初心者ですが、この問題を解決する必要があります... 私のマップにこの配列を取得したいと思います。タクを助けて! ;)私の配列CESの セグメント: ["1192.4692,1107.0745","1190.5201,1107.0029","1190.5201,1101.8436","1190.5201,1098.0733", "1192.4162,1097.9464"]マルチラインのオープンレイヤーをマップする配列データを取得する(linesegments)3

var LineSource = new ol.source.Vector({ 
    projection: 'EPSG:3857', 
    format: new ol.format.Feature(LineFeat) 
}); 
var LineFeat = new ol.Feature({ 
    name: "krLine", 
    geometry: new ol.geom.MultiLineString(ces), }); 


LineSource.addFeature(LineFeat); 

var krLineLayer = new ol.layer.Vector({ 
      source: LineSource, 
      projection: 'EPSG:3857', 
     }); 

そして、ここでは私のマップです:

var map = new ol.Map({ 
layers: [ 
     krLineLayer, 
     ], 
target: 'map', 
controls: [ 
    new ol.control.ScaleLine(), 
    new ol.control.MousePosition({ 
     coordinateFormat: ol.coordinate.createStringXY(3),  
    }) 
    ], 
view: mapView 
}); 

をここでは、私は私のマップに行を取得する方法、@Mikelisおよび例により溶液であります:

var elem; 
var arr2 = []; 
for (var i=0; i<ces.length; i++){ 
    elem = ces[i].split(","); 
    arr2.push([parseFloat(elem[0]), parseFloat(elem[1])]); 
} 

console.log(arr2); 

var layerLines = new ol.layer.Vector({ 
     source: new ol.source.Vector({ 
      features: [new ol.Feature({ 
       geometry: new ol.geom.LineString(arr2), 
       name: 'Line', 
       projection: 'EPSG:3857' 
      })] 
     }), 
    }); 
+0

配列を使用しているかどうかわかりませんが、 'multilinestring'は2次元配列をコンストラクタとして取ります。各配列要素は点のxとyです。このようなSth: 'new ol.geom.MultiLineString( [[0、0]、[18、60]]、 [[18,60]、[9,30]] ]); ' –

+0

はいiその事実を知って、これは私が解決する必要がある..私の配列はアルゴリズムによって生成されるためです。このアルゴリズムは次のような座標ペアとしてデータを持つオブジェクトを生成します: 'data:" 1190.5201,1107.0029 "'その後、すべての個々の**データ**を1つの配列にプッシュしました。そして今、私は正しい形式に変換する必要があります。しかし、私はどのように考えていない。私はそれを個性的な文字列に '.split( '、')'しようとしましたが、大括弧でスタックしていました["+" + "[" ' 最後に、LineStringまたはMultiLinestringとして地図に配置することは重要ではありません。道路を視覚化するだけです。 –

答えて

0

既にペアの配列があります。その配列の各要素を取り出し、split(",")で2つに分割します。これにより、文字列のarray[2]が得られます。次に、各文字列を番号に変換し、array[2]という新しい配列に貼り付けます。テスト済み。

var arr = ["1192.4692,1107.0745","1190.5201,1107.0029","1190.5201,1101.8436","1190.5201,1098.0733", "1192.4162,1097.9464"]; 
var elem; 
var arr2 = []; 
for (var i=0; i<arr.length; i++){ 
    elem = arr[i].split(","); 
    arr2.push([parseFloat(elem[0]), parseFloat(elem[1])]); 
} 
関連する問題