我正在使用angular-ui.github.io/angular-google-maps /
我使用推荐的延迟加载技术,我在app.js中有这个:
.config(function(uiGmapGoogleMapApiProvider) {
uiGmapGoogleMapApiProvider.configure({
// key: 'your api key',
v: '3.20' //defaults to latest 3.X anyhow
//libraries: 'weather,geometry,visualization'
});
})
在我的控制器的某个时刻,我执行了这个:
var uiGmapGoogleMapApiTimer = $timeout(function() {
reject("uiGmapGoogleMapApi didn't respond after 10 seconds.");
}, 5000);
console.log('DUDE.01');
uiGmapGoogleMapApi.then(function(maps) {
console.log('DUDE.02');
$timeout.cancel(uiGmapGoogleMapApiTimer);
geocoder = new google.maps.Geocoder();
resolve(geocoder);
}, function(err) {
console.log('DUDE.03');
});
因此,当我离线时,计时器将启动,我将用户发送回登录页面。 (原来我只是退出应用程序。它适用于Android,但在iOS中它不起作用,实际上它被Apple禁止)。
所以...这就是为什么现在我把它发回登录页面。
现在,在登录页面中,我重新激活了我的wifi ....一旦我回到(应该)显示地图的页面......它就会中断。 uiGmapGoogleMapApi.then的成功处理程序永远不会被调用。 (Dude.01会被打印出来,但Dude.02也不会打印Dude.03。)
所以...该页面(错误地)认为设备仍然断开连接。
我想这是因为谷歌地图javascripts的加载只进行一次(在加载期间 - 这就是为什么如果我关闭我的应用程序,然后返回,事情会运行得很好)。
所以...它不是真正的延迟加载(?)。或者......如果它是延迟加载,它似乎不支持这样的场景......尝试第二次加载它(如果由于连接而第一次失败)。
是否有人熟悉angular-ui.github.io/angular-google-maps/的源代码,以建议解决此问题的方法是什么?
我查看了我在图书馆代码中添加的日志...我得出结论:我需要第二次调用第183行来重新执行uiGmapGoogleMapApi.then ...目前它还没有“T。当我启动我的应用程序并从头开始连接互联网时,它才被称为第一个。
根据我在“提供者”这个文档中的理解,我需要在第二次尝试使用uiGmapGoogleMapApi时(之前)重新实现。
https://docs.angularjs.org/api/auto/service/ $提供
是吗?怎么样?
看起来我在这里与提供者缓存作斗争。因为我在我的控制器中使用依赖注入来获取对uiGmapGoogleMapApi的引用。 (我有.controller('myctrl',函数(uiGmapGoogleMapApi){...})
我可能需要的是:
.controller('myctrl', function() {
var uiGmapGoogleMapApi = $injector.get('uiGmapGoogleMapApi');
//or something along that line maybe
})
我刚尝试过,仍然无法正常工作。
请帮忙。
谢谢, 拉嘎
好吧,我的“解决方案”是:不是进入登录页面,而是通过将窗口对象的当前url设置为index.html来刷新应用程序。