我正在尝试使用shiftzoom.js制作地图
我有以下代码片段:
function selectall() {
for (i in geodata['world']) {
var q = getGeoPosition('world', i.toUpperCase(), 1654, 496, 1350, 407);
shiftzoom.construct($('world'), [{
x: q.l,
y: q.t,
w: 40,
h: 40,
id: geodata['world'][i].lc,
pos: 0,
title: '',
href: "javascript:get_lake(i); ",
target: 'graphFrame',
src: 'images/bullet.gif'
}]);
cvi_tip.add(cvi_tip.$(geodata['world'][i].lc), '<small>Province:</small><br/><big><b><u>' + geodata['world'][i].ln + '</u></b></big><br/><small>LAT/LONG:</small><br/><big><b>' + geodata['world'][i].coord + '</b></big><br/><small>PROVINCE:</small><br/><big><b><i>' + geodata['world'][i].pr + '</i></b></big>');
}
}
我将点放置在地图上代表湖泊的位置,并且希望单击该点时将其放大。这就是get_lake函数的功能,但是我单击的每个点都会放大到“ i”的最后一个值。我曾尝试使用像这样的闭包:
href:"javascript:function(num){return function(){get_lake(num);};}(i);"
但由于此代码无法运行,我可能未正确使用它。有谁知道如何编码,以便函数调用当前变量而不是最后一个?
谢谢
最佳答案
老实说,我对您使用的库不熟悉,我发现您发布的代码绝对是MESS!缩进将大大提高可读性。无论如何,请尝试以下操作:
href:"javascript:get_lake("+i+"); ",
闭包在这里不起作用,因为您没有在此处创建函数:正在创建字符串。因此,将
i
的值连接到字符串中。