2011-04-08 2 views
0

Google Map을 사용하여 infowindows를 여는 mouseenter/mouseleave 이벤트 처리기를 추가하려고합니다.Google 외부 api, addListener에 외부 이벤트를 매핑합니다.

각 요소에는 Google지도의 관련 정보가 포함 된 10 개의 요소가 있습니다. 내 마커/정보창과 일치하는 요소를 확인하기 위해 요소에 데이터 마커 속성을 추가했습니다.

제 문제는 인수 목록에서 변수를 올바르게 구성하지 못한다는 것입니다. 여기있다 :

....standard google maps definition above. double brackets are django context variables within a forloop loop. 

infowindow[{{forloop.counter}}]= new google.maps.InfoWindow({ 
    content:contentString{{forloop.counter}} 
    }); 


var marker{{forloop.counter}} = new google.maps.Marker({ 
    position:latlng{{forloop.counter}}, 
    map:map, 
    icon:image, 
    animation: google.maps.Animation.DROP, 
    title:"Click for more info" 
    }); 


google.maps.event.addListener(marker{{forloop.counter}},'click', function(){ 
    $.each(infowindow, function(name, value){ 
     this.close(); 
    }); 
    infowindow[{{forloop.counter}}].open(map,marker{{forloop.counter}}); 
}); 

{% endfor %}  
{% endif %} 

} 분명히

$('.entries').mouseenter(function(){ 
    var num=$(this).attr('data-marker'); 

    $.each(infowindow, function(name, value){ 
    this.close(); 
    }); 

     var mk='marker' 
    m=mk.concat(num); 


    infowindow[num].open(map,m); 

}); 

$('.entries').mouseleave(function(){ 

$.each(infowindow, function(name, value){ 
    this.close(); 
}); 


}); 

, 나는 단지 .open() 메소드로 문자열을 전달하고 일을 기대할 수 없다. 배열 인덱스에 변수 'num'을 전달할 수 없다는 것에 더 놀랐습니다. 감사합니다. Brendan

답변

1

코드 infowindow[num].open(map,m); 문자열이 m입니다. m은 표식 개체 여야합니다.

그냥 당신이 정보창을했던 것처럼 마커의 배열을 구축하고 속임수를 썼는지 infowindow[num].open(map,markers[num]);

+0

를 사용합니다. 고마워요. – Ben

관련 문제