4

フュージョン テーブルからのデータの視覚化に問題があります。たとえば、次のコードがあります。

function initialize() {
    map = new google.maps.Map(document.getElementById('map_canvas'), {
        center: new google.maps.LatLng(38.71980474264242, -121.552734375),
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    fusionLayer = new google.maps.FusionTablesLayer({
        query: {
            select: 'column',
            from: 'tableId',
            where: "a huge where clause"
        },
        map: map
    });
}

ご覧のとおり、クエリの「where」オプションに「巨大な where 句」があります。しかし、初期化中、Google マップ API は次のような URI に対して多くの GET リクエストを実行します。

http://mt1.googleapis.com/mapslt?hl=en-US&lyrs=ft:tableId|sc:'column'|sg:{huge_where_clause}&x=6&y=13&z=5&w=256&h=256&source=apiv3&token=74442

その要求はすべて、ステータス コード 414: Request-URI Too Large で失敗します。

それで、私の質問:巨大なWHERE句を使用してフュージョンテーブルをクエリしたり、GETの代わりにPOSTリクエストを使用したりすることは可能ですか?

4

1 に答える 1

1

GET URL は最大 2,000 文字に制限されています。お気づきのように、より長い複雑な WHERE 句を作成することができ、それがこの問題の原因となります。

制限を超えている場合は、列の名前を変更して、列の長さを短くすることが解決策の 1 つかもしれません。

または、クエリを単純化できる可能性があります。上記のように、これは 1 つのクエリでした。

zip IN ('zip1', 'zip2', ..., 'zipN')

しかし、書き直して多くの文字を節約できる可能性があります。

zip < zipN
于 2012-12-10T20:24:43.720 に答える