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);
}
});
});
Ответы
Ответ 1
Столько совпадений, вчера я столкнулся с той же проблемой..:)
Я нашел решение, чтобы создать массив снаружи и получить к нему доступ по индексу в функции click.
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);
}
});
});
Ответ 2
Просто потому, что я просто решил эту проблему по-другому, и я чувствую себя очень умным, если бы сделал это, я отправлю свой ответ.
Вы можете хранить произвольные данные с помощью jQuery.data или javascript dom dataSets. Если у вас нет другого SVG на вашей странице с элементами <circle>
, вы можете перебирать все элементы <circle>
и предоставлять им данные из массива. Индексы будут соответствовать, но вы можете использовать индекс данных в качестве защиты.
Довольно круто. Хотя это и старо, может быть, эта альтернатива поможет кому-то.