谷歌地图V3中在可点击多边形上使用自定义光标

6
我已经创建了可点击的多边形并将其附加到地图上。我已经为地图设置了“十字线”可拖动光标。希望多边形也能使用相同的光标。但是,当我将鼠标悬停在多边形上时,光标会变成手型。
唯一保持光标不变的方法是将多边形的clickable属性设置为false,但这会使多边形的所有事件监听器失效。
我已经花费了半个小时在网上寻找解决方案,但没有成功。是否有人掌握这样的知识宝石?

如果光标没有改变,那么你的地图用户如何知道多边形是可点击的呢? - plexer
1
这是UI和UX的问题。大多数多边形默认情况下都是可点击的,点击的原因是为了指向地图上的精确位置,并且有高亮支持,所以手形光标在这里是不合适的。 - savenkov
这个问题现在相当古老了,但我遇到了同样的问题,却很难找到解决方案 - 你找到了一个适用于生产的吗?我能想到的最好的解决方案是在需要更改光标时绘制一个不可点击的多边形,否则绘制一个可点击的。虽然过于复杂,但我认为对我的情况来说这会行得通。 - Anna Forrest
1个回答

2

经过一番思考,我想出了一个非常hacky的策略来实现这个目标。我把它放在这里供学术研究之用,但我不建议在生产网站中实施。

伪代码如下:

onPolygonMouseover:
  setTimeout(0 ms)

onTimeout:
  Find all elements in the dom with cursor == pointer
  Set pointer to crosshair

使用jQuery可能有助于查找所有光标为指针的元素。或者,您可以遍历整个DOM。

为什么要使用超时?

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

为什么超时为0?

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


谢谢!我会尽力享受找到可行的解决方案,但我同意它在生产中的适用性 :-) - savenkov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接