Cómo esperar a que Google Maps angular agregue getGMap al objeto de control

He estado tratando de configurar oyentes de eventos de clic en elgoogle.maps.Map objeto creado por elui-gmap-google-map directiva de laBiblioteca angular de Google Maps.

Necesito hacer esto dinámicamente, por lo que parece (al menos por mis breves pruebas) que usar elevents parámetro en elui-gmap-google-map la directiva no funcionará (porque parece "leer" el valor del parámetro solo una vez, pero tal vez me equivoque al respecto).

Entonces decidí usar elcontrol parámetro, que aumenta el objeto nombrado por el valor del parámetro con los métodosgetGMap yrefresh. Así es como se ve mi uso de directivas:

<ui-gmap-google-map center="appCtrl.mapSetup.center"
                    zoom="appCtrl.mapSetup.zoom"
                    control="appCtrl.mapSetup">
</ui-gmap-google-map>

Finalmente, estoy cargando la API de Google Maps de forma asincrónica y confiando enGoogleMapApi servicio / promesa (parte de Angular Google Maps) para saber cuándo puedo comenzar a tratar con seguridad elgoogle.maps.Map objeto (por ejemplo, agregar oyentes de eventos, etc.). Aquí hay un pequeño ejemplo de cómo se ve:

// inside the AppController constructor, see the fiddle linked below
var mapSetup = this.mapSetup;
GoogleMapApi.then(function () {
    google.maps.event.addListener(mapSetup.getGMap(), 'click', function () {
        alert('hello');
    });

Entonces, cuando se carga la página (aquí está el violín), Obtengo "TypeError: undefined no es una función" porque elmapSetup el objeto no ha sido aumentado congetGMap orefresh. Parece que debería haber sido, según mi comprensión de la documentación.

Envolví eladdListener llamar con$timeout (el servicio angular) usando unos pocos cientos de milisegundos de retraso, y luego funcionó porque elmapSetup objeto había aumentado para ese momento congetGMap.

¿Hay alguna manera de evitar tener que usar$timeout con un retraso arbitrario para esperar hasta elcontrol-especificado objeto es realmente aumentado?

Respuestas a la pregunta(2)

Su respuesta a la pregunta