Como esperar o Angular Google Maps anexar getGMap ao objeto de controle

Eu tenho tentado configurar ouvintes de eventos de clique nogoogle.maps.Map objeto criado peloui-gmap-google-map directiva doBiblioteca angular do Google Maps.

Eu preciso fazer isso dinamicamente, então parece (pelo meu breve teste) que usar oevents parâmetro noui-gmap-google-map A diretiva não funcionará (porque parece "ler" o valor do parâmetro apenas uma vez, mas talvez eu esteja errado sobre isso).

Então eu decidi usar ocontrol parâmetro, que aumenta o objeto nomeado pelo valor do parâmetro com os métodosgetGMap erefresh. Aqui está a aparência do meu uso de diretiva:

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

Por fim, estou carregando a API do Google Maps de forma assíncrona e confiando noGoogleMapApi serviço / promessa (parte do Angular Google Maps) para saber quando posso começar a lidar com segurança com ogoogle.maps.Map objeto (por exemplo, adicionando ouvintes de eventos etc.). Aqui está um pequeno exemplo de como isso se parece:

// 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');
    });

Portanto, quando a página é carregada (aqui está o violino), Recebo "TypeError: undefined não é uma função" porque omapSetup objeto não foi aumentado comgetGMap ourefresh. Parece que deveria ter sido, com base no meu entendimento da documentação.

Eu envolvi oaddListener ligue com$timeout (serviço Angular) usando algumas centenas de milissegundos de atraso e funcionou porque omapSetup objeto já havia sido aumentado comgetGMap.

Existe uma maneira de evitar ter que usar$timeout com um atraso arbitrário para esperar até que ocontrolobjeto especificado é realmente aumentado?

questionAnswers(2)

yourAnswerToTheQuestion