0

有一個帶有JSON加載標記的GoogleMap。標記顯示正確。但信息窗口只顯示最後一個標題(unternehmen/company)。這是一個覆蓋問題嗎?我該如何解決它?Google地圖標記地址和標題來自json

<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> 

回答

0

您正確實施關閉,但在錯誤的地方

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); 

}