См. Редактировать внизу
Я пытаюсь создать карту, используя mapbox js, с полосатым узором заливки, похожим на это изображение. Мои данные состоят из нескольких полигонов, которые имеют различные свойства. Я хочу, чтобы у определенных полигонов были разные шаблоны, основанные на определенном свойстве под названием «currentSchool». Я мог делать очень похожие вещи, используя свойство fillbox цвета mapbox, но, поскольку мне нужно, чтобы они были полосатыми, я должен использовать свойство fill-pattern, и это доставляет мне некоторые проблемы.
Когда я использую приведенный ниже фрагмент кода, все работает отлично, и карта просто отображает каждый полигон с одинаковым полосатым рисунком.
map.setPaintProperty("blocks", 'fill-pattern', ["case",
["==", ['number', 300],
300],
"pattern",
"pattern2"]);
В приведенном ниже фрагменте для полигонов, чье свойство currentSchool равно 300, я хочу, чтобы их шаблон заливки был «узором». Для всех других многоугольников я хочу, чтобы их заливочный шаблон был pattern2.
map.setPaintProperty("blocks", 'fill-pattern', ["case",
["==", ['number', ["get", "currentSchool"]],
300],
"pattern",
"pattern2"]);
Однако он выдает мне следующее сообщение об ошибке:
Error: "layers.blocks.paint.fill-pattern: data expressions not supported"
Так что, очевидно, "get" выражение вызывает у меня проблемы, хотя я не знаю почему. Я нашел два примера, которые используют fill-pattern и выражение "get" ( здесь и здесь ), поэтому я подумал, что то, что я делаю, должно работать.
В mapbox JS документации говорится следующее под заголовком "выражения данных":
Однако некоторые свойства рисования и макета еще не поддерживают данные выражения. Уровень поддержки указывается строкой «стиль данных на основе данных» таблицы «Поддержка SDK» для каждого свойства. Выражения данных с оператором состояния объекта допускаются только для свойств рисования.
Здесь (под заголовком "fill-pattern") - это таблица, на которую она ссылается. В этой таблице говорится, что fill-pattern поддерживает стилизацию на основе данных, поэтому я не уверен, почему я получаю эту ошибку.
Я провел большой поиск в Интернете и попытался дать ссылку на соответствующую информацию.
Кто-нибудь знает, как я могу исправить эту ошибку? В качестве альтернативы, если действительно невозможно использовать этот вид управляемых данными стилей с шаблоном заполнения mapbox, кто-нибудь знает, как можно получить карту с полигонами, заполненными полосатым узором (аналогично изображению, связанному выше)? Большое спасибо.
Редактировать:
Хорошо, я действительно тупой. Я понял, что происходит не так. Оказалось, что я просто использовал старую версию mapbox, в которой не было поддержки стилей, управляемых данными. Я запустил этот проект некоторое время go, бросил его, а затем снова поднял. Я просто предполагал, что использую самую последнюю версию.