我正在 Google App Script 项目中的 google 地图上创建一些标记和多边形。我希望能够切换所有可单击和不可单击的地图对象。我使用“可点击”的标记属性来做到这一点,通过在 true 和 false 之间进行更改。但奇怪的是,我发现您还必须将标记的标题属性(如果有)设置为“”,否则此过程将不起作用。
但是,要强制地图上当前显示的标记处于可点击状态,您需要将标记的“地图”设置为 null(使用 setMap),然后再次添加“地图”。这种将标记中的地图清空然后将其添加回来的过程对于标记非常有用,但似乎不适用于多边形。
我可以通过应用单击状态来手动强制其工作,然后手动从地图中删除多边形(地图旁边有一个复选框可以执行此操作,它只使用 setMap(null)),然后手动将它们添加回来在(使用 setMap(map))。并且该过程运行没有问题。
但是就是这个顺序运行代码的过程...
markers[i].setMap(null)
markers[i].setMap(map)
...这不适用于多边形,但适用于标记。有什么想法吗?
供参考,我的多边形对象是这样形成的......
// Construct the polygon
var olsObject = new google.maps.Polygon({
paths: mvcArr,
strokeColor: hexOLSCol,
strokeOpacity: lineOpacity,
strokeWeight: 1.0,
fillColor: hexOLSCol,
fillOpacity: surfOpacity,
zIndex : zind,
title: tempRwy.name[j],
content: htmlStr,
clickable: true,
});
// add marker to global array
markers.push(olsObject)
感谢 MrUpisdown,答案是使用...
markers[i].setOptions({ clickable: false })
而不是直接更改标记设置。通过使用此功能,标记(或多边形)不会被删除或添加回地图以启用单击状态。