Angular Google Map,延迟加载,第二次

时间:2016-05-13 02:25:34

标签: angularjs google-maps ionic-framework angular-providers

我正在使用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。当我启动我的应用程序并从头开始连接互联网时,它才被称为第一个。

enter image description here

根据我在“提供者”这个文档中的理解,我需要在第二次尝试使用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来刷新应用程序。

0 个答案:

没有答案