当数据点超过1700时,加载Google Heatmap时出现内部服务器错误

时间:2013-12-11 11:41:04

标签: asp.net google-maps-api-3 heatmap

我正在研究数据表输出具有大量纬度,经度和体积(重量)的POC。当点数(或数据表中的记录)超过1700时,我遇到一个问题。如果数据点的数量小于1700,它可以正常工作。

我们有超过1M的数据点,必须在地图上绘制。任何人都可以建议可能出错的地方?我得到的较大数据点的错误低于

错误消息:无法加载资源:服务器响应状态为500(内部服务器错误)

另请参阅以下代码。

代码背后

   [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    [WebMethod]
    public static string CreateDatatable()
    {

        MapDataDataContext mz = new MapDataDataContext();
        var zipData = from zp in mz.GeoMapDatas
                      select zp;
        var geoQuery = (from e in mz.GMapTables
                    join d in mz.GeoMapDatas on e.ZIP equals  d.ZIPCode
                    select new { e.Measure, d.Latitude, d.Longitude }).Take(2000);

        DataTable dt = new DataTable();
        dt.Columns.Add("Measure", typeof(long));
        dt.Columns.Add("Latitude", typeof(float));
        dt.Columns.Add("Longitude", typeof(float));

        geoQuery.CopyToDataTable(dt,LoadOption.PreserveChanges);

        string json = JsonConvert.SerializeObject(dt);
        json = json.TrimStart('"').TrimEnd('"');
        return json;
    }

Java脚本

<script type="text/javascript">
    google.load('visualization', '1', { packages: ['table'] });
    function OnLoad() {
        $.ajax({
            type: "POST",
            url: "Default.aspx/CreateDatatable",
            data: '{}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: initialize
        });
    }

    var map, pointarray, heatmap;

    function initialize(response) {
        var obj = $.parseJSON(response.d);
        var heatData = new Array();
        for (var i = 0; i < obj.length; i++) {
            // heatData.push( new google.maps.LatLng(obj[i].Latitude, obj[i].Longitude));
            heatData.push({ location: new google.maps.LatLng(obj[i].Latitude, obj[i].Longitude), weight: obj[i].Measure });
        }
        var mapOptions = {
            zoom: 5,
            center: new google.maps.LatLng(40.0000,-100.0000),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

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

    var pointArray = new google.maps.MVCArray(heatData);

        heatmap = new google.maps.visualization.HeatmapLayer({
            data: pointArray
        });

        heatmap.setMap(map);
    }
</script>

0 个答案:

没有答案