Google Maps API infowindows会返回相同的内容

时间:2017-04-28 10:09:21

标签: javascript json ajax asp.net-mvc google-maps

我有一个旧的infowindows处于循环问题,其中最后一个循环的内容显示在所有infowindows中。是的我知道Stack Overflow上已经有几个关于这个的问题,但它们似乎都不适用于我。

 <script>
        var map;
        var myMarker = [];
        var myData = [];

        function initialize() {
            var Nazareth = { lat: -29.847073, lng: 30.853513 };
            var myCenter = new google.maps.LatLng(-29.847073, 30.853513);
            var mapOptions = {
                center: Nazareth,
                zoom: 12,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
            };

            map = new google.maps.Map(document.getElementById("map"), mapOptions);
            SetMarkers();
        }
        google.maps.event.addDomListener(window, 'load', initialize);

        var infoWindow = new google.maps.InfoWindow();

        function SetMarkers() {
            var geocoder = new google.maps.Geocoder();

            $('#btnTrainer').click(function () {
                var suburb = $("#address").val();
                $.ajax({
                    type: "POST",
                    url: '@Url.Action("ShowAll", "Map")',
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify({ "suburb": suburb }),
                    cache: false,
                    dataType: "json",
                    success: function (myData) {
                        for (i = 0; i < myData.length; i++) {
                            var data = myData[i];
                            var name = myData[i].FirstName;
                            var address = myData[i].Address;

                            geocoder.geocode({ 'address': data.Address },
                                function (results, status) {
                                    if (status == google.maps.GeocoderStatus.OK) {
                                        var marker = new google.maps.Marker({
                                            position: results[0].geometry.location,
                                            map: map,
                                            title: "Trainer" + " "
                                        });
                                        google.maps.event.addListener(marker, 'click', (function (marker, i) {
                                            return function () {
                                                infoWindow.setContent(name + "," + address);
                                                infoWindow.open(map, marker);
                                            }
                                        })(marker, i));

                                    }
                                    else {
                                        console.log("We can't found the address, GoogleMaps say..." + status);
                                    }
                                });
                        };
                    }
                })

            })
        }
    </script>

0 个答案:

没有答案