Getting around the 500 row limit

点点圈 提交于 2019-12-01 01:55:33

I solved the problem by using the json call method. Code below.

        <!DOCTYPE html>
        <html>
          <head>
            <meta charset="UTF-8">
            <title>David's Build Up</title>

            <link href="./stylesheets/example.css" media="screen" rel="stylesheet" type="text/css" />


            <link rel="shortcut icon" href="/images/favicon.ico" />
            <noscript><meta http-equiv="refresh" content="0;url=/no_javascript.html"></noscript>

                <!-- Find box coordinates javascript -->
                <script
                src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
            </script>

                <script type ="text/javascript" src="http://www.movable-type.co.uk/scripts/latlon.js"></script>

                <!-- Type label text javascript -->     
                <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
              <script type="text/javascript" src="./js/label.js"></script>

                <!-- Visulization javascript -->
                <script type="text/javascript" src="http://www.google.com/jsapi"></script>

                <!-- Initialize visualization -->
                <script type="text/javascript">
                  google.load('visualization', '1', {});
                </script>


            <script type="text/javascript">

                    function drawBox(topleftx, toplefty, bottomrightx, bottomrighty) {

                      var bounds = new google.maps.LatLngBounds(
                        new google.maps.LatLng( topleftx, toplefty ),
                        new google.maps.LatLng( bottomrightx, bottomrighty )
                      );

                    var overlay = new google.maps.Rectangle({
                      map: carto_map,
                      bounds: bounds,
                      strokeColor: "#0000ff",
                      strokeOpacity: 0.20,
                      strokeWeight: 2,
                      fillColor: "#0000ff",
                      fillOpacity: 0.050,
                    });
                    }

              function initialize() {

                        // Set the map parameters
                        var cartodbMapOptions = {
                            zoom: 5 ,
                            center: new google.maps.LatLng( 40.313043, -97.822266 ),
                            mapTypeId: google.maps.MapTypeId.ROADMAP
                        }
                    // Initialize the map
                    carto_map = new google.maps.Map(document.getElementById("map"),cartodbMapOptions);

                        // Query to grab the data
                var query = "SELECT Latitude, Longitude, Impressions FROM " +
                    '[encrypted table ID here]';
                var encodedQuery = encodeURIComponent(query);

                // Construct the URL to grab the data
                var url = ['https://www.googleapis.com/fusiontables/v1/query'];
                url.push('?sql=' + encodedQuery);
                url.push('&key=AIzaSyAm9yWCV7JPCTHCJut8whOjARd7pwROFDQ');
                url.push('&callback=?');

                        // Set the number of rows
                        var numRows = 3500;

                // Get the variables from the table, in a loop
                $.ajax({
                  url: url.join(''),
                  dataType: 'jsonp',
                  success: function (data) {
                    var rows = data['rows'];
                    var ftData = document.getElementById('ft-data');
                    for (var i in rows) {
                      var centerX = rows[i][0];
                      var centerY = rows[i][1];
                                    var imps = rows[i][2];
                                    // Set the center points
                                    var centerPoint = new LatLon(centerX,centerY);
                                    var latLng = new google.maps.LatLng(centerX,centerY);
                                    // Set top left points
                                    var toplefty = centerPoint.destinationPoint(-45, 6)._lon;
                                    var topleftx = centerPoint.destinationPoint(-45, 7.7)._lat;
                                    // Set bottom right points
                                    var bottomrighty = centerPoint.destinationPoint(135, 6)._lon;       
                                    var bottomrightx = centerPoint.destinationPoint(135, 7.7)._lat;
                                    // Draw the box
                                    drawBox(topleftx, toplefty, bottomrightx, bottomrighty);
                                    // Drop markers
                                    var marker = new google.maps.Marker({
                               position: latLng,
                               draggable: false,
                                     markertext: imps,
                                     flat: true,
                               map: carto_map
                              });
                               var label = new Label({
                                 map: carto_map,
                                     position: latLng,
                                     draggable: true
                               });
                               label.bindTo('text', marker, 'markertext');
                                 marker.setMap(null);
                    };
                  }
                    });

              }
            </script>
          </head>

          <body onload="initialize()">
                <div id="map"></div>
                <div id="ft-data"></div>
          </body>
        </html>

The Gviz API does have a 500 row limit for a given query.

Any table is limited to 100,000 mappable rows, but that's well outside your reported 20,000 rows.

The new Javascript API, currently accepting Trusted Testers, offers JSON format support for any number of rows returned for a query. You can apply for the TT program by requesting membership in this group: https://groups.google.com/group/fusion-tables-api-trusted-testers

-Rebecca

The fusiontables/gvizdata URL is intended for Gviz charts and so is limited to 500 points. There are other ways to query that don't have that limitation. See https://developers.google.com/fusiontables/docs/sample_code for examples.

I routinely refresh a 2500 row table by deleting all rows and inserting new ones. The loop in my code that constructs the INSERT sql has a nested loop that just counts to 400, sends that sql, and then starts building another one with the next 400 records.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!