gpt4 book ai didi

javascript - 循环中的 Google Maps V3 地理编码和标记

转载 作者:搜寻专家 更新时间:2023-11-01 05:02:38 25 4
gpt4 key购买 nike

我的代码有一些问题,我在 sql 数据库中有一个机场列表,我想为这些机场中的每一个创建标记。

对于我得到每个机场的 ICAO 代码的地址,每个机场的 ICAO 都是唯一的

我从数据库中获取数据作为数组

它被保存在“temp”中,带有一个拆分函数,并使用 for 循环将它们 1 乘 1

地理编码不是问题,但我不知道 TITLE 和点击事件的原因它始终是使用的数组中的最后一个。

这是页面,数据库中的最后一个条目是 ZBAA。

所有标记都放在正确的位置,但标题是错误的:s

http://mizar.lte.lu/~pr1011_meteo/projet/cartemonde4.php

我认为问题出在“地址”上,但我不确定。

for (var i = 0; i < temp.length; ++i){

var address=temp[i];

geocoder.geocode({ 'address': address}, function(results){
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title:address
});

google.maps.event.addListener(marker, 'click', function() {
window.open ('infomonde.php?icao='+address+'&language=fr', 'Informations météo', config='height=400, width=850, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no')});
});
};

最佳答案

这是一个JSFiddle Demo使用“虚拟”地址和警报来显示与每个标记关联的正确数据:

您遇到的是 for 循环中的典型闭包/作用域问题。要解决此问题,请在传递到其中的地理编码和回调函数之前使用闭包来本地化 temp[i] 变量:

    for (var i = 0; i < temp.length; ++i) {
(function(address) {
geocoder.geocode({
'address': address
}, function(results) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: address
});

google.maps.event.addListener(marker, 'click', function() {
//alert(address); //use alert to debug address
window.open('infomonde.php?icao=' + address + '&language=fr', 'Informations météo', config = 'height=400, width=850, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no')
});
});
})(temp[i]); //closure passing in temp[i] and use address within the closure
}

关于javascript - 循环中的 Google Maps V3 地理编码和标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5292060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com