Google maps api 3 谷歌地图V3中可点击多边形上的自定义光标

Google maps api 3 谷歌地图V3中可点击多边形上的自定义光标,google-maps-api-3,cursor,Google Maps Api 3,Cursor,我已经创建了可点击多边形并将其附着到地图上。我为地图设置了“十字线”拖动光标。如果多边形也有相同的光标就好了。但是,当我将光标悬停在多边形上时,光标将变为手形 保持光标不变的唯一方法是为多边形设置clickable:false,但这会驱动多边形的所有事件侦听器不工作 我花了一半的时间在网上寻找解决方案,但失败了。有人拥有这样的知识宝库吗?经过一番思考,我想出了一个非常老练的策略。出于学术好奇心,我将其包括在内,但我不建议在生产站点中实现它 在伪代码中: onPolygonMouseover:

我已经创建了可点击多边形并将其附着到地图上。我为地图设置了“十字线”拖动光标。如果多边形也有相同的光标就好了。但是,当我将光标悬停在多边形上时,光标将变为手形

保持光标不变的唯一方法是为多边形设置clickable:false,但这会驱动多边形的所有事件侦听器不工作


我花了一半的时间在网上寻找解决方案,但失败了。有人拥有这样的知识宝库吗?

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

在伪代码中:

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执行堆栈上。它将在下次代码执行中出现“中断”时执行。这应该是所有事件处理代码完成后的情况。

如果光标不变,地图用户如何知道多边形是可单击的?这是UI和UX的问题。默认情况下,大多数多边形都是可单击的,单击的原因是指向地图上的精确位置,并且有高亮显示支持,因此手动光标在这里是有害的。这个问题现在已经很老了,但我也遇到了同样的问题,在解决方案方面几乎找不到什么-您找到了一个适合生产的吗?我能想到的最好的解决方案是在需要更改光标时绘制一个不可单击的多边形,否则绘制一个可单击的多边形。不必要的复杂,但我认为它适合我的场景。谢谢!我会尽量享受找到工作解决方案的乐趣,但我同意在生产上的适用性:-)