Как определить соседей пути SVG?

Я работал с замечательной библиотекой JVectorMap. Когда пользователь выбирает конкретную страну на карте, я хотел бы иметь возможность определить, какие страны являются соседними или имеют общую границу.

Мои поиски расчета расстояний между путями SVG ни к чему не привели. Может ли кто-нибудь предложить хорошее решение, чтобы определить, какие страны являются соседями, а какие нет?

Спасибо!


person Mark452452    schedule 09.01.2014    source источник


Ответы (4)


Я думаю, что лучшим подходом был бы массив, в котором перечислены страны и названия граничащих с ними стран. Затем используйте массив для фильтрации результатов. Создание массива не составит труда, поскольку на следующем сайте граничащие страны перечислены в таблице: Сухопутные границы

Это может занять несколько часов, но я уверен, что другие оценят вашу работу :)

person Francis Hemsher    schedule 09.01.2014

Предположим, что фигуры Country являются элементами пути svg, вы можете проверить, что эти страны (пути) имеют совпадающие вершины или расстояние в пределах заданного порога.

person lviggiani    schedule 09.01.2014

В jvectormaps нет возможности сделать это напрямую. Но что вы можете сделать, так это применить увеличивающееся значение и к каждой горизонтальной или вертикальной полосе регионов (назовите это как-то вроде data-adj), и вы можете сделать что-то вроде:

for( i in regions ){
    if (Math.abs(this.data-adj - region[i].data-adj) <= 1){
        //is adjacent so do something
    }
}

Это действительно сработает, только если вы ищете смежность, а не что-то вроде того, сколько регионов в регионе.

person PGT    schedule 15.01.2014

Мне нужно было узнать то же самое, поэтому я сделал это: https://github.com/FnTm/country-neighbors

В основном он содержит один файл json, который описывает наземных соседей для большей части мира.

В большинстве случаев он должен делать то, что вам нужно.

person Janis Peisenieks    schedule 13.03.2014