融合层中可以有多少种不同的标记是否有限制?

时间:2012-03-30 08:01:33

标签: javascript google-maps-api-3 google-fusion-tables

我有这个融合表格层的实现,我尝试使用带有字母A-Z的预定义标记图标来显示地图上搜索查询的结果(很像原始谷歌地图一样)。

我实现这一目标的方法是首先创建一个图层,其中包含所有标记的通用图标。

var layer = new google.maps.FusionTablesLayer({
    query: {
        select: 'Geometry',
        from: 0000000
    },
    map: map,
    options: {
        suppressInfoWindows: true
    },
    styles: [{
        markerOptions: {
            iconName: "measle_white"
        }
    }]
});

与此同时,我根据地图居中(地理位置)的位置,使用ST_DISTANCE排序查询25个结果的同一个表,

var queryUrlHead = 'http://www.google.com/fusiontables/api/query?sql=',
    queryUrlTail = '&jsonCallback=success',
    query = 'SELECT+ID+FROM+0000000+ORDER+BY+ST_DISTANCE(Geometry,LATLNG('+position.coords.latitude+','+position.coords.longitude+'))+LIMIT+25';

var queryurl = queryUrlHead + query + queryUrlTail;

返回的JSON对象是一个唯一ID的数组,我将其称为“ids”。然后我使用一些触发器(zoomchanged)用字母图标重绘最近的25个图标(由this激发)。

    google.maps.event.addListener(map, 'zoom_changed', function () {

layer.setOptions({
    styles: [{
            markerOptions: {
                iconName: "measle_white"
            }
        }, //fallback
        {
            where: "'ID' = " + ids.table.rows[0][0],
            markerOptions: {
                iconName: "a_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[1][0],
            markerOptions: {
                iconName: "b_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[2][0],
            markerOptions: {
                iconName: "c_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[3][0],
            markerOptions: {
                iconName: "d_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[4][0],
            markerOptions: {
                iconName: "e_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[5][0],
            markerOptions: {
                iconName: "f_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[6][0],
            markerOptions: {
                iconName: "g_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[7][0],
            markerOptions: {
                iconName: "h_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[8][0],
            markerOptions: {
                iconName: "i_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[9][0],
            markerOptions: {
                iconName: "j_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[10][0],
            markerOptions: {
                iconName: "k_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[11][0],
            markerOptions: {
                iconName: "l_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[12][0],
            markerOptions: {
                iconName: "m_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[13][0],
            markerOptions: {
                iconName: "n_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[14][0],
            markerOptions: {
                iconName: "o_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[15][0],
            markerOptions: {
                iconName: "p_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[16][0],
            markerOptions: {
                iconName: "q_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[17][0],
            markerOptions: {
                iconName: "r_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[18][0],
            markerOptions: {
                iconName: "s_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[19][0],
            markerOptions: {
                iconName: "t_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[20][0],
            markerOptions: {
                iconName: "u_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[21][0],
            markerOptions: {
                iconName: "v_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[22][0],
            markerOptions: {
                iconName: "w_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[23][0],
            markerOptions: {
                iconName: "x_blue"
            }
        }, {
            where: "'ID' = " + ids.table.rows[24][0],
            markerOptions: {
                iconName: "z_blue"
            }
        }
    ]
});

现在,这实际上非常出色,除了前5个结果A-D(后备图标为+1)。这里出了什么问题?我是否达到了某个限制(markerOptions只需要5个值?)或者我是否搞砸了代码?

旁注: This example每层似乎有超过5个图标,但谷歌制作它并且我不理解任何图标。

1 个答案:

答案 0 :(得分:0)

很抱歉,但只能通过Maps API设置5种样式。 developers guide中提到了此限制。 我怀疑显示所有可能图标的地图不是FT图层。如果通过FT UI完成,您可以拥有更多样式,但这不是动态的,可能不适用于您的情况。