Jvector Map как добавить и получить ссылку от маркера

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

 $(function(){
    $('#map1').vectorMap({
                  map: 'world_mill_en',
                  scale: ['#C8EEFF', '#0071A4'],
                  normalizeFunction: 'polynomial',
                  hoverOpacity: 0.7,
                  hoverColor: false,
                  markerStyle: {
                    initial: {
                          fill: '#F8E23B',
                          stroke: '#383f47'
                    }
                  },
                  backgroundColor: '#383f47',
                  markers: [{latLng: [48.921537, -66.829834], name: "something", weburl : "/blah/foo"

            },{latLng: [45.995944, -64.171143], name: "something else", weburl : "/blah/foo"

            },],
                  onMarkerClick: function(events, label, index, weburl) {
                    alert (1+weburl);                
                   }
            });
});

person D J    schedule 05.02.2013    source источник


Ответы (3)


Столько совпадений, только вчера столкнулся с той же проблемой.. :)

Решение, которое я нашел, состояло в том, чтобы создать массив снаружи и получить к нему доступ по индексу в функции щелчка.

var markers = [
    {latLng: [48.921537, -66.829834], name: "something", weburl : "/blah/foo"},
    {latLng: [45.995944, -64.171143], name: "something else", weburl : "/blah/foo-else"}
];

$(function(){
    $('#map1').vectorMap({
                  ...
                  markers: markers,
                  onMarkerClick: function(event, index) {
                      // alter the weburl
                      alert(markers[index].weburl);
                  }
            });
});
person Rajat Singhal    schedule 05.02.2013
comment
Спасибо, вы настоящая легенда. Я потратил часы и дни на это, пытаясь понять это.!!!! - person D J; 06.02.2013

Просто потому, что я только что решил эту проблему по-другому, и я чувствую себя очень умным из-за того, что сделал это, я опубликую свой ответ.

Вы можете хранить произвольные данные, используя jQuery.data или javascript dom dataSets. Если на вашей странице нет другого SVG с элементами <circle>, вы можете выполнить итерацию по всем элементам <circle> и предоставить им данные из массива. Индексы будут совпадать, но вы можете использовать индекс данных в качестве защиты.

Довольно круто. Несмотря на то, что это очень старо, возможно, эта альтернатива кому-то поможет.

person dgo    schedule 22.11.2013
comment
Событие onMarkerClick внезапно перестало работать для меня, это было очень полезно. Спасибо - person Nischal Kumar BC; 14.07.2017

Используя решения Раджата и Олденборга, мне удалось получить имя маркера, используя настройку jVectorMap по умолчанию.

onMarkerClick: function(event, index) {

        console.log(map.markers[index].config.name);
    }
person robgs    schedule 20.11.2019