为 SQL "IN" 为 Google Fusion Tables 构造字符串



我有一个Google Fusion表格,里面装满了国家名称及其相应的地理数据。我有一个网站,需要获取一系列国家/地区名称并将它们放入 SQL IN('foo', 'bar', 'baz')中,作为我为向 Google 地图添加图层而设置的字符串的一部分。

下面是一个有效的代码示例:

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 += ')';

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

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

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

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

这应该有效:

var str = "CNTRYNAME IN('"+countries.join("','")+"')";

最新更新