Leaflet.draw: Как нарисовать Octagon / Hexadecagon или другой правильный многоугольник? - PullRequest
0 голосов
/ 18 сентября 2018

Я не верю, что на мой вопрос можно ответить с помощью нескольких строк кода, но, возможно, кто-то написал расширение к Leaflet.draw , которое можно использовать для рисования обычного многоугольника подобным образомкак вы можете нарисовать прямоугольник или круг с помощью Leaflet.draw?

Мне нужна возможность нарисовать правильный многоугольник (например, восьмиугольник или шестнадцатеричный) аналогично рисованию круга с помощью Leaflet.draw,т.е. щелчок в центре и затем перетаскивание его размера, но затем он также должен иметь возможность создать многоугольник геойсона вместо точки геоджона (что сделано для круга).

Проблема с кругомзаключается в том, что при реализации метода события Leaflet.draw, такого как map.on(L.Draw.Event.CREATED, function (e), вы можете использовать e.layer.toGeoJSON() для получения geoJson, но он станет точкой вместо многоугольника.

Этот метод toGeoJSON работаетотлично подходит при рисовании прямоугольника, так как вы получите многоугольник с координатами четырех углов, но так как нет функции "круг"в векторах ГИС (например, геоджон или шейп-файлы и т. д.), при использовании метода «toGeoJSON» в Leaflet.draw геоджсон просто станет «точкой» вместо многоугольника.

Именно поэтомуМне нужен правильный многоугольник (более полезный, чем круг), который может аппроксимировать окружность, например, шестнадцатеричным, используя 32 ребра и вершины.

Я знаю, что в качестве обходного решения можно использовать круги затем вычислите многоугольник по кругу (например, с помощью чего-то вроде этого: https://github.com/w8r/L.Circle.toPolygon)

Однако я действительно хотел бы, чтобы все это было интегрировано в визуальный чертеж, чтобы конечный пользовательможет видеть фактические углы многоугольника при рисовании, вместо того, чтобы смотреть на круг при рисовании области, но затем фактически сохранять что-то еще (многоугольник), который является приближением нарисованной области.

...