1

我已经玩了一个小时,这可能是我遗漏的一些小东西,但我似乎无法让 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";   

我回来了“未捕获的类型错误:无法调用未定义的方法'lng'”,但是如果我这样做:

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

它工作得很好。

4

2 回答 2

4

只能检查到数组中的最后一个元素。索引是从零开始的,所以最后一个索引是( length - 1)

改为刚刚less than length

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

您在代码中超出了数组,因此最后一遍将返回 undefined forpath[x]

于 2013-11-20T23:28:18.707 回答
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){
于 2013-11-20T23:30:55.147 回答