2016-12-03 3 views
0

forowindow를 for()를 사용하여 다른 내용으로 넣으려고하는데 작동하지 않습니다. 이 코드는Google 맵 infowindows 문제 for()

var infowindow=[]; 
var myMarker=[]; 
var marker=[]; 
for (i = 0; i < dl.length; i++) { 
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]); 
    marker[i] = new google.maps.Marker({ 
    position: myMarker[i], 
    map: map 
    }); 
} 

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



google.maps.event.addListener(marker[i],'mouseover', function(){ 

    infowindow[i] = new google.maps.InfoWindow({ 
    content:dl[i] 
    }); 
    infowindow[i].open(map,marker[i]); 
    }); 

    google.maps.event.addListener(marker[i],'mouseout',function() { 
    infowindow[i].close(); 
    }); 
    google.maps.event.addListener(marker[i],'click',function() { 
    alert("Y ahora te abriría otra pagina... si tuviera una"+i); 
    }); 


} 

모든 것이 처음부터 멋지다.하지만 이벤트 리스너를 사용하려고하면 나 빠진다.

변수 : dl[], lt[], ln[]은 이전에 초기화되었습니다.

답변

0

정보창은 그렇게 작동하지 않습니다. 각 마커에 대한 mouseover 이벤트 중에 infowindow.setContent()를 사용하여 정보를 배열로 유지하는 대신 단일 복사본을 만들고 내용을 설정합니다.

편집 : 당신의 응답에 대한 여러분의 솔루션이 작동, 또는 여기보다 간결 솔루션입니다됩니다

var myMarker=[]; 
var marker; 
var infoWindow = new google.maps.InfoWindow(); 
for (i = 0; i < dl.length; i++) { 
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]); 
    marker = new google.maps.Marker({ 
    position: myMarker[i], 
    map: map 
    }); 
    (function(msg) {marker.addListener('mouseover', function() { 
    infoWindow.setContent(msg); 
    infoWindow.open(marker.get('map'), marker); 
    }); 
    })(dl[i]); 
    marker.addListener('mouseout', function() { 
    infoWindow.close(); 
    }); 
} 
+0

안녕 아주 잘 작동! 참고로 Theeternalpuzzle의 답변에 대한 귀하의 요청 된 편집을 보았고 편집을 거부하기로 결정했습니다. 추가 코드를 추가하기 위해 해당 대답을 편집하는 대신 향상된 코드를 자신의 대답에 추가하는 것이 좋습니다. (그리고 StackOverflow에 오신 것을 환영하며 동료 개발자들을 도와 주셔서 감사합니다!) –

0

내가이 일을 endend, 그것은

var myMarker=[]; 
var marker; 
for (i = 0; i < dl.length; i++) { 
    myMarker[i]=new google.maps.LatLng(lt[i], ln[i]); 
    marker = new google.maps.Marker({ 
    position: myMarker[i], 
    map: map 
    }); 
    attachSecretMessage(marker, dl[i]); 
} 


function attachSecretMessage(marker, secretMessage) { 
    var infowindow = new google.maps.InfoWindow({ 
    content: secretMessage 
    }); 

    marker.addListener('mouseover', function() { 
    infowindow.open(marker.get('map'), marker); 

    }); 

    marker.addListener('mouseout', function() { 
    infowindow.close(); 
    }); 

    }