Pregunta

Parece que he golpeado un error o he pasado por alto algo.

Escribí un código que enumera a través de todas las funciones vectoriales en una capa de vectores de OpenLayers, para verificar si el mouse está dentro de una función vectorial; si es así, muestra información basada en la función.

Tuve que escribir mis propios métodos para hacer esto porque los controles de OpenLayers existentes (selección, etc.) se detienen después de encontrar una función bajo el mouse, y tengo la posibilidad de que varias funciones se apilen una encima de otra.

Mi problema es que el método .containsPoint parece estar utilizando coords antes de un 'pan'. Después de acercar o alejar la imagen, la geometría parece estar en el lugar correcto y .containsPoint funciona correctamente cuando muevo el mouse sobre el mapa.

¿Debo hacer algo después de que el mapa haya sido panorámico para actualizar algo (la geometría de la característica)

¿Fue útil?

Solución

Me doy cuenta de que esta pregunta casi ha cumplido su primer año de vida y puede que ya no sea válida, pero intentaré responderla de todos modos.

OpenLayers.Control.DragPan realiza una llamada al mapa cuando haya terminado de panoramizar. Si verifica la función pan de OpenLayers.Map, verá este comentario en:

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

La siguiente lógica en la función refleja este comentario.

Entonces, sí, cada vez que termine de realizar una panorámica debe hacer 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);
}

... y las cosas deberían funcionar mágicamente para ti.

Otros consejos

Sin un fragmento de código de ejemplo es muy difícil responder a esto. OpenLayers puede seleccionar varios objetos con un clic del mouse. ¿Ya probaste OpenLayers 2.8?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top