Я использую Mapbox с Leaflet Draw и хочу избежать самопересекающихся полигонов.
Я уже могу запретить пересечения при создании элемента управления отрисовкой, но это работает только тогда, когда я использую элемент управления для создания нового многоугольника. Однако, если я попытаюсь отредактировать уже существующий полигон, там будут пересечения.
Я поискал и нашел библиотеку JSTS. который делает именно то, что я хочу, и я также нашел этот JSFiddle для использования в качестве примера, где он работает на основе Google Maps API.
Поэтому я создал свой собственный JSFiddle с помощью Mapbox на основе двух приведенных выше ссылок. Здесь функция findSelfIntersects срабатывает, если это редактирование полигона, и не используется, если это новый полигон. Идея состоит в том, что если есть пересечение, я покажу предупреждение пользователю и отменю редактирование. Однако, когда я пытаюсь это сделать, я получаю ошибку uncaught exception: [object Object]
.
Ошибка, кажется, формируется в этой строке функции findSelfIntersects:
var shell = geometryFactory.createLinearRing(coordinates);
Я проверил координаты, возвращенные примером Google Maps, и они кажутся похожими на координаты, которые я получаю. Но я не уверен, почему я получаю эту ошибку.