2013-07-26 52 views
7

Ý tôi là nếu tôi nhấp vào điểm đánh dấu OnMarkerClickListener sẽ được gọi, do đó, OnMapClickListener thì không. Ngay cả khi tôi đặt đối tượng điểm đánh dấu mMap.setOnMarkerClickListener(null); vẫn che dấu tất cả các sự kiện nhấp chuột cho bản đồ và đối tượng cơ bản. Làm cách nào để tôi có thể đặt Marker minh bạch cho tất cả các vi phạm của người dùng?API Google Maps phiên bản 2: Cách tạo điểm đánh dấu không thể nhấp được?

Trả lời

4

Đây thực sự là "giới hạn" của điểm đánh dấu là phiên bản 3.1.59 của thư viện.

Nếu bạn thực sự cần chúng là điểm đánh dấu, vui lòng gửi yêu cầu tính năng trên gmaps-api-issues cho MarkerOptions.clickableMarker.setClickable.

Nếu bạn có thể, hãy xem xét sử dụng các đối tượng trực quan khác, ví dụ: GroundOverlay. Vấn đề duy nhất là tất cả chúng đều có tỷ lệ với bản đồ, không giống như các điểm đánh dấu. Điểm gần nhất sẽ là Circle với bán kính bằng 0 và chiều rộng đột quỵ 20-50 dp, nhưng đó chỉ là một chấm màu duy nhất.

4

Theo số docs về điểm đánh dấu, nếu bạn thêm Trình nghe của riêng mình và phương thức onMarkerClick() trả về false, hành vi mặc định sẽ được thực hiện.

Vì vậy, trong onMarkerClick() vừa trả về true và không làm gì khác để ghi đè hoàn toàn mặc định.

+0

tôi cố gắng 'onMarkerClick (Marker arg0) {return true;} 'nhưng 'onMapClick' vẫn chưa được gọi. Tôi nghĩ rằng lời giải thích của tài liệu có nghĩa là nếu tôi trả về 'true' thì không có hành vi mặc định nào xảy ra (infoWindow), chỉ mã của tôi, mà tôi đăng trong' onMarkerClick' –

+0

Hãy thử điều này: trong onMarkerClick thêm dòng 'onMapClick (marker.getPosition()) ; ' –

+1

Tôi đã nghĩ về nó. Trong trường hợp này sẽ là một lỗi lớn. Tôi sẽ làm theo cách này nếu không tìm thấy giải pháp nào khác –

4

Cách giải quyết duy nhất tôi tìm thấy cho vấn đề này là để thực hiện cùng một mã trong OnMarkerClickListener mà bạn có trong OnMapClickListener và trở false:

getMap().setOnMarkerClickListener(new OnMarkerClickListener() { 

    public boolean onMarkerClick(Marker marker) { 
     onMapClick(marker.getPosition()); 
     return true; 
    } 
}); 
+1

Giải pháp này không hoạt động vì onMarkerClick cung cấp cho bạn vị trí của điểm đánh dấu mà nó xác định là gần nhất với nơi bạn nhấp vào, không phải nơi bạn thực sự nhấp vào. – Justin

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