[ ArcGIS 10 API for Javascript 系列 ] - 常见问题
1、当浏览器Window窗口发生resize变化,Map该如何处理
当浏览器window对象resize时,ArcGIS JavaScript API 是不会自动调整的。当包含map对象的父HTML元素resize,必须人工的调用Map.resize()以适应尺寸的变化。同样的,如果这个父HTML元素的位置发生变化,则需要调用Map.reposition().
在IE中,对于window对象的像素尺寸变化,以开似乎就会触发resize事件,即window.onresize。这样的话就会大大降低应用程序的性能,特别是当map占了整个浏览器window对象长度和高度,或者这个map的父HTML元素,每次都会随着IE浏览器尺寸resize而变化的情况。
我们需要设置一个时间的延迟,以应付上面的情况。代码类似如下:
var resizeTimer;
function init() {
var map = ...;
dojo.connect(globals.map, 'onLoad', function (map) {
//监听window.onresize事件
dojo.connect(dijit.byId('map'), 'resize', resizeMap);
});
}
function resizeMap() {
//清除已经存在的Timer
clearTimeout(resizeTimer);
//创建新resize Timer,让它延迟0.5秒触发
resizeTimer = setTimeout(function () {
map.resize();
map.reposition();
}, 500);
}
2、在ArcGIS JavaScript API中结合其他客户端RIA框架,如:JQuery 、ExtJS
ArcGIS JavaScript API是构建在Dojo框架上的。 在你的应用程序中正在使用其他框架,如:JQuery 、ExtJS,是否可以结合这些框架呢?答案是可以的。
JavaScript API是基于Dojo,还是需要引入Dojo精简版的,大小约30k左右,减少了网络传输量。如果你是从Arcgis Online引入Dojo,只需要将srcipt标签的src改为:
src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.1compact"
也可以使用本地的compact的library。具体这个可以参考离线包的安装说明,安装说明在离线包安装zip中有,
ArcGIS API for JavaScript 2.0 离线包library的URL:
http://help.arcgis.com/EN/webapi/javascript/arcgis/help/jshelp/arcgis_js_v20_api.zip
ArcGIS API for JavaScript 2.1 离线包library的URL:
http://help.arcgis.com/EN/webapi/javascript/arcgis/help/jshelp/arcgis_js_v21_api.zip
具体 JavaScript API 集合JQuery 、ExtJS的使用可以参考:
和