Как определить, принадлежит ли точка региону в jvectormap?

Есть ли способ определить, что данная точка (либо [x, y], либо [широта, долгота]) является членом области jvectormap?

Я уже знаю, как конвертировать их из одного формата в другой, но я не могу понять, как это будет доступно.


person ackzell    schedule 18.06.2015    source источник


Ответы (1)


Допустим, вы создали карту, как в примерах jVectorMap, в div под названием «карта мира».

Внутри вашего div jVectorMap поместит другой div с классом «jvectormap-container», внутри этого контейнера вы найдете svg, а внутри svg — все пути к регионам.

В моем примере используется простой javascript, но вы можете найти эти пути любым удобным для вас способом, например, с помощью селекторов jQuery и т. д.

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

В моем примере я использую событие onmousemove для отображения кода региона и базовых координат x,y.

var paths = document.getElementById("world-map").firstElementChild.firstElementChild.getElementsByTagName("g")[0];

paths.onmousemove=function(e){
    var path = document.elementFromPoint(e.clientX,e.clientY);
    console.log('Region: ' + path.getAttribute("data-code") + ' at point: ' + e.clientX + ','+ e.clientY);
};

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

person deblocker    schedule 18.06.2015
comment
Большое спасибо!!! Я думаю, это именно то, что мне было нужно. Это спасет проект. Я посмотрю, смогу ли я собрать JSFiddle, чтобы уточнить ответ. - person ackzell; 23.06.2015