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 ocontrol
objeto especificado é realmente aumentado?