0

実質的に同じコードを使用しているが、動作が異なる2つのGoogleマップがあります。どちらもFusionTableにクエリを実行してレイヤー(マーカーのグループ)を作成し、jQueryスライダーを使用してレイヤーをマップに設定およびマップから設定解除する関数をトリガーします。2つの違いは、クエリするFustionTableだけです。小さなデータセットをクエリするものは期待どおりに機能します(すべてのFusion Tableレイヤーとそれに対応するデータポイントは期待どおりに設定および設定解除されます)。約3500のデータポイントをクエリするもの最初のいくつかのレイヤー(データポイントが最も多いレイヤーではありません)を設定/設定解除すると、期待どおりに機能します。次に、2003-2006レイヤーを設定するときに間違ったデータポイントのセットが表示されます(一部の2005データポイントが2003-2006レイヤーにないことを確認しました)。その後、残りのレイヤーを設定/設定解除するために期待どおりに機能し続けるようです。

これはどこかのデータの不具合を示しているように思われるかもしれませんが、私たちはそれをかなり徹底的に調べたので、そこに問題は見つかりませんでした。5レイヤーの制限に違反しておらず(一度に1つのレイヤーのみが設定されています)、マップに追加できるマーカーの数に制限がありません。

誰もがこれを引き起こしている可能性があるものを知っていますか?以下の完全なコード。両方のバージョンは、FusionテーブルIDを除いて同一です。

var map;
var infowindow;


function Initialize() {

    var mapCenter = new google.maps.LatLng(42,-71.5314);
    var mapOptions = {
        zoom: 8,
        center: mapCenter,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        zoomControl: true,
        zoomControlOptions: {
            style: google.maps.ZoomControlStyle.SMALL
        }
    };

    map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

    infowindow = new google.maps.InfoWindow();

    layer2003 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2003'
        }
    });

    layer2004 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2004'
        }
    });

    layer2005 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2005'
        }
    });

    layer2006 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2006'
        }
    });

    layer2007 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2007'
        }
    });

    layer2008 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2008'
        }
    });

    layer2009 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2009'
        }
    });

    layer2010 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2010'
        }
    });

    layer2011 = new google.maps.FusionTablesLayer({
        query: {
            select: 'Geocode_Source',
            from: '2203337',
            where: 'Year <= 2011'
        }
    });


    layer2003.setMap(map);


    google.maps.event.addListener(map, 'zoom_changed', function() {
        if (map.getZoom() > 12) {
            map.setZoom(12);
        }
    });

    google.maps.event.addListener(map, 'zoom_changed', function() {
        if (map.getZoom() < 8) {
            map.setZoom(8);
        }
    });

} //end function Initialize

//Set Fusion Table layers onto the map or to null, as appropriate
function set2003() {
    layer2003.setMap(map);
    layer2004.setMap(null);
    layer2005.setMap(null);
    layer2006.setMap(null);
    layer2007.setMap(null);
    layer2008.setMap(null);
    layer2009.setMap(null);
    layer2010.setMap(null);
    layer2011.setMap(null);
}

function set2004() {
    layer2003.setMap(null);
    layer2004.setMap(map);
    layer2005.setMap(null);
    layer2006.setMap(null);
    layer2007.setMap(null);
    layer2008.setMap(null);
    layer2009.setMap(null);
    layer2010.setMap(null);
    layer2011.setMap(null);
}

function set2005() {
    layer2003.setMap(null);
    layer2004.setMap(null);
    layer2005.setMap(map);
    layer2006.setMap(null);
    layer2007.setMap(null);
    layer2008.setMap(null);
    layer2009.setMap(null);
    layer2010.setMap(null);
    layer2011.setMap(null);
}

function set2006() {
    layer2003.setMap(null);
    layer2004.setMap(null);
    layer2005.setMap(null);
    layer2006.setMap(map);
    layer2007.setMap(null);
    layer2008.setMap(null);
    layer2009.setMap(null);
    layer2010.setMap(null);
    layer2011.setMap(null);
}

function set2007() {
    layer2003.setMap(null);
    layer2004.setMap(null);
    layer2005.setMap(null);
    layer2006.setMap(null);
    layer2007.setMap(map);
    layer2008.setMap(null);
    layer2009.setMap(null);
    layer2010.setMap(null);
    layer2011.setMap(null);
}

function set2008() {
    layer2003.setMap(null);
    layer2004.setMap(null);
    layer2005.setMap(null);
    layer2006.setMap(null);
    layer2007.setMap(null);
    layer2008.setMap(map);
    layer2009.setMap(null);
    layer2010.setMap(null);
    layer2011.setMap(null);
}

function set2009() {
    layer2003.setMap(null);
    layer2004.setMap(null);
    layer2005.setMap(null);
    layer2006.setMap(null);
    layer2007.setMap(null);
    layer2008.setMap(null);
    layer2009.setMap(map);
    layer2010.setMap(null);
    layer2011.setMap(null);
}

function set2010() {
    layer2003.setMap(null);
    layer2004.setMap(null);
    layer2005.setMap(null);
    layer2006.setMap(null);
    layer2007.setMap(null);
    layer2008.setMap(null);
    layer2009.setMap(null);
    layer2010.setMap(map);
    layer2011.setMap(null);
}

function set2011() {
    layer2003.setMap(null);
    layer2004.setMap(null);
    layer2005.setMap(null);
    layer2006.setMap(null);
    layer2007.setMap(null);
    layer2008.setMap(null);
    layer2009.setMap(null);
    layer2010.setMap(null);
    layer2011.setMap(map);
}

function UpdateMap(){
    var value = $('#slider').slider('option', 'value');

    if (value==2003){set2003();}
    if (value==2004){set2004();}
    if (value==2005){set2005();}
    if (value==2006){set2006();}
    if (value==2007){set2007();}
    if (value==2008){set2008();}
    if (value==2009){set2009();}
    if (value==2010){set2010();}
    if (value==2011){set2011();}
}

$(function(){

    $('#slider').slider({
        orientation: 'horizontal',
        animate: true,
        step: 1,
        min: 2003,
        max: 2011,
        change: function(event, ui){
            UpdateMap();
        }
    }); 
});
-->
</script>
4

1 に答える 1

0

これは、タイルごとの機能制限に関連しています。タイルごとに 500 個のマーカーの制限があります。500 を超えると、マーカーが細くなります。あなたの例では、2005 年から 2006 年にかけて、タイルあたりのマーカーの数が 500 を超える可能性が高いため、一部のマーカーは間引かれ、これらの一部は 2005 年未満のマーカーです。

これが理にかなっていることを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2011-11-23T00:31:15.340 に答える