我正在使用离子和传单制作 Map 应用程序 . 请注意,我没有使用传单角度指令,我使用直接JS作为传单 Map (我知道,我知道......) .

我的应用程序中的初始状态加载传单映射就好了 . 如果我切换到另一个状态并返回 Map ,一切都很好 . 但是,如果我启动应用程序,切换到另一个状态并在该状态下打开模态窗口,然后返回到原始状态, Map 被破坏并显示多个灰色图块 . 在浏览器窗口调整大小或移动设备的方向发生变化之前, Map 不会更新 .

这是关于Plunker的演示:http://plnkr.co/edit/w67K2b?p=preview . 重现:

  • 单击导航栏右侧的按钮,将进入不同的状态 .

  • 单击'Back to map'按钮返回原始状态 . Map 看起来很好 .

  • 再次单击导航栏中的按钮 .

  • 单击'Open modal'按钮,然后关闭模态 .

  • 单击'Back to map'按钮,您将看到 Map 现已断开 .

我见过其他人报告灰色瓷砖的问题,通常可以通过调用来解决:

map.invalidateSize()

不幸的是,这并没有解决我的问题 . 我几乎是一个新手,但我认为问题是当模态打开时,传单源代码中的invalidateSize()方法运行,因为map div不可见,'size'设置为x: 0,y:0,当我转换回原始状态时,它最终会破坏 Map .

我不确定从哪里开始 . 也许我可以使用JS动态调整div和技巧传单,以便认为发生了调整大小事件?我该怎么做?还有其他想法吗?

谢谢!