0

我有一个包含国家名称及其相应地理数据的 Google Fusion 表。我有一个站点需要获取一组国家/地区名称并将它们IN('foo', 'bar', 'baz')作为我为向我的谷歌地图添加图层而设置的字符串的一部分放入 SQL 中。

这是一个有效的代码示例

var layer = new google.maps.FusionTablesLayer({
    query: {
        select: 'geometry',
        from: '1vnD6W9q3VWvV3UFaza8I8UwSSWv5k6kemDjNYLo',
        where: 'CNTRYNAME IN(\'Tanzania\', \'Angola\')'
    },
    styles: [{
        polygonOptions: {
        fillColor: "#D77D00",
        fillOpacity: 0.4
    },
    markerOptions: {
        iconName: 'open_diamond'
    },
}],
});
layer.setMap(map);

您会注意到查询字符串需要\SQL 用于IN值的数组。我完全被困在如何从需要进入的值数组中构造一个字符串。

这是我尝试过的:

var str = 'CNTRYNAME IN(';
for (var i = 0; i < countries.length; i++) {
    str += '\\\'' + countries[i] + '\\\'';
    }
str += ')';

在这种情况下,查询不再正常工作。有任何想法吗?

4

1 回答 1

0

问题不在于引号的转义,您可以在这里简单地使用:

str += "'" + countries[i] + "'";

问题是您在查询中省略了逗号。

这应该有效:

var str = "CNTRYNAME IN('"+countries.join("','")+"')";
于 2012-12-02T06:40:14.290 回答