标记聚类 - 融合表层 - Google Maps v3

Ron*_*ieT 6 google-maps google-maps-api-3 google-fusion-tables

有没有办法让标记聚类(即makerclusterer)与Fusion Table层一起使用?似乎你必须为markerclusterer分配标记,但是当使用融合表层时,Google正在处理标记/ infowindows?还在努力想出这个融合表的事情.

基本上寻找一种方法来聚集通过Fusion Table提供的大量标记

Fre*_*ddy 5

Fusion Table图层为每个图块渲染一个额外的png图像,该图像覆盖在地图图块的顶部,包含该图块的数据点,这是服务器端渲染部件.因此,每个图块包含数据点的多个数据点.

MapsIt.png地图图块,数据点已经位于图层上

从数据生成您自己的标记(MarkerClusterer所必需的)不会覆盖每个图块的图像,它会在地图上为每个数据点创建单独的标记,并将精灵图像叠加到该图像上.

用于每个数据点的标记精灵图像

基于此,不可能使用MarkerClusterer和FusionTablesLayer.


Ayu*_*ush 5

这是我自己的代码.我在之前的链接中尝试了这种技术,但它对我不起作用.所以这就是我做到的.

首先,我使用常规图表api查询查询融合表

function initialize() {
    mapMain = new google.maps.Map(document.getElementById('map-canvas'), {
        center: new google.maps.LatLng(37.4, -100.1),
        zoom: 3,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    mc = new MarkerClusterer(mapMain);
    var queryText = encodeURIComponent("select wikipedia_article, xy from "+tableid);
    var query = new google.visualization.Query("https://www.google.com/fusiontables/gvizdata?tq="+queryText);
    query.send(handleQueryResponse);
}
Run Code Online (Sandbox Code Playgroud)

接下来,在我的handleQueryResponse中,我动态创建了标记并将其添加到Mapclusterer中

function handleQueryResponse(response){
     dataTable = response.getDataTable();

    for(var i=0; i< dataTable.getNumberOfRows();i++){           
        var hrefval = dataTable.getValue(i,0).toString();

        var arr = dataTable.getValue(i,1).toString().split(" ");            
        var latlng = new google.maps.LatLng(arr[0], arr[1]);

        var marker = new google.maps.Marker({
            position: latlng,
            map:mapMain
        });
        fn = markerClick(i, marker);
        google.maps.event.addListener(marker,'click', fn);          
        markers.push(marker);
    }
    mc.addMarkers(markers);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,主映射,标记数组(下面代码中的mc)是全局变量.你可以在这里看到完整的工作示例.

  • 你能总结一下他们在那个网站上做了什么,这样你的答案就不会受到链接腐烂的影响吗? (2认同)

小智 0

Fusion Tables 允许您使用服务器端渲染(来自 google 服务器)一次查看数千个点。标记聚类器通过从最近的点(从客户端浏览器)构建一组聚类来解决该问题。我不一定会同时使用它们,但它可能适合您的用例,这取决于您。

您可以在此处阅读有关它们如何工作的更多信息:

http://code.google.com/apis/maps/articles/tooomymarkers.html

如果您确实也想要,可以使用 Fusion Tables API 将数据从 Fusion Tables 提供给标记聚类器。

希望这可以帮助。