我有一个充满国家/地区名称及其相应地理数据的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 += ')';
在这种情况下,查询不再正常工作。有什么想法吗?
答案 0 :(得分:0)
问题不在于报价的转义,你可以在这里使用:
str += "'" + countries[i] + "'";
问题是您在查询中省略了逗号。
这应该有效:
var str = "CNTRYNAME IN('"+countries.join("','")+"')";