Mais

Como fazer um atraso para esperar o mapa carregar


Qual código eu poderia usar para fazê-lo esperar que o programa carregue o mapa primeiro após o comando zoomIn?

Aqui está uma parte do meu código.

para (var z = zoomfrom; z <= zoomto; z ++) {var scale = MapPanel.map.getScale (); var zoomlevel = MapPanel.map.getZoom (); NewZoomLevel = getzoomlevel (escala); lat1 = lat2tile (coords.top, NewZoomLevel); lat2 = lat2tile (coords.bottom, NewZoomLevel); long1 = long2tile (coords.left, NewZoomLevel); long2 = long2tile (coords.right, NewZoomLevel); for (var x = lat1; x <= lat2; x ++) {for (var y = long1; y <= long2; y ++) {list = list + startlink + zoomlevel + '/' + x + '/' + y + '
'; } // y para} // x para MapPanel.map.zoomIn (); // esta parte espero colocar um código para esperar que o mapa carregue após zoomIn}; // z para

Tentei usar a função atrasada de extjs, mas sem sucesso.


Devido à natureza assíncrona do JavaScript, você não pode "atrasar" a execução do código para esperar que um determinado evento aconteça; você precisa usar callbacks de conclusão.OpenLayers.Maptem uma variedade de eventos que você pode ouvir, o que você precisa ézoomend:

zoomend acionado após a conclusão de um zoom

Aqui está um exemplo simples com base em seu código:

var map = MapPanel.map; map.events.register ('zoomend', map, function () {console.log ('Zoom concluído!');}); console.log ('Prestes a aumentar o zoom'); map.zoomIn (); console.log ('Mais zoom iniciado');

Você pode testá-lo diretamente em seu navegador colando o código acima (sem a primeira linha) no console JavaScript em http://openlayers.org/. A saída confirma que a ordem de execução é a que você esperava:

Prestes a aumentar o zoom

Mais zoom iniciado

Zoom concluído!


No entanto, não está claro o que você precisa doListavariável para - dependendo se você gostaria de usá-lo antes ou após o evento de zoom, você pode precisar refazer um pouco o seu código.


No Openlayers existe loadend evento para ouvir a (s) camada (s) e não mapear quando é carregado, verifique o código e o link abaixo:

var mylayer = "// Objeto de camada Openlayers mylayer.events.register (" loadend ", mylayer, function () {console.log ('camada carregada');});

link: http://dev.openlayers.org/examples/layerLoadMonitoring.html


Assista o vídeo: Correios: SUA ENCOMENDA ESTÁ ATRASADA? Saiba o que fazer! (Outubro 2021).