无法调用未定义的方法但警报(方法)仍然有效

时间:2013-11-20 23:18:41

标签: javascript google-maps-api-3 methods google-maps-engine

我已经玩了一个小时,这可能是我想念的小东西,但我似乎无法获得Google API路径方法“.lat()”或“.lng() “在我的职能部门工作。但是,如果我提醒相同的方法,它会向我显示lat / lng值就好了。此函数正在尝试构建Maps Engine查询的WHERE子句的LINESTRING部分。

queryWhere += "ST_DISTANCE(geometry,ST_GEOMFROMTEXT('LINESTRING(";

    for(x = 0; x <= path.length; x=x+2){

        queryWhere += path[x].lng() + " " + path[x].lat();

        if(!path[path.length - 1] || !path[path.length - 2]){

            queryWhere += ", ";
                }
        }
            queryWhere += ")'))<5000";   

我回来了“Uncaught TypeError:无法调用未定义的方法'lng',但是,如果我这样做:

alert(path[x].lng() + " " + path[x].lat());

它的工作非常好。

2 个答案:

答案 0 :(得分:4)

只能检查数组中的最后一个元素。索引基于零,因此最后一个索引为( length - 1)

更改为less than length

for(x = 0; x < path.length; x=x+2)

您在代码中超出了数组,因此最后一遍将返回path[x]未定义

答案 1 :(得分:1)

我认为这可能来自你的循环。

for(x = 0; x <= path.length; x=x+2){

这里,x可以等于path.length。但是,因为它从0开始,所以数组的最后一个索引是path.length-1

您需要使用严格的比较器:

for(x = 0; x < path.length; x=x+2){

或减少长度:

    for(x = 0; x <= path.length-1 ; x=x+2){