Devido a algumas restrições, nas quais não vou entrar, me deparei com a necessidade de implementar o panning personalizado no meu aplicativo.
A referência da API do ArcGIS sugere o uso dos seguintes métodos:
IScreenDisplay2.PanStart(IPoint start) // Starts a pan
IScreenDisplay2.PanMoveTo(IPoint moveTo) // Moves to a point
IScreenDisplay2.PanEnd() // Ends the pan
Cada um desses métodos é chamado nos seguintes manipuladores de eventos (respectivamente):
IMapControl4.OnMouseDown // Call PanStart()
IMapControl4.OnMouseMove // Call PanMoveTo()
IMapControl4.OnMouseUp // Call PanEnd()
Então, tudo isso funciona bem, os eventos são tratados, o panorama começa, todo mundo fica feliz.
-mas-
Onde a tela realmente se move não é onde eu arrastei meu cursor. O mapa desliza em um padrão um pouco determinístico, mas não consigo descobrir como compensar o que a API está fazendo. Não consegui encontrar nenhuma documentação esclarecedora.
Alguém tem experiência com esta parte da API? Exemplo de código ou documentação seria ótimo!
DeviceFrame
não muda em nada durante a panorâmica. Isso é de se esperar, certo? A carcaça do dispositivo é apenas o tamanho do quadro em coordenadas do dispositivo (pixels)
VisibleBoundsUpdated
ligar duas vezes. Gostaria de usar TrackPan()
, mas eu preciso para continuar a eventos do mouse punho durante o pan e são suprimidos durante umaTrackPan