我有一个页面,我使用ArcGIS API for Javascript从arcgis.com加载三张地图。所有这些都加载在隐藏的div中。
当我点击地图以显示信息窗口时,在我将地图显示后,它显示信息窗口已被移位。但是,如果我打开Chrome的开发者工具或调整浏览器大小,那么infowindow会显示在其位置。似乎有一个resize事件。
我尝试过使用
dojo.byId("map").resize()
显示地图后显示
TypeError: Object #<HTMLDivElement> has no method 'resize'
如何在不调整浏览器大小的情况下模拟全局调整大小事件?
答案 0 :(得分:1)
嗯,resize()不是一个特定于HTML的DOM方法,这与map对象有关。 尝试调整大小并重新定位地图对象。
试试这个(AMD的样本): -
require([
"esri/map", "dojo/_base/connect", "dijit/registry", ...
], function(Map, connect, registry, ... ) {
var map = new Map( ... );
var resizeTimer;
connect.connect(map, 'onLoad', function(theMap) {
connect.connect(registry.byId('map'), 'resize', function() {
//resize the map if the div is resized
clearTimeout(resizeTimer);
resizeTimer = setTimeout( function() {
map.resize();
map.reposition();
}, 500);
});
});
...
});