使用angular-google-maps将谷歌地图合并到应用程序中
我需要一个在初始地图加载完成后将运行一次函数的命令
- 但仅在初始加载时,而不是在每次地图操作之后
我不能使用idle
,或者tilesloaded
因为这些在每次动作后都会被解雇......
我要运行的功能需要获取地图边界以在初始页面加载时从服务器中提取数据 - 我希望这在初始加载时发生一次,然后是使用刷新的手动功能map-control
- 如果我使用idle
或tilesloaded
触发它,它将每次用户移动地图时拉取服务器数据。
有谁知道如何在初始地图加载后触发一次性命令以获取地图详细信息(边界等)?
我试过maps.getBounds()
加入第二个承诺功能,但它不起作用。
请注意,我在这里有一个小提琴- 在定义控件/选项等之后,我不能再链接任何承诺,$scope.map
因为它们不返回承诺:
文档中的代码示例没有显示如何在定义 后链接承诺。$scope.map
html
<div class="angular-google-map-container" ng-controller="MainCtrl">
<ui-gmap-google-map center="map.center" zoom="map.zoom" draggable="true" options="map.options" events="map.events" control="googlemap">
</ui-gmap-google-map>
</div>
控制器
myApp.controller('MainCtrl', function($scope, uiGmapGoogleMapApi) {
uiGmapGoogleMapApi
.then(function(maps){
$scope.map = {
center: {
latitude: 37.7749295,
longitude: -122.4194155
},
zoom: 12
events: {
tilesloaded: function (maps, eventName, args) {
myServiceFuntion(maps) // this work fine but fires every time
},
dragend: function (maps, eventName, args) {
myServiceFuntion(maps) // this work fine but fires every time
},
zoom_changed: function (maps, eventName, args) {
myServiceFuntion(maps) // this work fine but fires every time
}
}
}
$scope.bounds = maps.getBounds() // this gives me 'getBounds() not a function'
myServiceFuntion(maps); // this gives an error... ?
return maps; //no promise returned here so no chance to delay the function below
})
.then(function(maps){
//is this where i need to put my function ? doesn't delay on map load since no promise returned...
});
});
显然, promisemaps
返回的对象与诸如 etc 之类的事件返回uiGmapGoogleMapApi
的对象完全不同……相当混乱。 maps
tilesloaded
此外,FAQ仅指示如何使用tilesloaded
来获取地图实例 - 由于已经描述的原因,这不起作用。