我正在研究数据表输出具有大量纬度,经度和体积(重量)的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>