2011-11-08 30 views
7

Tôi đang sử dụng ví dụ này: https://github.com/galex/android-mapviewballoonsKhu vực có thể nhấp của Google Map Marker

Vấn đề của tôi là khu vực có thể nhấp rộng hơn điểm đánh dấu. Ví dụ: điểm đánh dấu Bản đồ Google của tôi là 25x25 thì khu vực có thể nhấp sẽ mở rộng lên đến 70x70. Đây là một vấn đề lớn đối với các điểm đánh dấu chồng chéo. enter image description here

Khi tôi nhấp vào mũi tên đó, onTap được kích hoạt, mặc dù khu vực nhấn nằm cách xa điểm đánh dấu.

Hãy giúp tôi. Cảm ơn.

+2

bạn đã từng giải quyết vấn đề này chưa? –

Trả lời

-1

Để gỡ lỗi:

Hãy thử sử dụng một TouchDelegate cho View, bạn có thể chỉ định rect Touch cho sự trao View

Một ví dụ cho thấy làm thế nào để sử dụng TouchDelegate:

public class TouchDelegateSample extends Activity { 
    Button mButton; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.touch_delegate_view); 
    mButton = (Button)findViewById(R.id.delegated_button); 
    View parent = findViewById(R.id.touch_delegate_root); 
    // post a runnable to the parent view's message queue so its run 
after 
    // the view is drawn 
    parent.post(new Runnable() { 
     @Override 
     public void run() { 
     Rect delegateArea = new Rect(); 
     Button delegate = TouchDelegateSample.this.mButton; 
     delegate.getHitRect(delegateArea); 
     delegateArea.top -= 200; 
     TouchDelegate expandedArea = new TouchDelegate(delegateArea, 
delegate); 
     // give the delegate to an ancestor of the view we're 
delegating the 
     // area to 
     if (View.class.isInstance(delegate.getParent())) { 
      ((View)delegate.getParent()).setTouchDelegate(expandedArea); 
     } 
     } 
    }); 
    } 
} 

hitTest()

Xem liệu điểm truy cập đã cho có nằm trong giới hạn của điểm đánh dấu của mục hay không. Ghi đè để sửa đổi cách mục được truy cập thử nghiệm. Điểm nhấn liên quan đến giới hạn của người đánh dấu. Việc triển khai mặc định chỉ kiểm tra xem điểm truy cập có nằm trong giới hạn có thể chạm của điểm đánh dấu hay không.

+0

Tôi nghĩ là không. Mã đó để định vị lớp phủ bóng. –

+0

Để gỡ lỗi, bạn có thể gọi 'View.getHitRect() '. Tôi nghĩ rằng nó sẽ hữu ích – Reno

+0

Cảm ơn bạn đã trả lời .. điểm đánh dấu không phải là Chế độ xem, đó là một lớp phủ. Vui lòng kiểm tra MyItemizedOverlay.java. Cảm ơn. –

1

Đây là hành vi mặc định của ItemizedOverlay. 25x25 px nhìn chung không phải là vùng có thể chạm được cho hầu hết các ngón tay của con người.

Bạn nên ghi đè phương thức hitTest() nếu bạn muốn sửa đổi cách truy cập mục lớp phủ được kiểm tra.

+2

Bạn có thể đưa ra ví dụ về kiểm tra lượt truy cập không? – Jatin

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