For循环无法使用javascript在geocode中加载最后一次迭代
for loop fails to load the last iteration in geocode using javascript
我面临一个问题,在javascript的地理代码的最后2天。我从DB使用php的位置。我将数据传递给javascript变量。数据如下。我将这些数据存储在变量"locations"
中[['São Paulo, Brazil', 'Sky Ferreira @ Cine Joia - Sao Paulo, Brazil','314','15'],['Rua dos Ingleses, 209 - Morro dos Ingleses', 'Se Essa Rua Fosse Minha - Espetáculo de Brincar','1','31'],['São Bernardo do Campo - São Paulo, Brazil', 'Se Essa Rua Fosse Minha - Espetáculo de Brincar','2','31'],['Cine Joia - Praça Carlos Gomes, Se, São Paulo, Brazil', '::: LOBO + VESPAS MANDARINAS @ CINE JOIA :::','310','11'],['Rio de Janeiro, Centro, Rio, Brazil', '#GRIND - FESTA OFICIAL DE 16 ANOS @ALCA','315','16'],['Rua Vergueiro, Paraíso, São Paulo, Brazil', 'Se Essa Rua Fosse Minha - Espetáculo de Brincar','23','31'],['Clube da Aeronautica, Centro, Rio - Rio de Janeiro, Brazil', '#GRIND - BATALHA POP vs ROCK GARBAGE vs BRITNEY - DOMINGUEIRA MAIS ALTERNATIVA @ ALCA','316','35'],['Santa Catarina, Brazil', 'Nene no Cassino do Chacrinha! Djs Mauro Borges, Nene, Ricardo Motta.','317','36'],['Rua dos Ingleses, 209 - Morro dos Ingleses', 'St. Vincent - Brazilian Tour','308','31'],['Divinópolis - Minas Gerais, Brazil', 'LANCAMENTO OFICIAL DO NOVO CD DO MANEVA 5INCO CABEAS','309','10'],['Santa Catarina, Brazil', 'St. Vincent - Brazilian Tour','321','28'],['Rua Voluntários da Pátria, Santana, São Paulo, Brazil', 'St. Vincent - Brazilian Tour','320','29']]
我将位置传递给for循环以获得纬度和经度,以便在map中绘制标记。我使用下面的函数
var markers = {};
function initial_markers(locations){
for(var i=0;i<locations.length;i++){
(function(address,attr_title,i,attr_id,cat_id) {
console.log(i);
geocoder.geocode({
'address': address
}, function(results) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon:"http://maps.google.com/mapfiles/ms/icons/blue.png"
});
markers[i] = marker;
console.log(i);
});
})(locations[i][0],locations[i][1],i,locations[i][2],locations[i][3]);
}
}
数据中总共有12个位置。在函数进入geocode函数之前,我得到了12个值。在地理编码之后,最后一个元素失败。I的顺序也变了。但对我来说不是问题。我的问题是无法获得最后一个位置的经纬度。也无法得到索引。我将这个下标值用于其他函数。索引值为停止在10。请帮忙解决这个问题
为了保留i,将其添加到内部函数参数中:
(function(address,attr_title,i,attr_id,cat_id, i) {
console.log(i);
geocoder.geocode({
'address': address
}, function(results) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon:"http://maps.google.com/mapfiles/ms/icons/blue.png"
});
markers[i] = marker;
console.log(i);
// NOTE : you should use markers HERE
});
})(locations[i][0],locations[i][1],i,locations[i][2],locations[i][3], i);
这样,您还可以摆脱其他参数…
注意在内部回调或从该回调调用的函数中使用标记(参见NOTE)。
As Per Frank van Puffelen这对我来说是正确的解决方案。非常感谢Frank van Puffelen
<http://jsfiddle.net/frankvanpuffelen/xYvb6/2/>
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- jQuery Lazy加载动画滚动
- Html页面上的多个Base64图像和平滑加载
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使该数据在所有元素中加载
- Chrome扩展没有't在重新加载之前考虑期权价值
- 使用javascript在Flash中加载外部图像
- Ajax文件加载和<输入>文件加载
- 使用javascript函数在页面初始化后加载jquery
- For循环无法使用javascript在geocode中加载最后一次迭代