Я не верю, что на мой вопрос можно ответить с помощью нескольких строк кода, но, возможно, кто-то написал расширение к 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)
Однако я действительно хотел бы, чтобы все это было интегрировано в визуальный чертеж, чтобы конечный пользовательможет видеть фактические углы многоугольника при рисовании, вместо того, чтобы смотреть на круг при рисовании области, но затем фактически сохранять что-то еще (многоугольник), который является приближением нарисованной области.