【发布时间】:2013-12-10 14:48:42
【问题描述】:
所以你可能已经看到过很多类似的事情,有人在 for 循环内的函数中使用“i”变量时遇到问题。现在可以很容易地解决这个问题:
(function(){
return function() {
//something
}
})(i);
但是,我该如何在我的场景中做到这一点?
GMap.prototype.drawDirection = function (directionsRenderer, directionsService, headMarker, tailMarkers, callback) {
var request;
var array = [];
var count = 0;
for (var i = 0; i < tailMarkers.length; i++) {
count = i;
request = {
origin: headMarker.getPosition(),
destination: tailMarkers[i].getPosition(),
travelMode: google.maps.DirectionsTravelMode.DRIVING,
unitSystem: google.maps.DirectionsUnitSystem.METRIC
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsRenderer.setDirections(response);
console.log(i + " " + count);
callback(response.routes[0].legs[0].distance.value, i, tailMarkers.length - 1);
} else {
alert('Error: ' + status);
}
});
}
};
更准确地说,是关于directionsService对象:
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsRenderer.setDirections(response);
console.log(i + " " + count);
callback(response.routes[0].legs[0].distance.value, i, tailMarkers.length - 1);
} else {
alert('Error: ' + status);
}
});
现在,我不想使用 JFiddle,因为它会写很多东西,所以我只想链接到我正在尝试这个的网站。
http://stud.aitel.hist.no/~andersfy/html5.proj/
如果您查看右下角的复选框,其中显示“vis min posisjon”,您只需单击它,您就会看到问题。
代码位于文件 GMap.js 的第 134 到 142 行。 希望我能给你足够的信息!
【问题讨论】:
-
顺便说一句,这不起作用:pastebin.com/Ni4H9w38
标签: javascript jquery api google-maps google-maps-api-3