为什么在设置图层后将鼠标hover在地图上时会出现类型错误?

我有一张我在这里建造的地图: https : //www.jsnippet.net/snippet/1437/

这是一个绘图管理器解决方案,我可以在其中绘制圆形,方形或多边形。 不是多层,只有一层。

多边形放置工作完美(虽然我试图找出删除多边形顶点),但我的问题确实是控制台。

放置多边形,圆形或矩形后,我开始在地图上接收hover错误:

Uncaught TypeError: Cannot read property 'Sa' of null at UV. (onion.js:59) at Object._.A.trigger (js?key=AIzaSyALxYexJJN5slLNWWGijb16z2Dys66ASIA&libraries=drawing&callback=initMap:102) at UV.handleEvent (onion.js:63) at jy._.k.de (map.js:44) at Object._.A.trigger (js?key=AIzaSyALxYexJJN5slLNWWGijb16z2Dys66ASIA&libraries=drawing&callback=initMap:102) at hq. (common.js:132) at Object._.A.trigger (js?key=AIzaSyALxYexJJN5slLNWWGijb16z2Dys66ASIA&libraries=drawing&callback=initMap:102) at nq (common.js:87) at hq. (common.js:192) at hq. (common.js:192) 

当我将鼠标hover在地图上时会发生此错误,当我移动鼠标时,它会继续显示。 我不知道如何解决这个问题。 任何智慧都会受到高度赞赏。

谢谢。

更新#1:

我测试了多个浏览器(Opera,Firefox,IE和Chrome),我收到相同的响应加上以下错误:

 Uncaught TypeError: JSON.parse is not a function at lW (onion.js:29) at OV. (onion.js:59) at Object._.z.trigger (js?key=AIzaSyALxYexJJN5slLNWWGijb16z2Dys66ASIA&v=3&libraries=drawing&callback=initMap:102) at OV.handleEvent (onion.js:63) at hy._.k.be (map.js:44) at Object._.z.trigger (js?key=AIzaSyALxYexJJN5slLNWWGijb16z2Dys66ASIA&v=3&libraries=drawing&callback=initMap:102) at aq. (common.js:135) at Object._.z.trigger (js?key=AIzaSyALxYexJJN5slLNWWGijb16z2Dys66ASIA&v=3&libraries=drawing&callback=initMap:102) at gq (common.js:90) at aq. (common.js:200) 

现在,我没有特别调用JSON.parse,但听起来我正在顺便做到这一点。 哪里? 我该如何解决? 谢谢!

你在这个函数中犯了一个很好的错误:

 function setJSON(Shape) { console.log(Shape.type); if (Shape.type === "circle") { return '{"type":"' + Shape.type + '", "lat":"' + Shape.getCenter().lat() + '", "lng":"' + Shape.getCenter().lng() + '", "radius":"' + Shape.getRadius() + '" }'; } if (Shape.type === "rectangle") { return '{"type":"' + Shape.type + ', "start":"' + Shape.getBounds().getNorthEast() + '", "end":"' + Shape.getBounds().getSouthWest() + '"}'; } if (Shape.type === "polygon") { //eturn '{"type":"'+ Shape.type +'"}' + Shape.getPaths(); vertice = Shape.getPath(); console.log("vertice count: " + vertice.getLength()); /* HERE */ JSON = '{"type":"' + Shape.type + '", "coordinates": "'; /* ^^^ */ vertice.forEach(function(xy, i) { JSON = JSON + xy.lat() + ' ' + xy.lng() + ', '; }); JSON = JSON.slice(0, -2) + '"}'; return JSON; } return 0 } 

您正在覆盖全局JSON对象,因此JSON不再具有其方法。

通过在函数范围内声明变量来修复它:
var JSON = '{"type":"' + Shape.type + '", "coordinates": "';
https://www.jsnippet.net/snippet/1440/
更好的是将它重命名为myJSON或其他。

最好避免使用JSON,窗口,文档等全局名称。这样你就可以避免混淆。