Как получить значение 'line-dasharray' из geo json для mapbox GL - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь получить значение через ['get', 'line-dasharray'], но получаю сообщение об ошибке

Вот мой код

var data = {
          'type': 'FeatureCollection',
          'features': [
 {
              'type': 'Feature',
              'geometry': {
                'type': 'LineString',
                'coordinates': []
              },
              'properties': {
                'route_id': 300,
                'route_url': 'http://test.com/file.gpx',
                'line-color': '#426d7e',
                'line-width':     3,
                'line-opacity':   1,
                'line-dasharray': [5, 2]
              },
            },
]
    }

// some code



              map.addSource('locations-rote', {
                type: 'geojson',
                data: data,
                generateId: true
              });

map.addLayer({
                  'id': 'route-coordinates',
                  'type': 'line',
                  'source': 'locations-rote',
                  'layout': {
                    'line-join': 'round',
                    'line-cap': 'round'
                  },
                  'paint': {
                    'line-color': ['get', 'line-color'],
                    'line-width': ['get', 'line-width'],
                    'line-opacity': ['get', 'line-opacity'],
                    'line-dasharray': ['get', 'line-dasharray']
                  }
                });

Я пытаюсь использовать выражение массива - https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/#types -массив , но также получить ошибку. Подскажите как решить проблему.

1 Ответ

0 голосов
/ 28 мая 2020

Хотя вы не указали, в чем именно заключается ошибка, вполне вероятно, что вы видите что-то похожее на:

Error: layers.route-coordinates.paint.line-dasharray: data expressions not supported

Как указано в поддержке SDK для line-dasharray документация здесь , это связано с тем, что стиль, управляемый данными (т. е. использование выражения для определения значений свойства с информацией, полученной из ваших исходных данных), еще не поддерживается в GL JS для свойства line-dasharray.

Если вы хотите стилизовать штриховые линии по-разному в зависимости от различных свойств, вы можете вместо этого создать несколько разных слоев, ссылающихся на эти исходные данные, применив фильтры .

...