angular-google-maps - 监听 infowindow domready 事件
angular-google-maps - listen for infowindow domready event
在普通js中监听domready事件Google地图相对容易
概述 here :
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(infoWindow, 'domready', function() {
// whatever you want to do once the DOM is ready
});
但是在 angular-google-maps 中如何做似乎并不明显。
有解决办法吗?
使用Angular Google Maps involves using the infowindow control object - see docs时的解决方法。
如 this issue 中所述 - 我第一次发布此解决方案的地方 - 您可以在主控制器中创建一个空的信息窗口控制对象:
$scope.infowindowControl = {};
然后你在 ui-gmap-window
指令定义中绑定你的新对象,如:
<ui-gmap-window
options="windowOptions"
closeClick="closeClick()"
control="infowindowControl"
>
在信息窗口打开时(实际上不确定在什么时候)- 它会将五个函数传递给您在 $scope 中创建的空对象。其中一些功能在 documentation 中有说明,但以一种相当随意和未定义的方式:
- getChildWindows()
- getGWindows()
- getPlurals()
- 隐藏窗口()
- showWindow()
您需要的是 getGWindows()
- 您将其放入标记 click
事件中。
这将为您提供一个 数组 打开的信息窗口,您现在可以在标准 google 地图时尚中附加一个事件侦听器,例如:
var windows = $scope.infowindowControl.getGWindows();
console.log('inside click after getGWindows ', windows);
google.maps.event.addListener(windows[0], 'domready', function() {
console.log('infowindow domready just fired !!');
});
虽然这不是一个理想的、有据可查的或简单的解决方案(我花了好几个小时才弄明白)——坦率地说,将函数传递给一个空对象是违反直觉的——但它似乎确实有效。
在普通js中监听domready事件Google地图相对容易 概述 here :
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(infoWindow, 'domready', function() {
// whatever you want to do once the DOM is ready
});
但是在 angular-google-maps 中如何做似乎并不明显。
有解决办法吗?
使用Angular Google Maps involves using the infowindow control object - see docs时的解决方法。
如 this issue 中所述 - 我第一次发布此解决方案的地方 - 您可以在主控制器中创建一个空的信息窗口控制对象:
$scope.infowindowControl = {};
然后你在 ui-gmap-window
指令定义中绑定你的新对象,如:
<ui-gmap-window
options="windowOptions"
closeClick="closeClick()"
control="infowindowControl"
>
在信息窗口打开时(实际上不确定在什么时候)- 它会将五个函数传递给您在 $scope 中创建的空对象。其中一些功能在 documentation 中有说明,但以一种相当随意和未定义的方式:
- getChildWindows()
- getGWindows()
- getPlurals()
- 隐藏窗口()
- showWindow()
您需要的是 getGWindows()
- 您将其放入标记 click
事件中。
这将为您提供一个 数组 打开的信息窗口,您现在可以在标准 google 地图时尚中附加一个事件侦听器,例如:
var windows = $scope.infowindowControl.getGWindows();
console.log('inside click after getGWindows ', windows);
google.maps.event.addListener(windows[0], 'domready', function() {
console.log('infowindow domready just fired !!');
});
虽然这不是一个理想的、有据可查的或简单的解决方案(我花了好几个小时才弄明白)——坦率地说,将函数传递给一个空对象是违反直觉的——但它似乎确实有效。