0

国名とそれに対応する地理データでいっぱいのGoogleFusionテーブルがあります。国名の配列を取得IN('foo', 'bar', 'baz')し、Googleマップにレイヤーを追加するために設定した文字列の一部として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 に答える