【问题标题】:Titanium: How to prevent Google Maps auto panning to marker when clicking on said marker?Titanium:如何防止谷歌地图在点击标记时自动平移到标记?
【发布时间】:2016-01-20 22:24:07
【问题描述】:

我正在使用 Titanium(v5.0.4,sdk 5.1.2GA)编写一个跨平台的移动应用程序。该应用程序显示带有标记的地图,用于标记靠近当前位置的兴趣点。如果用户将地图移动到新区域,则所有先前显示的标记都将被移除,并根据新位置计算并显示一组新的标记。用户可以单击一个标记,并显示一个信息窗口。单击 infoWindow 会打开一个新窗口以获取更多信息。

这在 IOS(使用 MapKit)上运行良好。但是,在 Android(使用 Google 地图)上,单击标记会显示 infoWindow,但也会使地图以标记为中心,这会触发“regionchanged”事件,这会导致我的应用程序删除标记并显示新集。基本上,用户永远无法单击 infoWindow,也无法到达新窗口以获取更多信息。

我想做的事:防止谷歌地图在点击标记时自动平移到标记。

或者,有没有办法区分单击标记后触发的“regionchanged”事件和用户移动地图触发的“regionchanged”事件?这将允许我只对后者做出反应。

我找到了这个 (Impossible to prevent auto panning to a marker when clicking on it (google maps)) 但这是 ruby​​ on rails。我遇到的其他事情(虽然找不到链接)涉及重载“click”事件处理程序或使用 disableAutoPan infoWindow 选项 (Google Maps: How to prevent InfoWindow from shifting the map),但这都是针对 Javascript API 的。

那么,有人知道吗?

【问题讨论】:

    标签: android google-maps appcelerator appcelerator-titanium


    【解决方案1】:

    我最近遇到了同样的问题。虽然你问这个问题已经很久了,但我认为这里的解决方案值得注意。

    1. 使地图视图同时响应 clickregionchanged 事件

    <View id="mapView" module="ti.map" onClick="click" onRegionchanged="regionChanged" method="createView"> </View>

    1. 使用两个事件侦听器都可以访问的标志变量。

    var clicked = 0;

    1. click 事件设置变量。

    var click = function(e) { clicked = 1; ... }

    1. _.defer(...) 包装regionchanged 事件的功能。

    var regionChanged = function(e) { _.defer(function(){ ... (regionchanged code goes here) }); }

    1. regionchanged 如果设置了变量,则不应执行代码。

    var regionChanged = function(e) { _.defer(function(){ if (clicked == 0) { ... (regionchanged code goes here) } }); }

    1. 取消设置regionchanged 代码末尾的变量。

    var regionChanged = function(e) { _.defer(function(){ if (clicked == 0) { ... (regionchanged code goes here) } clicked = 0; }); }

    这里defer 以某种方式确保两个事件都被触发(似乎)regionchanged 事件发生在点击事件之后。我认为情况可能并非总是如此,但我的测试并没有让我失望。

    而且我知道我可以将布尔值用于 clicked :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2016-12-28
      • 2013-09-14
      • 2012-09-27
      • 2012-09-01
      • 2019-06-07
      • 2017-09-21
      相关资源
      最近更新 更多