自定义光标在Google Maps V3中的可点击多边形上

sav*_*kov 6 cursor google-maps-api-3

我创建了可点击的多边形并将其附加到地图上.我为地图设置了'crosshair'dragggableCursor.对多边形也有相同的光标会很好.但是,当我将鼠标悬停在多边形上时,光标会变为手形.

保持光标相同的唯一方法是为多边形设置clickable:false,但是驱动多边形的所有事件侦听器都不起作用.

我花了一半时间试图在网上找到解决方案,但失败了.有没有人拥有这样的知识宝石?

ple*_*xer 2

经过一番思考,我想出了一个非常巧妙的策略来做到这一点。我出于学术好奇心将其包含在内,但我不建议在生产站点中实现它。

在伪代码中:

onPolygonMouseover:
  setTimeout(0 ms)

onTimeout:
  Find all elements in the dom with cursor == pointer
  Set pointer to crosshair
Run Code Online (Sandbox Code Playgroud)

jQuery 对于查找所有带有光标 == 指针的元素可能很有用。或者,您也可以迭代整个 DOM。

为什么超时?

超时是因为我不确定 API 公开事件的顺序。如果您的事件在内部 API 事件之前处理,您的光标可能会被内部代码覆盖。

为什么超时为0?

超时 0 将代码推送到 JS 执行堆栈上。它将在下次代码执行中出现“中断”时执行。这应该是在所有事件处理代码完成后。