script google georreferenciación example ejemplos google-maps-api-3 infowindow

google-maps-api-3 - georreferenciación - google.maps.marker example



Compruebe si se abre la ventana de entrada Google Maps v3 (4)

Por favor, necesito ayuda.

Quiero verificar si mi ventana de información está abierta.

Por ejemplo:

if (infowindow.isOpened) { doSomething() }

o

if (infowindow.close) { doAnotherthing(); }

No tengo ni idea, cómo hacer esto


Esta es una característica no documentada y, por lo tanto, está sujeta a cambios sin previo aviso, sin embargo, el método infoWindow.close() establece el mapa en el objeto como null (esta es la razón infoWindow.open(map, [anchor]) cual infoWindow.open(map, [anchor]) requiere que pase un Map ), por lo que puede verificar esta propiedad para saber si se está mostrando actualmente:

function isInfoWindowOpen(infoWindow){ var map = infoWindow.getMap(); return (map !== null && typeof map !== "undefined"); } if (isInfoWindowOpen(infoWindow)){ // do something if it is open } else { // do something if it is closed }

Actualización: Otra forma potencialmente útil de escribir esto es agregar un método isOpen() al prototype InfoWindow .

google.maps.InfoWindow.prototype.isOpen = function(){ var map = this.getMap(); return (map !== null && typeof map !== "undefined"); }


Hasta que Google no nos proporcione ninguna forma mejor de hacerlo, puede agregar una propiedad a los objetos de InfoWindow. Algo como:

google.maps.InfoWindow.prototype.opened = false; infoWindow = new google.maps.InfoWindow({content: ''<h1> Olá mundo </h1>''}); if(infoWindow.opened){ // do something infoWindow.opened = false; } else{ // do something else infoWindow.opened = true; }


Modifiqué el prototipo para google.maps.InfoWindow y cambié abrir / cerrar para establecer / borrar una propiedad:

// // modify the prototype for google.maps.Infowindow so that it is capable of tracking // the opened state of the window. we track the state via boolean which is set when // open() or close() are called. in addition to these, the closeclick event is // monitored so that the value of _openedState can be set when the close button is // clicked (see code at bottom of this file). // google.maps.InfoWindow.prototype._open = google.maps.InfoWindow.prototype.open; google.maps.InfoWindow.prototype._close = google.maps.InfoWindow.prototype.close; google.maps.InfoWindow.prototype._openedState = false; google.maps.InfoWindow.prototype.open = function (map, anchor) { this._openedState = true; this._open(map, anchor); }; google.maps.InfoWindow.prototype.close = function () { this._openedState = false; this._close(); }; google.maps.InfoWindow.prototype.getOpenedState = function () { return this._openedState; }; google.maps.InfoWindow.prototype.setOpenedState = function (val) { this._openedState = val; };

También debe controlar el evento closeclick porque al hacer clic en el botón Cerrar no se llama a close ().

// // monitor the closelick event and set opened state false when the close // button is clicked. // (function (w) { google.maps.event.addListener(w, "closeclick", function (e) { w.setOpenedState(false); }); })(infowindow);

Llamar a InfoWindow.getOpenedState() devuelve un valor booleano que refleja el estado (abierto / cerrado) de la ventana de información.

Elegí hacerlo de esta manera en lugar de usar el InfoWindow.getMap() o MVCObject.get(''map'') debido a los errores conocidos de usar un comportamiento no documentado. Sin embargo, google utiliza MVCObject.set(''map'', null) para forzar la eliminación de InfoWindow del DOM, por lo que es poco probable que esto cambie ...


infowindow.getMap () devuelve null si infowindow está cerrado. Entonces puedes usar simplemente

if (infowindow.getMap ());