2011-02-06 5 views
6

Tôi có MapView với một số lớp phủ và một phân lớp của MyLocationOverlay trên đầu trang vì chúng tôi muốn vị trí hiện tại của người dùng hiển thị phía trên các điểm đánh dấu khác.MyLocationOverlay dispatchTap() không tuyên truyền

Tôi đang xử lý sự kiện onTap để các điểm đánh dấu hiển thị bảng có thông tin về điểm đánh dấu được khai thác và nếu được nhấn bên ngoài điểm đánh dấu (ngay cả trong điểm đánh dấu vị trí), bảng sẽ ẩn.

Nếu tôi nhấp vào điểm đánh dấu hoặc ở vị trí trống, mọi thứ đều ổn, bảng điều khiển hiển thị hoặc ẩn như mong đợi, nhưng nếu tôi nhấp vào điểm đánh dấu vị trí không có gì xảy ra (nếu điểm đánh dấu vị trí vượt quá điểm đánh dấu khác thì thông tin sẽ không hiển thị t hiển thị và nếu nó ở bên ngoài và thông tin hiển thị nó không ẩn).

Trong MyLocationOverlay tôi overrided dispatchTap() chức năng làm cho nó trở lại sai như đã nêu trong docs:

Returns: True nếu máy này được xử lý; sai nếu nó được gửi đến các lớp phủ khác.

nhưng vẫn không hoạt động, thậm chí tôi đã cố gắng trở thành sự thật chỉ trong trường hợp, nhưng không có gì ...

Bất kỳ ai biết làm thế nào để tuyên truyền các sự kiện onTap các lớp phủ khác?

+0

là dispatchTap thực sự được gọi? (nó sẽ trả về false theo mặc định). Bạn đã thử overriding boolean onTouchEvent công cộng (android.view.MotionEvent e, MapView mapView) để xem nếu thats nhận được gọi là? – Dori

Trả lời

1

"Cố định kể từ Android 2.0, nó là một vấn đề được biết đến của một số điện thoại"

Từ - Propagate events in several layers android google maps

"Nếu bạn đang nhìn thấy các mục overlay bạn đặt trên MapView của bạn, ONTAP của bạn() sẽ được onTap (GeoPoint point, chế độ xem MapView) luôn được kích hoạt bất kể nơi người dùng chạm vào. Vì vậy, bạn có thể ghi đè lên nó để xem nó có được kích hoạt hay không. onTap (int i) sẽ chạy sau nó trong trường hợp một mục lớp phủ được nhấp vào. "

Từ - https://stackoverflow.com/questions/6680387/ontap-event-on-map-is-not-fired