OpenLayers 4 переменное вращение иконок - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть множество источников данных, которые я читаю из API. Эти данные имеют ряд свойств относительно конечной точки API, но все они имеют некоторые общие, а именно:

  • Easting
  • Northing
  • Вращение
  • Имя

Исходя из этого, я генерирую объекты GeoJSON (все они являются точечными объектами и преобразовываю восток / север в широты / долготы) и отображаю каждый источник данных на карте с помощью некоторого общего кода:

let vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
        features: (new ol.format.GeoJSON()).readFeatures(featureCollection)
    }),
    style: style
});

this.map.addLayer(vectorLayer);

Это получает точки на моей карте, и я могу их стилизовать, создавая собственные стили, я использую изображения (.png) в качестве маркера точки.

Но мне нужно повернуть маркер на основе атрибута вращения данных, и я понятия не имею, как это сделать.

Каждая точка данных из API будет иметь свое собственное вращение - они не все повернуты в одинаковой степени.

Эта система первоначально использовала this.map.addOverlay(overlay) для добавления каждой точки, что было хорошо при тестировании, но на самом деле не так хорошо масштабировалось, так как их рендеринг занимал слишком много времени. В настоящее время мой самый большой набор данных - всего лишь 7000 точек данных.

Каков наилучший способ достижения этого?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы можете использовать функцию стиля вместо статического стиля: https://openlayers.org/en/latest/apidoc/ol.html#.StyleFunction

Таким образом, вы можете стилизовать каждую функцию, вычисляя вращение на основе его атрибутов.

0 голосов
/ 26 апреля 2018

Придерживаюсь отсутствия ответа и ничего очевидного в документации. Я пришел к выводу, что вы не можете сделать это ... это позор.

Так что я изменил тактику и на основеэтот SO QA вращающийся многоугольник в OpenLayers 3 Я написал оболочку для преобразования моих точечных объектов в многоугольники с фактическим местоположением в качестве центральной точки.Затем я мог вращать многоугольник.

Не идеально, и оказалось, что мои данные поворота были абсолютно непроницаемы - они определены как Угол, но не в градусах и не в радианах.

...