我有一个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("','")+"')";