【问题标题】:Why is the MapListener not always fired on Codename One GoogleMap under Simulator为什么 MapListener 并不总是在 Simulator 下的 Codename One GoogleMap 上触发
【发布时间】:2017-08-10 08:34:30
【问题描述】:

我的应用具有一个位于 BorderLayout 表单中心位置的 ContainerMap(具有有效 Javascript API 密钥的 GoogleMap)。

super(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_SCALE));
...
this.add(BorderLayout.CENTER_BEHAVIOR_CENTER, BorderLayout.center(userReportsMap));

我注册了MapListener,我想知道为什么在模拟器下放大或缩小时它并不总是被触发?看起来它在初始化 GoogleMap 并将 MapListener 添加到地图时一开始就被触发了十几次,然后它就不再触发了。我按减号键和加号键来缩小和缩小。

请注意:之后我不会删除监听器或在任何地方实例化地图。

相反,在 Android 设备上,当我捏捏它时,它似乎可以正常工作。那么,由于底层的 Javascript 映射,它是模拟器的限制吗?

感谢任何提示,

【问题讨论】:

  • 这听起来像是相对较新的 JavaScript 版本地图中的一个错误。我建议在项目的测试用例中提出问题。

标签: codenameone


【解决方案1】:

我刚刚发布了对 Google Maps 库的一些更改,以修复 JS 和模拟器中的几个竞争条件。这可能会为您解决问题。

here 是指向最新库的直接链接。或者您可以等待(可能不到一天)它出现在 Codename One 设置/扩展中并通过那里进行更新。

【讨论】:

  • 对不起史蒂夫,但我几乎看不出有什么不同。我在MapListener() 中添加了一个System.err.println,当我放大/缩小(使用-/+ 键)或移动地图时,它不会打印任何内容。我使用的是 GoogleMaps 版本 14。是你说的那个吗?
  • 我想补充一点,因为 MapListener 似乎根本没有被触发(在模拟器上以及在设备上),所以情况更糟。
  • 您需要提交问题并提供测试用例。我的测试应用程序在模拟器和我尝试过的所有设备(Android、iOS)上正确地将地图更改事件触发到 MapListener。这在所有版本中都对我有用。版本号应该最多为 15。
  • 这很奇怪,我这边应该有错误。否则 CN1 扩展窗口会显示一个绿色勾号,而 libs/GoogleMaps.ver 仍然显示 version=14
  • 现在显示版本 15!但是,如果您在测试用例 (#2011) 的第 185 行添加 `cnt.addMapListener((source, zoom, center) -> { System.err.println("Zoom or center changed"); });`消息仅在开始时打印两次,之后从不打印(至少在模拟器中)。
猜你喜欢
  • 2018-02-19
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 2019-01-16
  • 2012-04-07
相关资源
最近更新 更多