【发布时间】:2011-08-30 11:15:12
【问题描述】:
我正在创建一个带有内置 WebBrowser 控件的 .Net 库。该库通常应该在其他应用程序中处理谷歌地图。基本上所有基本的 Google 地图 API 事件都会发送到我的 C# 库,以便使用它传递给应用程序。
一切都很好,直到使用我的库的应用程序想要在单击时更改标记图标并在双击时执行不同的操作。在这种情况下,应用程序在 C# 级别更改标记图标,然后调用 Javascript 函数来更改地图上的图标:
function SetMarkerIcon(id, imageUri) {
markers[id].setIcon(imageUri);
}
我对问题进行了调试,得出的结论是 Javascript 会冻结,直到下载图像文件并且对第二次单击无响应,这应该会触发 dblclick 事件。所以我的第一个问题是这是否是正确的思维方式。
基于这个假设,我尝试使用setTimeout 来稍微延迟下载文件:
function SetMarkerIcon(id, imageUri) {
setTimeout(function () { markers[id].setIcon(imageUri); }, 200);
}
但显然这个解决方案非常“肮脏”(虽然在测试环境中有效,但实际上它在使用本地 .js 文件时甚至可以延迟 0ms,可能是因为setTimeout 使用了一种单独的线程,但不是服务器上的脚本),因此第二个问题:您有任何有用的想法如何正确解决此错误?
对不起,如果问题有点含糊。
【问题讨论】:
标签: javascript google-maps-api-3 dom-events