Pergunta

Eu parecem ter atingido um bug ou eu ter esquecido alguma coisa.

Eu escrito algum código que enumera através todo o vector apresenta em uma camada OpenLayers Vector - para verificar se o mouse está dentro de um recurso de vetor -. Se sim, então ele exibe algumas informações com base no recurso

Eu tive que escrever meus próprios métodos de fazer isso porque os controles OpenLayers existentes (selecione etc) parada depois de encontrar um recurso sob o mouse, e eu a possibilidade de vários recursos que estão sendo empilhados em cima uns dos outros.

O meu problema é que o método .containsPoint parece estar usando coords de antes uma 'pan'. Depois de ampliar ou reduzir a geometria parece estar no lugar certo e .containsPoint é funciona corretamente quando eu acenar o mouse sobre o mapa.

Eu preciso fazer alguma coisa após o mapa foi garimpada para atualizar alguma coisa (geometria do recurso)

Foi útil?

Solução

Eu percebo esta questão tem quase teve seu primeiro aniversário, e pode não ser mais válido, mas vou dar um tiro em respondê-la de qualquer maneira.

OpenLayers.Control.DragPan faz uma chamada para o mapa quando você está feito panning. Se você verificar a função OpenLayers.Map pan, você verá este comentário dentro:

// only call setCenter if not dragging or there has been a change

A seguinte lógica na função reflete este comentário.

Então, sim, cada vez que você acabar de percorrer você precisa fazer algo como:

dragpan.handler.up = function(evt)
{
    dx = dragpan.handler.last.x - evt.x;
    dy = dragpan.handler.last.y - evt.y;
    var centerPx = map.getViewPortPxFromLonLat(map.getCenter());
    var newCenterPx = centerPx.add(dx, dy);
    var newCenterLonLat = map.getLonLatFromViewPortPx(newCenterPx);
    map.setCenter(map.getCenter() + dragpan.handler.xy);
}

... e as coisas devem magicamente trabalho para você.

Outras dicas

Sem um código de exemplo trecho é muito difícil responder a isso. OpenLayers é capaz de selecionar vários objetos em um clique do mouse. Já experimentou OpenLayers 2.8 já?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top