Как найти эквивалентные координаты в текущем мире из другого мира в открытых слоях без события мыши - PullRequest
1 голос
/ 07 июня 2019

У меня есть карта OpenLayers с Polygon в каждом мире. Я добавил анимацию, которая показывает панорамирование на многоугольнике при нажатии кнопки.

Проблема в том, что если пользователь находится в другом мире, чем тот, в котором лежит геометрия многоугольника, анимация переносит пользователя в исходный мир многоугольника.

Я не хочу, чтобы это произошло, если пользователь находится в n-м мире слева или справа, панорамирование на многоугольник должно происходить только в этом конкретном мире.

Я использую polygon.getGeometry().getInteriorPoint().getCoordinates(), чтобы получить середину многоугольника, а затем установить его как center из ol.View(). Теперь, когда геометрия полигонов находится в 0-м мире, центр представления всегда располагается в этом мире и, следовательно, отображает панорамирование в этом конкретном мире.

Есть ли способ вычислить координату в текущем мире из средней точки polygon's в другом мире? Я думаю, что это решит проблему.

Вот что я пытаюсь: токовый выход

1 Ответ

2 голосов
/ 07 июня 2019

Это будет работать для текущего мира (как определено в строке даты). Поскольку ваша геометрия относительно близка к линии даты, это может быть не самый короткий маршрут.

    var point = t.getGeometry().getInteriorPoint().clone();
    var worldWidth = ol.extent.getWidth(view.getProjection().getExtent());
    var currentWorld = Math.round(view.getCenter()[0]/worldWidth);
    point.translate(currentWorld * worldWidth, 0);
    view.animate({
      center: point.getCoordinates(),
      duration: 1200
    });
...