Есть ли какая-либо функция или алгоритм для [Нарисовать объект, окружающий другой объект]? - PullRequest
1 голос
/ 06 ноября 2019

Мне нужно использовать OpenLayers для создания логики, которая рисует две функции.
После того, как пользователь рисует функцию A,
Нам нужна логика для рисования функции B, которая окружает функцию A. снаружи.

  1. Нарисуйте объект А на карте.
  2. После отрисовки элемента A система должна создать элемент B, который окружает элемент A.
  3. Окончательный результат должен совпадать с изображением.

Result what I want

PRECONDITION

  1. Функция может иметь 3 - 6 углов.
  2. Длина каждой стороны непредсказуема.
  3. Угол каждой стороны непредсказуем.
  4. Все стороны компонента B должны быть выполнены со всех сторон компонента A. На расстоянии, указанном пользователем.
    Как мы решаем эту проблему?

полный исходный код: https://github.com/JeahaOh/OpenLayersStudy/tree/master/Examples/EffectiveRange/CDN

1 Ответ

1 голос
/ 06 ноября 2019

Эй, это похоже на создание геометрии с буфером x (x определяется пользователем).

Вы можете использовать JSTS , чтобы создавать буферы из геометрии и затем отображать еевернуться к геометрии открытого слоя.

Пример OpenLayers , который рисует геометрию с буфером. В этом примере используются геометрии LineString, но вы можете использовать любую геометрию.

Глядя на свой пример, вы, вероятно, хотите, чтобы на вашей внешней геометрии были острые края, чтобы вы могли использовать стиль соединения косой линии

var bufParams = new jsts.operation.buffer.BufferParameters();
bufParams.setJoinStyle(
   jsts.operation.buffer.BufferParameters.JOIN_MITRE)
var outer = inner.buffer(spacing, bufParams);

См. Документы для BufferParameters для дополнительных параметров.

Вот jsfiddle , который показывает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...