我正在尝试从标记数组中获取数据并在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);
}
});
});
答案 0 :(得分:28)
非常巧合,我昨天只遇到了同样的问题.. :)
我找到的解决方案是在外部创建一个数组,并通过click-function中的索引访问它。
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);
}
});
});
答案 1 :(得分:1)
仅仅因为我以不同的方式解决了这类问题,而且我觉得这样做非常聪明,我会发布我的答案。
您可以使用jQuery.data或javascript dom dataSets存储任意数据。除非您的页面上有其他带有<circle>
元素的SVG,否则您可以迭代所有<circle>
元素并从数组中提供数据。索引将匹配,但您可以使用数据索引作为安全措施。
非常酷。即使这已经过时了,也许这种替代方案可以帮助别人。
答案 2 :(得分:0)
使用Rajat和Oldenborg的解决方案,我设法使用默认的jVectorMap设置获取标记名称
onMarkerClick: function(event, index) {
console.log(map.markers[index].config.name);
}