gpt4 book ai didi

javascript - 无法读取未定义的属性 'length'(使用地理服务器打印 map )

转载 作者:行者123 更新时间:2023-11-28 09:08:19 25 4
gpt4 key购买 nike

我正在尝试使用 geoserver geoext/ext 进行打印来打印 map 。我成功安装了打印插件,因为 localhost:8080/geoserver/pdf/info.json?var=printCapability 显示了打印功能。问题:当我尝试加载带有 map 和打印按钮的页面时,我收到此错误:

   Uncaught TypeError: Cannot read property 'length' of undefined ext-all.js:21
Ext.extend.readRecords ext-all.js:21
Ext.data.Store.Ext.extend.loadData ext-all.js:21
GeoExt.data.PrintProvider.Ext.extend.loadStores PrintProvider.js:548
GeoExt.data.PrintProvider.Ext.extend.constructor PrintProvider.js:342
(anonymous function) TestPrint.html:22
(anonymous function) ext-all.js:21
b

我无法找出问题所在,所以这是我的 TestPrint.html:

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>
A map
</title>
<script src="../ext-3.4.1/adapter/ext/ext-base.js"" type="text/javascript"></script>
<script src="../ext-3.4.1/ext-all.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="../ext-3.4.1/resources/css/ext-all.css">
<script src="../openlayers/OpenLayers.js" type="text/javascript"></script>
<script src="../openlayers/lib/deprecated.js" type="text/javascript"></script>
<script src="../GeoExt/lib/GeoExt.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="../GeoExt/resources/css/geoext-all-debug.css">
<script src="http://maps.google.com/maps/api/js?v=3&amp;sensor=false"></script>

<script type="text/javascript">

var mapPanel, printDialog;

Ext.onReady(function() {
// The PrintProvider that connects us to the print service
var printProvider = new GeoExt.data.PrintProvider({ **// this is line 22**
method: "GET", // "POST" recommended for production use
capabilities: "http://localhost:8080/geoserver/pdf/info.json?var=printCapabilities", // provide url instead for lazy loading
customParams: {
mapTitle: "GeoExt Printing Demo",
comment: "This demo shows how to use GeoExt.PrintMapPanel"
}
});

// A MapPanel with a "Print..." button
mapPanel = new GeoExt.MapPanel({
renderTo: "content",
width: 500,
height: 350,
map: {
maxExtent: new OpenLayers.Bounds(
143.835, -43.648,
148.479, -39.574
),
maxResolution: 0.018140625,
projection: "EPSG:4326",
units: 'degrees'
},
layers: [new OpenLayers.Layer.WMS("Tasmania State Boundaries",
"http://demo.opengeo.org/geoserver/wms",
{layers: "topp:tasmania_state_boundaries"},
{singleTile: true, numZoomLevels: 8})],
center: [146.56, -41.56],
zoom: 0,
bbar: [{
text: "Print...",
handler: function(){
// A window with the PrintMapPanel, which we can use to adjust
// the print extent before creating the pdf.
printDialog = new Ext.Window({
title: "Print Preview",
layout: "fit",
width: 350,
autoHeight: true,
items: [{
xtype: "gx_printmappanel",
sourceMap: mapPanel,
printProvider: printProvider
}],
bbar: [{
text: "Create PDF",
handler: function(){ printDialog.items.get(0).print(); }
}]
});
printDialog.show();
}
}]
});

});

</script>
</head>
<body>
<div id='content'></div>
</body>
</html>

最佳答案

如果您查看文档,请参见:http://geoext.org/lib/GeoExt/data/PrintProvider.html

它说功能是从url返回的实际对象,因此您可能只需将url提供给url属性即可。也就是说,将第 24 行更改为:

capabilities: "http://localhost:8080/geoserver/pdf/info.json?var=printCapabilities", // provide url instead for lazy loading

至:

url: "http://localhost:8080/geoserver/pdf/info.json?var=printCapabilities", // provide url instead for lazy loading

不过,不能保证这会解决您的所有问题。否则我会在第 22 行使用 firebug 等设置断点并进行单步调试。

关于javascript - 无法读取未定义的属性 'length'(使用地理服务器打印 map ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16597479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com