6

マーカー クラスタリング (つまりmakerclusterer ) をフュージョン テーブル レイヤーと連携させる方法はありますか? フュージョン テーブル レイヤーを使用する場合、マーカーを markerclusterer に割り当てる必要があるようですが、Google はマーカー/情報ウィンドウを処理していますか? まだこのフュージョン テーブルのことを理解しようとしています。

基本的に、Fusion Table を介して提供される大量のマーカーをクラスター化する方法を探しています

4

4 に答える 4

5

フュージョン テーブル レイヤーは、マップ タイルの上に重ねられる各タイルの追加の png 画像をレンダリングします。これには、そのタイルのデータ ポイントが含まれます。これは、サーバー側のレンダリング部分です。したがって、データ ポイントを含むタイルごとに複数のデータ ポイントです。

データ ポイントが既にレイヤーに配置されている MapsIt.png マップ タイル

MarkerClusterer に必要なデータからの独自のマーカーの生成は、タイルごとに画像をオーバーレイするのではなく、マップ上にデータ ポイントごとに個別のマーカーを作成し、その上にスプライト画像をオーバーレイします。

各データ ポイントに使用されるマーカー スプライト イメージ

これに基づいて、MarkerClusterer と FusionTablesLayer を使用することはできません。

于 2011-10-26T20:40:59.023 に答える
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);
}

次に、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) はグローバル変数です。ここで完全な動作例を見ることができます。

于 2011-11-10T03:49:26.577 に答える
1

フュージョンテーブルで動作することはないと思います。IMOフュージョンテーブルには、空間インデックスのサポートがありません。siは、2次元の複雑さを1次元の複雑さに減らすのに役立ちます。ヒートマップ、ツリーマップ、郵便番号検索、マップアプリケーションなどの多くのアプリケーションで使用されます。Nickのヒルベルト曲線空間インデックス四分木ブログを探したいと思います。

于 2011-07-26T20:53:45.770 に答える
0

Fusion Tablesを使用すると、サーバー側のレンダリング(Googleサーバーから)を使用して、一度に数千のポイントを表示できます。Marker Clustererは、(クライアントブラウザーから)最も近いポイントからクラスターのセットを構築することで問題を解決します。私は必ずしも両方を同時に使用するわけではありませんが、それはあなたのユースケースでうまくいくかもしれません。それはあなた次第です。

それらがどのように機能するかについての詳細は、ここで読むことができます。

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

本当に必要な場合は、Fusion Tables APIを使用して、FusionTablesからMarkerClustererにデータをフィードできます。

お役に立てれば。

于 2011-07-27T09:39:33.020 に答える