2011-05-11 46 views
6

Tôi đã tạo Đa giác có thể nhấp và đính kèm nó vào bản đồ. Tôi có tập hợp draggableCursor 'crosshair' cho bản đồ. Nó sẽ là tốt đẹp để có cùng một con trỏ cho đa giác là tốt. Tuy nhiên, khi tôi di chuột trên đa giác, con trỏ được thay đổi thành bàn tay.Con trỏ tùy chỉnh trên đa giác có thể nhấp trong Google Maps V3

Cách duy nhất để giữ con trỏ giống nhau là đặt có thể nhấp: sai cho đa giác, nhưng điều này sẽ thúc đẩy tất cả trình xử lý sự kiện cho đa giác không hoạt động.

Tôi đã dành một nửa và cố gắng tìm giải pháp trên web nhưng không thành công. Có ai có đá quý kiến ​​thức như vậy không?

+0

Người dùng bản đồ của bạn sẽ biết rằng đa giác có thể nhấp được nếu con trỏ không thay đổi? – plexer

+1

Đó là vấn đề của UI và UX. Hầu hết các đa giác đều có thể nhấp được theo mặc định, lý do để nhấp là trỏ đến vị trí chính xác trên bản đồ và có hỗ trợ đánh dấu, vì vậy con trỏ tay là điều ác ở đây. – savenkov

+0

Câu hỏi này là khá cũ, nhưng tôi đang gặp vấn đề tương tự và tìm thấy ít trong cách của các giải pháp - bạn đã tìm thấy một trong đó là sản xuất thân thiện? Giải pháp tốt nhất tôi có thể nghĩ đến sẽ liên quan đến việc vẽ đa giác không thể nhấp khi tôi cần thay đổi con trỏ và một con trỏ có thể nhấp khác. Không cần thiết phức tạp, nhưng tôi nghĩ rằng nó sẽ làm việc cho kịch bản của tôi. –

Trả lời

2

Sau một chút suy nghĩ, tôi đã đưa ra một chiến lược rất hacky để thực hiện việc này. Tôi bao gồm điều này cho tò mò học thuật, nhưng tôi sẽ không khuyên bạn nên thực hiện nó trong một trang web sản xuất.

Trong pseudo-code:

onPolygonMouseover: 
    setTimeout(0 ms) 

onTimeout: 
    Find all elements in the dom with cursor == pointer 
    Set pointer to crosshair 

jQuery có thể có ích cho việc tìm kiếm tất cả các yếu tố với con trỏ == con trỏ. Hoặc bạn chỉ có thể lặp qua toàn bộ DOM.

Tại sao hết thời gian chờ?

Thời gian chờ là vì tôi không chắc thứ tự API sẽ hiển thị các sự kiện. Nếu sự kiện của bạn được xử lý trước các sự kiện API nội bộ, con trỏ của bạn có thể bị ghi đè bởi mã nội bộ.

Tại sao thời gian chờ là 0?

Hết thời gian chờ 0 sẽ đẩy mã trên ngăn xếp thực thi JS. Nó sẽ được thực hiện vào lần sau có một "break" trong việc thực thi mã. Điều này phải là một khi tất cả mã xử lý sự kiện đã kết thúc.

+0

Cảm ơn! Tôi sẽ cố gắng tận hưởng việc tìm kiếm giải pháp làm việc, nhưng tôi đồng ý về khả năng ứng dụng vào sản xuất :-) – savenkov

Các vấn đề liên quan