未捕获的TypeError:Object ClipperJS

时间:2014-02-28 16:53:57

标签: javascript uncaught-typeerror

尝试运行我的Javascript文件时出现以下错误:

"Uncaught TypeError: Object function (a){"undefined"==typeof a&& a=0);this.m_PolyOuts=null;this.m_ClipType= d.ClipType.ctIntersection;this.m_IntersectNodeComparer=this.m_IntersectList=this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.m...<omitted>...y'"

相关代码:

<script>

 // Geolocation
 var stateData;
 var states = new Object();

 d3.json("states.json", function (data) {

         stateData = data;

         data.features.forEach(function (datum) {
                 // Populate data for each entry in states[__]...
         });

         var pt = new ClipperLib.IntPoint(67.007915, -152.002047);
         for (var i = 0; i < states["Alaska"].length; ++i) {
                 var done = 0;
                 for (var j = 0; j < states["Alaska"][i].length; ++j) {
                         var poly = states["Alaska"][i][j];
                         if (ClipperLib.Clipper.PointInPoly(pt, poly) == 1) {
                                 done = 1;
                                 break;
                         }
                         ...
                  }
         }

         ...
  });

</script>

当我尝试在Chrome中的控制台上运行命令时,我没有收到错误: https://www.dropbox.com/s/cm29oaxgr5rjz2d/Screenshot%202014-02-28%2011.42.19.png

我正在使用ClipperJS并在我的文件顶部将其作为src包含在内:

< script src="clipper.js" charset="utf-8">< /script>

(“script”或“/ script”之前没有空格 - 它们在这里是因为它不会显示。)

我认为这可能是因为类型不匹配但我尝试了:

...
var poly = [{X:10,Y:10},{X:110,Y:10},{X:110,Y:110},{X:10,Y:110}];
if (ClipperLib.Clipper.PointInPoly(pt, poly) == 1) {
    done = 1;
    break;
}
...

我仍然遇到同样的错误。 任何帮助表示赞赏!

Relevant link for where I got the idea to use ClipperJS (answer by "Timo")

1 个答案:

答案 0 :(得分:0)

没有看到你的其余代码,它似乎是一个引导问题。尝试确保在页面上的所有内容都已运行后运行代码。

另外:D3的json请求调用其回调,错误作为第一个参数,数据作为第二个参数。我怀疑这会导致每个州的Poly配置配置错误,或者根本没有配置,所以当您查询它们的包含点时它会失败。

https://github.com/mbostock/d3/wiki/Requests