2012-02-20 27 views
7

Tôi đang sử dụng osmdroid trên dự án Android mới của mình (vì tôi muốn có thể sử dụng bản đồ ngoại tuyến) nhưng tôi gặp nhiều khó khăn để tùy chỉnh giao diện của thông tin bong bóng được gán cho một mục lớp phủ.Thông tin tùy chỉnh bong bóng trên vòi cho các mục lớp phủ sử dụng osmdroid

Hiện tại, tôi đang sử dụng lớp phủ ItemizedOverlayWithFocus để hiển thị các mục của mình; nhìn vào its code, tôi nhận thấy toàn bộ sự việc được vẽ theo phương pháp onDrawFinished vì vậy tôi đã cố gắng tạo lớp phủ tùy chỉnh của riêng mình để ghi đè phương pháp này nhưng điều này khá khó để có được kết quả. Những gì tôi rất thích nhận được là một cái gì đó như thế này:

The result

Làm thế nào mà các bạn quản lý để có được một thông tin bong bóng tùy chỉnh trên dự án của bạn?

Tôi đã tìm thấy một vài lớp để triển khai một thứ như vậy cho MapView của Google (như Jeff Gilfelt's MapView Balloons) nhưng không có gì cho osmdroid.

+0

android-mapviewballoons nên sử dụng gần như cùng một API. Bạn đã không thử chuyển nó vào osmdroid? – Macarse

+0

Tôi đang thử ngay bây giờ nhưng tôi đang gỡ lỗi (tôi không có bất kỳ sự kiện liên lạc nào được kích hoạt chẳng hạn). Nhưng kể từ khi tôi nhìn thấy một vài dự án với bong bóng thông tin tìm kiếm tốt đẹp, tôi nghĩ rằng tôi đang thiếu một cái gì đó dễ dàng hơn so với porting mapviewballoons. – Vivi

Trả lời

8

EDIT:

  • Câu trả lời này là tốt nhất cho apis bản đồ google cũ. Trong google Map V2, điều này đã được đưa ra.

Bạn có thể lấy mã từ https://github.com/galex/android-mapviewballoons

bạn có thể chọn quả bóng từ phương pháp "BalloonItemizedOverlay.java" như sau

private void hideOtherBalloons(List<Overlay> overlays) { 
     for(int i=0; i<overlays.size();i++){ 
      if (overlays.get(i) instanceof BalloonItemizedOverlay<?> && overlays.get(i) != this) { 
       ((BalloonItemizedOverlay<?>) overlays.get(i)).hideBalloon(); 
      }else{ 
       BalloonOverlayView.SELECTED_BALLOON = i; 
       Log.i(i+" : Baloon Open", BalloonOverlayView.SELECTED_BALLOON+""); 
      } 
     } 
} 

Để thiết lập các dữ liệu mà bạn có thể sử dụng setBalloonData phương thức của tệp BalloonOverlayView.java như sau:

protected void setBalloonData(Item item, ViewGroup parent) { 
     if (item.getTitle() != null) { 
      title.setVisibility(VISIBLE); 
      title.setText(item.getTitle()); 
     } else { 
      title.setText(""); 
      title.setVisibility(GONE); 
     } 
     if (item.getSnippet() != null) { 
      snippet.setVisibility(VISIBLE); 
      snippet.setText(item.getSnippet()); 
     } else { 
      snippet.setText(""); 
      snippet.setVisibility(GONE); 
     } 
} 
+0

Liên kết là 404 ngay bây giờ ... – krzysztofkarolczak

+0

bạn có thể vui lòng cung cấp liên kết tới mã nguồn không? – TharakaNirmana

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