1

このコードは、Google Geomap APIを使用して地図を描画します

<script type="text/javascript">
    google.setOnLoadCallback(drawMap);
    function drawMap() {
        var data = new google.visualization.DataTable();
        data.addColumn('string','iso'); //e.g.: mx
        data.addColumn('number','population'); //e.g.: 114
        data.addRows([["mx",114],["ec",14],["ve",28]]);
        var options = {
            region: '005',
            width: '511px',
            height: '280px',
            showLegend: true
        };
        var geomap = new google.visualization.GeoMap(document.getElementById('map'));
        geomap.draw(data,options);
    };
</script>

デフォルトで選択されている地域は 005 (南アメリカ) です。これらは他の利用可能な地域です:

  • 013 - (中央アメリカ)
  • 150 - (ヨーロッパ)

既に描画された地図の領域を動的に変更するにはどうすればよいですか? このようなもの:

<a href="javascript:void(null);" onclick="changeRegion(150);">Europe</a>

マップを再描画する必要があることはわかっていますが、領域プロパティの変更手順で行き詰まっています。どんなアイデアでも役に立ちます。ありがとう!

4

1 に答える 1

1

既にデータがある場合は、自分のアプリで使用するスニペットを提供します。長い説明よりも理解しやすいと思います。それが役に立てば幸い。私の場合、同じ地域の国別の数字を表示したかったのです。

geomap = new google.visualization.GeoMap(document.getElementById('geo_chart'));


        google.visualization.events.addListener( geomap, 'regionClick', 
            function(e) 
            { 
                var dataLocal = new google.visualization.DataTable();
                var grouped_cities;

                if (e['region'] == "0")
                    return;

                options['colors'] = [0xaacdf8, 0x164177]; //orange colors
                options['dataMode'] = 'markers';
                options['region'] = e['region'];
                options['showZoomOut'] = true;

                if ( previous_region !=  e['region'] )
                {
                    var indexes  = dataFull.getFilteredRows([{column: 0, value: e['region']}]);

                    dataLocal.addRows(indexes.length);
                    dataLocal.addColumn('string', 'City');
                    dataLocal.addColumn('number', 'Views');

                    for ( i=0; i<indexes.length; i++ )
                    {
                        dataLocal.setValue(i, 0, dataFull.getValue(indexes[i], 2));
                        dataLocal.setValue(i, 1, dataFull.getValue(indexes[i], 3));
                    }


                    grouped_cities = google.visualization.data.group( dataLocal, [0],[{'column': 1, 'aggregation': google.visualization.data.sum, 'type': 'number'}]);
                    previous_region =  e['region'];
                }

                geomap.draw(grouped_cities, options);
                delete grouped_cities;
                delete dataLocal;

            }
        ); 
于 2012-12-17T21:29:20.390 に答える