Jvector映射如何从标记添加和获取链接

时间:2013-02-05 17:10:20

标签: javascript jquery jvectormap

我正在尝试从标记数组中获取数据并在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);                
                   }
            });
});

3 个答案:

答案 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);
    }