Что эквивалентно map.beforeRender в openlayers 4? - PullRequest
0 голосов
/ 25 июня 2018

У меня есть приложение карты OL3, которое использует экспериментальное событие map.beforeRender для анимации автоматического поворота вида на основе данных GPS-курса.

Теперь я хочу перейти на ol 4 и вижу, что функция beforeRender больше не существует.

map.beforeRender(function(map, frameState) {
if (frameState !== null) {
    // use sampling period to get a smooth transition
    var m = frameState.time - deltaMean * 1.5;
    m = Math.max(m, previousM);
    previousM = m;
    // interpolate position along positions LineString
    var c = positions.getCoordinateAtM(m, true);
    var view = frameState.viewState;
    if (c) {
        view.center = getCenterWithHeading(c, -c[2], view.resolution);
        view.rotation = -c[2];
        currentRotation = -c[2];
        rotateMap(radToDeg(view.rotation));
        marker.setPosition(c);
    }
}
return true; // Force animation to continue
});

итак, если сегодня я обновлюсь до OL4, какая альтернатива? где я могу реализовать эту функцию, чтобы повернуть вид?

1 Ответ

0 голосов
/ 25 июня 2018

Журнал изменений для OL4 говорит, что вы должны использовать view.animate () :

Устаревшие ol.animation функции и map.beforeRender() метод имеютбыли удаленыВместо этого используйте view.animate().

Так что вы можете вращаться, используя что-то вроде этого:

view.animate({
  rotation: view.getRotation() - Math.PI / 2,
  easing: ol.easing.easeIn
});

Пример анимации ( Пройти тур *Кнопка 1020 *) также показывает, как использовать это в функции интервала

...