Кластеризация маркеров - Fusion Tableer Layer - Google Maps v3 - PullRequest
6 голосов
/ 26 июля 2011

Есть ли способ заставить кластер маркеров (т.е. makerclusterer ) работать со слоем Fusion Table? Кажется, вам нужно назначить маркеры для markerclusterer, но при использовании слоя таблицы слияния Google обрабатывает маркеры / информационные окна? Все еще пытаюсь разобраться с этим фьюжн-столом.

В основном ищет способ кластеризации большого количества маркеров, предоставляемых через Fusion Table

Ответы [ 4 ]

5 голосов
/ 10 ноября 2011

Это мой собственный код. Я пробовал технику в предыдущей ссылке, но она не работала для меня. Вот как я это сделал.

Сначала я запросил таблицу слияния с запросом 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);
}

Затем в своем 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);
}

В этом случае основная карта, массив маркеров (mc в коде ниже) являются глобальными переменными. Вы можете увидеть полный рабочий пример здесь .

5 голосов
/ 27 октября 2011

Fusion Table Layers отображает дополнительное png-изображение для каждой плитки, которая накладывается поверх плитки карты, и содержит точки данных для этой плитки, это часть рендеринга на стороне сервера.Таким образом, это несколько точек данных на плитку, которые содержат точки данных.

MapsIt.png map tile with data points already positioned on the layer

Создание собственных маркеров из данных, что необходимо для MarkerClusterer, не накладывает изображение на плитку, оносоздает отдельный маркер на карте для каждой точки данных и накладывает на него изображение спрайта.

Marker Sprite image used for each data point

На основании этого невозможно использовать MarkerClusterer и FusionTablesLayer.

1 голос
/ 27 июля 2011

Не думаю, что у вас получится работать с фьюжн-столом.ИМО таблица фьюжн не хватает поддержки пространственного индекса.Си помогает уменьшить 2d сложность до 1d сложности.Он используется во многих приложениях, таких как тепловые карты, древовидные карты, поиск по почтовому индексу, картографическое приложение.Вы хотите найти блоговую кривую Гильберта для пространственного индекса Ника.

0 голосов
/ 27 июля 2011

Fusion Tables позволяет просматривать тысячи точек одновременно с помощью рендеринга на стороне сервера (с серверов Google). Маркер Clusterer решает проблему путем создания набора кластеров из ближайших точек (из браузера клиента). Я не обязательно буду использовать их оба одновременно, но это может сработать для вашего случая использования, это ваше дело.

Подробнее о том, как они работают, вы можете прочитать здесь:

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

Если вы действительно хотите, вы можете использовать API Fusion Tables для передачи данных из Fusion Tables в Marker Clusterer.

Надеюсь, это поможет.

...