Google Maps API v3 infowwindow 닫기 이벤트/콜백?
Google Maps 인터페이스에서 열려 있는 모든 정보 창을 추적하는 것을 좋아하지만(이름을 배열에 저장합니다), 각 정보 창의 오른쪽 상단 모서리에 있는 "x"를 통해 해당 정보 창을 닫으면 배열에서 제거하는 방법을 알 수 없습니다.
제가 들을 수 있는 콜백 종류가 있습니까?아니면 내가 할 수 있는 일은addListener("close", infowindow1, etc?
인포윈도우 콜 이벤트가 있습니다.closeclick당신을 도울수 있는
var currentMark;
var infoWindow = new google.maps.InfoWindow({
content: 'im an info windows'
});
google.maps.event.addListener(marker, 'click', function () {
infoWindow.open(map, this);
currentMark = this;
});
google.maps.event.addListener(infoWindow,'closeclick',function(){
currentMark.setMap(null); //removes the marker
// then, remove the infowindows name from the array
});
여기서 찾은 유일한 일관된 해결책은 에 대한 포인터를 유지하는 것입니다.infoWindow그리고 그것을 확인합니다..getMap()폐쇄 여부를 확인해야 할 때마다 메소드를 지정합니다.
그 이유는 다른 요소를 클릭하면 다른 이유로 infoWindow가 무시될 수 있기 때문입니다.의 기능하지 않고closeclick격발 사격
var infoWindow = new google.maps.InfoWindow({ content: 'Something to put here.' });
infoWindow.open(map, infoWindow);
setInterval(function ()
{
console.log("infoWindow is bound to map: "+(infoWindow.getMap() ? true : false));
}, 1000);
... 말 그대로 당신이 신경 쓴다면.infoWindow"X" 버튼을 사용하여 닫았고, 그 다음에 모니터링.closeclick괜찮습니다.그러나 폐쇄되었을 수도 있고 폐쇄되었을 수도 있는 다른 이유가 있습니다.
시도해 보기:
var closeBtn = $('.gm-style-iw').next();
closeBtn.click(function(){
//other things you want to do when close btn is click
that.infowindow.close();
});
이 클릭 기능은 CSS/위치를 변경한 후 사파리에서 클릭 버튼이 작동하지 않기 때문에 덮어씁니다.
infoWindow.addListener('closeclick', ()=>{
// Handle focus manually.
});
가장 많이 투표된 솔루션을 단순화하고 확장하여 마커 클릭 이벤트를 처리하는 동안 마커를 생성하여 x 아이콘으로 인한 제거를 패키지화할 수 있습니다.closeclick동시에 일어나는 사건.
여기에 부울을 붙여 중복 정보 창 생성 회피를 포함하는 예가 있습니다.hasInfoWindow마커의 상태입니다.
newMarker.addListener('click', function () {
// If a marker does not yet have an info window, create and show it
if (newMarker['hasInfoWindow'] !== true) {
newInfoWindow = new google.maps.InfoWindow({content: infoContent});
mapSet['infoWindowsObj'].push(newInfoWindow);
newMarker['hasInfoWindow'] = true;
newInfoWindow.open(mapSet, newMarker);
// If info window is dismissed individually, fully remove object
google.maps.event.addListener(newInfoWindow, 'closeclick', function () {
newInfoWindow.setMap(null);
newMarker['hasInfoWindow'] = false;
mapSet['infoWindowsObj'].filter(arrayItem => arrayItem !== newInfoWindow);
});
}
});
그런 다음 지도에서 클릭 이벤트로 인해 열려 있는 모든 정보 창을 제거하려면 다음의 내용을 반복할 수 있습니다.mapSet['infoWindowsObj']각각을 완전히 제거합니다.
이러한 동작은 구글의 사용자 지정 팝업 예에 따라 전체를 다시 구현할 필요 없이 대부분의 경우 정보 창을 사용하는 것에서 벗어날 수 있다고 생각합니다.
매우 간단한 정보 창 닫기 단추 찾기, 즉 'gm-ui- hover 효과'
인포 윈도우 닫기 트리거
$(.gm-ui-hover 효과).트리거 ('click')).
언급URL : https://stackoverflow.com/questions/6777721/google-maps-api-v3-infowindow-close-event-callback
'programing' 카테고리의 다른 글
| UITextField 반환 키에 대한 작업을 추가하는 방법은 무엇입니까? (0) | 2023.10.06 |
|---|---|
| strpbrk는 무엇의 약자입니까? (0) | 2023.10.06 |
| C/C++에서 부호 없는 오른쪽 시프트(>>>)를 수행하려면 어떻게 해야 합니까? (0) | 2023.10.06 |
| LINQ에서 XML로 네임스페이스 무시 (0) | 2023.10.06 |
| 워드프레스의 add_action 함수 (0) | 2023.10.01 |