Nuestro mapa tiene un botón 'home' en la barra de herramientas con un código que toma los valores de extensión de un archivo de configuración, crea un objeto Extent a partir de esos valores y pasa el objeto Extent a la función setExtent del mapa. También llamamos a este mismo código cuando el mapa se inicializa, llamando a la función click del botón. Así que si cargamos el mapa, y luego hacemos clic en el botón de inicio, la imagen del mapa se desplaza unos 30 o 40 píxeles hacia arriba. No tiene sentido, estamos llamando exactamente el mismo código dos veces seguidas, con la misma entrada.
Toolbar.prototype.OnFullExtentClick = function () {
var viewModel = registry.get('viewmodel');
var initial = config.Map.InitialExtent;
var extent = new esri.geometry.Extent(initial);
viewModel.Map.setExtent(extent);
};
Lo llamamos una vez mediante código en la función Init:
ViewModel.Toolbar.OnFullExtentClick();
Y lo ejecutamos de nuevo cuando se hace clic en el botón de inicio, a través de Knockout.js como a continuación
<div id="toolbar">
<div id="zoomin" class="map-panel" data-bind="click: Toolbar.OnZoomInClick">+</div>
<div id="fullextent" class="map-panel" data-bind="click: Toolbar.OnFullExtentClick"> </div>
<div id="zoomout" class="map-panel" data-bind="click: Toolbar.OnZoomOutClick">-</div>
</div>
No parece importar los valores que establezcamos para la extensión, el "salto" es siempre la misma distancia y dirección (30 a 40 píxeles hacia arriba). Mi(s) pregunta(s): ¿Qué estamos haciendo mal? ¿Cómo podemos conseguir que deje de hacer esto?
-- EDITAR -- Este problema es específico de IE, no lo hace en Chrome. Además, todavía lo hace cuando el código setExtent se sustituye por centerAndZoom.
Toolbar.prototype.OnFullExtentClick = function () {
var viewModel = registry.get('viewmodel');
var center = new esri.geometry.Point(717714, 972786, new esri.SpatialReference({ wkid: 2223 }));
viewModel.Map.centerAndZoom(center, 1);
};