Do một số hạn chế, mà tôi sẽ không đi vào, tôi đã thấy mình cần phải thực hiện panning tùy chỉnh trong ứng dụng của mình.
Tham chiếu API ArcGIS đề xuất sử dụng các phương pháp sau:
IScreenDisplay2.PanStart(IPoint start) // Starts a pan
IScreenDisplay2.PanMoveTo(IPoint moveTo) // Moves to a point
IScreenDisplay2.PanEnd() // Ends the pan
Mỗi phương thức này được gọi trong các trình xử lý sự kiện sau (tương ứng):
IMapControl4.OnMouseDown // Call PanStart()
IMapControl4.OnMouseMove // Call PanMoveTo()
IMapControl4.OnMouseUp // Call PanEnd()
Vì vậy, tất cả những điều đó hoạt động tốt, các sự kiện được xử lý, panning bắt đầu, mọi người đều hạnh phúc.
-nhưng-
Nơi màn hình thực sự không phải là nơi tôi đã kéo con trỏ của mình. Bản đồ trượt xung quanh theo một mô hình hơi xác định, nhưng tôi dường như không thể tìm ra cách bù đắp cho những gì API đang làm. Tôi đã không thể tìm thấy bất kỳ tài liệu khai sáng.
Có ai có kinh nghiệm với phần này của API không? Mã mẫu hoặc tài liệu sẽ là tuyệt vời!
DeviceFrame
Không thay đổi chút nào khi panning. Đó là để được mong đợi mặc dù, chính xác? Khung thiết bị chỉ bằng kích thước của khung theo tọa độ thiết bị (pixel)
VisibleBoundsUpdated
việc gọi hai lần. Tôi sẽ sử dụng TrackPan()
nhưng tôi cần tiếp tục xử lý các sự kiện chuột trong khi di chuyển và chúng bị TrackPan