我正在使用UI路由器和用户界面谷歌地图。
根据文档,我应该使用uiGmapIsReady
来了解地图是否可以在页面上使用。这在隔离方面很有效。但是当从一个页面转换到另一个页面时,两个页面上都存在地图问题。
主要问题似乎是uiGmapIsReady
会立即被OLD地图的数据而不是新地图的数据触发。我可以通过将一个地图更改为“卫星”然后切换到新页面来证明这一点。默认情况下,新页面是路线图,但uiGmapIsReady
公开的地图有一种卫星!
我尝试过很多东西,但似乎没什么用。我曾尝试订阅uiGmapIsReady
只有一个$viewContentLoaded
或$stateChangeSuccess
事件已被解雇,但不幸的是它们很快就会发生。
答案 0 :(得分:0)
在深入了解源代码后,我想出了如何解决这个问题
this.uiGmapIsReady
.promise(this.uiGmapIsReady.instances() + 1)
.then((mapInstances: any[]) => {
var map: google.maps.Map = mapInstances[mapInstances.length - 1].map;
});
您传递给承诺的数字是您期望的地图实例的数量。如果数字错误,那么承诺将不会返回。因此,您必须使用instances()
来告诉您当前的计数并向其添加1(这是您的新页面将创建的地图数量)。
最后,您只需要获取数组中的最后一张地图,因为它始终是最新的地图。