Как вы можете использовать mapbox-gl-Draw для создания прямоугольника из 8 точек?

У меня есть уникальная проблема с использованием Mapbox-gl-Draw. Mapbox Draw позволяет легко создавать многоточечный многоугольник, однако мне нужно, чтобы он использовал только 8 точек в качестве алгоритма, который я использую в другом месте, и принимает 8 элементов lnglat. Мне интересно, возможно ли, чтобы при нажатии кнопки рисования на экране отображался прямоугольник из 8 точек с возможностью перетаскивания каждой из точек?

Ниже приведен ожидаемый результат одним щелчком мыши. https://stackru.com/images/3fb9f5db8b8bd3f 8f 87a2344b13b0fd6ad923dcc.png В настоящее время я могу нарисовать прямоугольник, но только с 4 точками, каждый угол прямоугольника.

1 ответ

Вместо того, чтобы пытаться связываться с mapbox-gl-draw, вы должны просто взять вывод, а затем программно добавить средние точки. Вы можете использовать газонmidpoint функция для этой цели. Что-то вроде:

const coords = rectangle.geometry.coordinates[0];
const newcoords = [];
coords.forEach((point, i) => {
   newcoords.push(point);
   if (i < coords.length - 1) {
       newcoords.push(midpoint(point, coords[i+1]).geometry.coords);
   }
});
rectangle.geometry.coordinates = newcoords;
Другие вопросы по тегам