我正在使用一个名为MapSVG的插件,我正在制作一个活动日历与它一起运行,地图上的国家会突出显示,如果其中有活动,并提供小信息的工具提示 - 点击后,各国会进一步显示右侧面板中的信息。 问题在于从SQL数据库收集数据,并将该数据传递给插件。这是我到目前为止所尝试的......
我有一个函数,它通过SQL / JSON数组匹配事件到他们所在的国家,创建一个MapSVG插件可以理解的字符串:
function regions(data) {
var region_array = 'regions: {';
$.each(data['regions'], function( i, v ) {
region_array = region_array + i + ': { tooltip: "' + v['events'] + ' events in ' + data[i]['details']['name'] + '", attr:{fill: "#e58271"} },';
});
region_array = region_array.slice(0, -1) + '}';
return region_array;
}
返回一个字符串:
regions:
{
gb: { tooltip: "1 events in England", attr:{fill: "#e58271"} },
fr: { tooltip: "2 events in France", attr:{fill: "#e58271"} },
de: { tooltip: "1 events in Germany", attr:{fill: "#e58271"} },
at: { tooltip: "6 events in Austria", attr:{fill: "#e58271"} }
}
此字符串在直接复制到MapSVG时可正常工作,但我需要它以动态方式运行,并根据添加/删除/编辑/扩展的事件进行更改。
所以,我原以为在mapSvg事件/声明中运行函数会起作用,但是我遇到了问题..
$('#mapsvg-other').mapSvg({
source : 'maps/europe.svg',
colors: {background: '#CBECF3', base: '#eeaba0', stroke: "#CBECF3", selected: '#d42e12', hover: '#d42e12'},
regions: {labels: {attr: {fill: '#555555'}}},
width: '450px',
height: '450px',
tooltipsMode: 'custom',
cursor: 'pointer',
onClick: function(e,m){
},
/* regions goes into here, regions(data) or + regions(data) + will not work, is there a way to do this? */
});
有没有办法正确插入此信息?或者我是否必须生成一个包含每个区域信息的数组并单独调用? (似乎有一个更糟糕的解决方法,因为它意味着稍微冗长的代码,所以在追求不断提高的效率和整洁度,让这项工作变得更好!)