Javascript Google Maps API标记循环未正确更改标题

Javascript Google Maps API标记循环未正确更改标题,javascript,google-maps,google-maps-markers,Javascript,Google Maps,Google Maps Markers,我一直在搜索stackoverflow和web的其他部分,但没有结果。我是一个新手程序员,我完全陷入了这个问题 我有一个数组,其结构如下: 地址 郊区 地址B 郊区 当下面的代码运行时,它会通过放置一个标记以及围绕该标记的10英里圆圈来更新地图。问题是,当我将鼠标悬停在标记上时,工具提示/标题始终是SuburbB的提示/标题,即使标记和圆位于正确的位置 快把我逼疯了,非常感谢你的帮助 function codeAddress(){ var arrayLength = array.le

我一直在搜索stackoverflow和web的其他部分,但没有结果。我是一个新手程序员,我完全陷入了这个问题

我有一个数组,其结构如下:

地址 郊区 地址B 郊区

当下面的代码运行时,它会通过放置一个标记以及围绕该标记的10英里圆圈来更新地图。问题是,当我将鼠标悬停在标记上时,工具提示/标题始终是SuburbB的提示/标题,即使标记和圆位于正确的位置

快把我逼疯了,非常感谢你的帮助

 function codeAddress(){

    var arrayLength = array.length;
    var looper = 0;
    var looper2 = 1;

    while (looper < arrayLength) {

        alert("Geocode started");

        sAddress = array[looper];
            alert (looper)
            alert("Address set" + sAddress)

        sName = array[looper2];
            alert (looper2)
            alert("Name set" + sName)

        geocoder.geocode( {'address': sAddress}, function(results, status) {

            alert("Make marker");

            if (status == google.maps.GeocoderStatus.OK) {

                map.setCenter (results[0].geometry.location);

                var marker2 = new google.maps.Marker({
                    map: map,
                    title: sName,
                    position: results[0].geometry.location
                });

                var circle = new google.maps.Circle({
                    map: map,
                    radius: 16093,    // 10 miles in metres
                    fillColor: '#AA0000',
                    strokeWeight: 2,
                    strokeOpacity: 0.5 
                   });

                circle.bindTo('center', marker2, 'position');



        }    else {

                alert("Geocode was not successful for the following reason: " + status);

            }
        })

        looper = looper + 2;
        looper2 = looper2 + 2;
    }
}
函数代码地址(){
var arrayLength=array.length;
var-looper=0;
var-looper2=1;
while(活套<排列长度){
警报(“地理代码已启动”);
sAddress=数组[活套];
警报(活套)
警报(“地址集”+鞍座)
sName=array[looper2];
警报(looper2)
警报(“名称集”+sName)
geocoder.geocode({'address':sAddress},函数(结果,状态){
警报(“制造标记”);
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(结果[0].geometry.location);
var marker2=新的google.maps.Marker({
地图:地图,
标题:sName,
位置:结果[0]。几何体。位置
});
var circle=new google.maps.circle({
地图:地图,
半径:16093,//10英里(米)
fillColor:“#AA0000”,
冲程重量:2,
笔划不透明度:0.5
});
圆圈.bindTo('center',marker2',position');
}否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
})
活套=活套+2;
looper2=looper2+2;
}
}

您遇到了臭名昭著的Javascript循环问题。Javascipt作用域是函数级的,而不是块级的,这可能会引起混淆:。基本上,线路:

geocoder.geocode( {'address': sAddress}, function(results, status) {
正在为每个地理代码设置数组中的最后一项,您需要做的是将第一个参数包装在闭包中:

geocoder.geocode( (function () { return {'address': sAddress} })(), function(results, status) {

标记和圆很好,因为它们是在函数内部定义的。

谢谢,我想我明白了,我已经改变了它。但它仍然不起作用。。。我需要把sName传递到某个地方才能使用它吗?