Google 带有地址和标题的地图标记来自 json

Google Maps Markers with address and title from a json

JSON 加载了带有标记的 GoogleMap。标记显示正确。但是信息 Window 只显示最后一个标题(unternehmen / company)。是覆盖问题吗?我该如何解决?

<div id="map" style="height:500px;width:100%;"></div>

<script src="https://maps.googleapis.com/maps/api/js!!!######MYKEY########!!!!" type="text/javascript"></script>

<script type="text/javascript">


var map = new google.maps.Map(document.getElementById("map"), {
    center: new google.maps.LatLng(50,12),
    zoom: 3,
    mapTypeId: google.maps.MapTypeId.ROADMAP
});

var json = [

{
    "unternehmen": "Dresden",
    "address": "Dresden, Deutschland"
},
{
    "unternehmen": "Frankfurt",
    "address": "Frankfurt, Deutschland"
}

]

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

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

            var data = json[i],
                address = data.address,
                unternehmen = data.unternehmen;

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

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

                    (function(marker, data) {

                        google.maps.event.addListener(marker, "click", function( e ) {
                            infoWindow.setContent(unternehmen);
                            infoWindow.open(map, marker);
                        });

                    })(marker, data);
            });
        }

</script>

你已经正确地实现了关闭,但是在错误的地方

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

     var data = json[i],
     address = data.address,
     unternehmen = data.unternehmen;

    (function(unternehmen) {

        console.log(unternehmen);

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

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

                //(function(marker, data) {

                    google.maps.event.addListener(marker, "click", function( e ) {
                        infoWindow.setContent(unternehmen);
                        infoWindow.open(map, marker);
                    });

                //})(marker, data);
            });


     })(unternehmen);

}