Ionic google map zoom event:使用cancelable=false忽略取消触摸结束事件的尝试

6qfn3psc  于 2023-04-27  发布在  Ionic
关注(0)|答案(3)|浏览(187)

我在我的ionic 2应用程序中使用谷歌Map,我希望我的标记根据Map的缩放级别显示/消失。所以我在函数“ionViewDidEnter”中添加了以下行:

this.map.addListener('idle', this.adjustMarkerVisibility);

然而,当我缩放Map(甚至只是滚动它)时,我会得到一个警告
忽略取消触摸结束事件的尝试,cancelable=false,例如,因为滚动正在进行中,无法中断。
而这个.adjustMarkerVisibility()从来没有被调用过。我已经搜索了一段时间的错误,但没有任何与谷歌Map有关的东西出现。任何人有任何建议吗?谢谢!

0pizxfdo

0pizxfdo1#

我会把这作为一个评论,但我还没有50代表这样做:(
我的团队在GoogleMap和Chromium中遇到了同样的问题(我们在触摸屏系统上使用的是具有硬设置分辨率的Kiosk模式),我们发现的奇怪之处在于,它似乎只在原始浏览器选项卡中启动时才会抛出此错误,如果它在浏览器启动后创建的新选项卡中启动,那么这些警告就会消失,一切都会正常工作。我们继续调查,但似乎这可能与初始启动时初始选项卡上的视口大小设置不正确有关。这是否也符合您的体验(也许我们可以在这里找到一个解决方案)?

js5cn81o

js5cn81o2#

经过一点搜索和寻找解决方案,我想我已经找到了一个,它不是很优雅,但它的工作。
我正在开发一个 cordova 应用程序,并面临着同样的问题与谷歌Map,我研究了它,我意识到它抛出的MapAPI文件,它从谷歌服务器下载。
它的问题是在文件的某一行上,它试图停止一些在那一刻无法停止的事件,它有一个简单的修复。
所以,你必须从谷歌服务器下载API文件,而不是直接加载并对该文件进行更正;
有一条线看起来像那样;

a.preventDefault();是问题所在,你只需要用这个条件替换它;
if (a.cancelable) a.preventDefault();
因此,在尝试取消事件之前,它会检查事件是否可以取消。
您可以通过浏览器上的开发人员工具在混淆文件上轻松找到该行。

hyrbngr7

hyrbngr73#

这里有一个可能的解决方法。这是一个hack,但比下载Google JS并尝试在那里修复它要简单得多:

// (hack to stop Google Maps spamming the console with errors)
            
            const previousPreventDefault = TouchEvent.prototype.preventDefault; 
            TouchEvent.prototype.preventDefault = function () {
                if ( this.cancelable ) {
                    previousPreventDefault.call( this );
                }
            }

相关问题