У меня есть карта, которую я преобразовал из растрового изображения в файл SVG путем преобразования разноцветных областей в пути.
Я знаю, как выполнить базовую проверку точки в многоугольнике, учитывая массивребра, но элементы svg:path
представляют несколько полигонов, а также маски (для учета морей и т. д.), и извлечение этой информации с помощью синтаксического анализа атрибута d
кажется довольно сложным.
Есть ли библиотека JSчто позволяет мне упростить эту проверку?Я в основном хочу создать случайные точки и затем проверить, находятся ли они на суше (то есть внутри полигонов) или на воде (то есть снаружи).
Поскольку элементы SVG, по-видимому, позволяют обрабатывать события мыши, я думаю, что этоне должно быть большой проблемой (т. е. если вы можете определить, находится ли указатель мыши над элементом, вы уже решаете проблему точки в многоугольнике).
РЕДАКТИРОВАТЬ: усложнение вопроса aнемного, я должен отметить, что svg:path
элементы, кажется, основаны на кривых, а не на линиях, поэтому просто парсинг атрибута d
для создания массива ребер не представляется возможным.
Поскольку элементы могут принимать атрибут fill
, гетто-подход к визуализации SVG на холсте, а затем к нахождению значения цвета пикселя в заданной точке может сработать, но это выглядит действительно ужасным способом сделать это..