Как разделить (горизонтальный) один объект LineString на разные цвета с одинаковой длиной между маркерами на карте

У меня есть требование разделить один объект LineString на несколько цветов между маркером и отображением на карте. Например, два маркера A и B между одним LineString, который имеет значение strokeWidth 20. Теперь мне нужно разделить 20 strokeWidth на 10 равных частей с помощью разный-разный цвет, т.е. 10 строк с каждой строкой имеют ширину в 2 штриха. На приведенном ниже изображении показана только одна строка строк, которая связана с двумя маркерами А и В, а одна строка строк имеет разные цвета в одно и то же время Образец изображения

Вот код, который я пробовал, но он принимает либо первый, либо последний цвет только для строки строки.

createMap() {

  //Initializing Map Instance
  var map = new ol.Map({
      target: 'map',
      layers: [
        new ol.layer.Tile({
          source: new ol.source.OSM()
        })
      ],
      view: new ol.View({
        center: [0, 0],
        zoom: 4
      }),
      projection: "EPSG:4326"
    });


    //coordinate for Marker and LineString
    var markerA = [
      12.211180191503997,
      -11.953125
    ];

    var markerB = [
      37.43997405227057,
      10.8984375
    ];

    var singleLineString = [
      [
        12.211180191503997,
        -11.953125
      ],
      [
        37.43997405227057,
        10.8984375
      ]
    ];


    var source = new ol.source.Vector();

    //Marker A feature
    var aFeature = new ol.Feature({
      geometry: new ol.geom.Point(ol.proj.fromLonLat(markerA)),
      name: 'markerA',
      population: 4000,
      rainfall: 50
    });

    //Marker B feature
    var bFeature = new ol.Feature({
      geometry: new ol.geom.Point(ol.proj.fromLonLat(markerB)),
      name: 'markerB',
      population: 4000,
      rainfall: 500
    });

    //LineString Feature
    var lineFeature = new ol.Feature({
      geometry: new ol.geom.LineString(
        singleLineString
      ),
      name: 'singleLineString',
      population: 4000,
      rainfall: 500
    });

    //creating style for both Marker A and B
    var abStyle = new ol.style.Style({
      image: new ol.style.Icon(/** @type {olx.style.IconOptions}                        */({
        anchor: [0.2, 46],
        anchorXUnits: 'fraction',
        anchorYUnits: 'pixels',
        src: 'https://openlayers.org/en/v4.5.0/examples/data/icon.png'
      }))
    });

    // style for line String but online taking first argument color for the line
    var lineStyle = new ol.style.Style({
      stroke: new ol.style.Stroke({
        color: "red",
        width: 5
      },
      {
        color: "yellow",
        width: 5
      },
      {
        color: "green",
        width: 5
      },
      {
        color: "blue",
        width: 5
      }
      )
    });

    //Adding style into feature
    aFeature.setStyle(abStyle);
    bFeature.setStyle(abStyle);
    lineFeature.setStyle(lineStyle);

    //Adding feature into vector source
    source.addFeature(aFeature);
    source.addFeature(bFeature);
    source.addFeature(lineFeature);

    //creating vector layer with source
    var layer = new ol.layer.Vector({
      source: source,
      zIndex: 4
    });

    //adding layer into map
    map.addLayer(layer);    

  }

Любая помощь очень ценится

0 ответов

Другие вопросы по тегам