Trước khi bạn nghĩ "tại sao người này yêu cầu trợ giúp về vấn đề này, chắc chắn điều này đã được triển khai 1000x" - trong khi bạn chủ yếu là chính xác, tôi đã cố gắng giải quyết vấn đề này nguồn libs ở đây tôi.SVG phóng to trên chuột - mô hình toán học
Tôi đang cố triển khai SVG dựa trên "phóng to trên con lăn chuột, tập trung vào chuột" từ đầu.
Tôi biết có nhiều thư viện thực hiện việc này, d3 và svg-pan-zoom để đặt tên cho một cặp vợ chồng. Thật không may, triển khai của tôi bằng cách sử dụng những libs đang giảm ngắn mong đợi của tôi. Tôi đã hy vọng rằng tôi có thể nhận được một số trợ giúp từ cộng đồng với mô hình toán học cơ bản cho loại tính năng giao diện người dùng này. Về cơ bản, hành vi mong muốn giống như Google Maps, người dùng di chuột qua vị trí, họ di chuyển con lăn chuột (vào trong) và tỷ lệ của hình ảnh bản đồ tăng lên, trong khi vị trí được di chuột qua trở thành trung tâm ngang và dọc của chế độ xem.
Đương nhiên, tôi có quyền truy cập vào chiều rộng/chiều cao của chế độ xem và x/y của chuột.
Trong ví dụ này, tôi sẽ chỉ tập trung vào các trục x, khung nhìn rộng 900 đơn vị, quảng trường rộng 100 đơn vị, đó là x bù là 400 đơn vị, và quy mô là 1: 1
<g transform="translate(0 0) scale(1)">
Giả sử các vị trí chuột x là tại hoặc gần 450 đơn vị, nếu một bánh xe sử dụng cho đến khi quy mô đạt 2: 1, tôi sẽ mong đợi x bù đắp để đạt -450 đơn vị, tập trung các điểm tập trung như vậy .
<g transform="translate(-450 0) scale(2)">
x và y offsets cần phải được tính toán lại trên mỗi increment của bánh xe di chuyển như một chức năng của offsets quy mô/chuột hiện tại.
Tất cả các nỗ lực của tôi đã giảm hoàn toàn thiếu hành vi mong muốn, mọi lời khuyên đều được đánh giá cao.
Mặc dù tôi đánh giá cao bất kỳ trợ giúp nào, vui lòng không trả lời với các đề xuất cho thư viện của bên thứ ba, plugin jQuery và những thứ có tính chất đó. Mục tiêu của tôi ở đây là hiểu mô hình toán học đằng sau vấn đề này theo nghĩa chung, việc sử dụng SVG của tôi chủ yếu là minh họa.
Có kết thúc, chỉ đẹp - cảm ơn bạn – James