0

私はOLの初心者ですが、この問題を解決する必要があります...この配列を自分のマップに取得したいです。助けてくれてありがとう!;) 私の配列 ces のセグメント: ["1192.4692,1107.0745","1190.5201,1107.0029","1190.5201,1101.8436","1190.5201,1098.0733", "1192.4162,1097.9464"]

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'
          })]
      }),
  });
4

1 に答える 1

0

すでにペアの配列があります。その配列の各要素を で 2 つに分割しsplit(",")ます。これにより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])]);
}
于 2016-04-23T07:51:31.687 に答える