Javascript 谷歌地图-如果有多个标记,则在标记中显示地址

Javascript 谷歌地图-如果有多个标记,则在标记中显示地址,javascript,asp.net,google-maps,google-maps-api-3,geocoding,Javascript,Asp.net,Google Maps,Google Maps Api 3,Geocoding,我正在使用googlemapapi3根据用户输入在地图上绘制标记。我从数据库中获得了基于邮政编码的地址,并正确地发送了它。我正在使用geocoder将地址转换为latlong,同样正确。地图也按需要显示,但当我试图向用户显示哪个标记代表什么地址时,我的问题就开始了,我使用标记的title属性来执行此操作,但它显示的是每个标记上多个数组中的最后一个地址。我的剧本是 var markers = response.d.split('^^'); //var markers = [

我正在使用
googlemapapi3
根据用户输入在地图上绘制标记。我从数据库中获得了基于邮政编码的地址,并正确地发送了它。我正在使用
geocoder
将地址转换为
latlong
,同样正确。地图也按需要显示,但当我试图向用户显示哪个标记代表什么地址时,我的问题就开始了,我使用
标记的
title
属性来执行此操作,但它显示的是每个标记上多个数组中的最后一个地址。我的剧本是

var markers = response.d.split('^^');
            //var markers = ["Goregaon, Mumbai", "Malad, Mumbai"];
            var latlng = new google.maps.LatLng(51.474634, -0.195791);
            var mapOptions1 = {
                zoom: 14,
                center: latlng
            }
            var geocoder = new google.maps.Geocoder();
            var infoWindow = new google.maps.InfoWindow();
            var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions1);
            for (i = 0; i < markers.length; i++) {
                var data = markers[i];
                // Geocoder area
                geocoder.geocode({ 'address': data }, function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {

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


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


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

            }
我试过了

var infoWindow = new google.maps.InfoWindow({ content: distanceArray[j];
j++;
});

显然,它不起作用:(

地理编码器是异步的。因此,您的
for
循环在地理编码器得到响应之前结束。您可以使用另一个变量,该变量在地理编码器每次返回结果(或错误)时递增,并使用它引用正确的
标记
数组值

var j = 0;

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

    // Geocoder area
    geocoder.geocode({
        'address': markers[i]
    }, function (results, status) {

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

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

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

        } else {

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

        //Increment variable here
        j++;
    });
}
var j=0;
对于(var i=0;i

这是因为地理编码器是异步的。您的
for
循环在地理编码器响应之前结束,因此
data
的值将始终是最后一个值。如果您对响应格式的地址没有问题,那么这当然更容易。答案已得到赞赏和测试,它值为+1,但很抱歉,我找到了替代值lready所以不接受,诚实:PI对InfoWindow应用了相同的东西,但它给出了不可分割的语法“[”错误代码在哪里?如果您的解决方案有效,为什么不在信息窗口中使用相同的解决方案呢?我的解决方案有效,因为google map将
格式化的_地址
字段设置为
标题
,这里我没有类似的内容。我的代码更新有问题。拜托,我们无法为您调试所有代码!您是否登录
distanceArray
在什么地方?我们甚至不知道你在那里放了什么以及它是什么样子。使用
console.log()
和你的javascript控制台。我在你的另一个问题上给了你同样的建议。
var j = 0;

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

    // Geocoder area
    geocoder.geocode({
        'address': markers[i]
    }, function (results, status) {

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

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

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

        } else {

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

        //Increment variable here
        j++;
    });
}