programing

Google Maps API v3 infowwindow 닫기 이벤트/콜백?

javajsp 2023. 10. 6. 20:53

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