为什么在设置图层后将鼠标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,窗口,文档等全局名称。这样你就可以避免混淆。