2013-01-24 41 views
7

Tôi muốn (trong ứng dụng Android của tôi sử dụng bản đồ Google api v2) để ẩn hoặc hiển thị các điểm đánh dấu trên đối tượng GoogleMap của tôi theo danh mục, giống như trong api web bản đồ google, ví dụ:Có thể hiển thị/ẩn Điểm đánh dấu trong Android Google maps api v2 không?

Tôi có một GoogleMap với 50 người đánh dấu, 20 người trong số họ đại diện cho nhà hàng, 20 người đại diện cho điểm dừng xe buýt và 10 người là rạp chiếu phim.

Có thể trên Android google maps api v2 để lọc trên các điểm đánh dấu này hay không, bằng cách ẩn tất cả các dấu đánh dấu nhà hàng nếu chúng tôi bỏ chọn một hộp kiểm chẳng hạn?

Tôi muốn làm điều gì đó như thế nhưng trên thiết bị Android của tôi sử dụng bản đồ google api v2: http://www.geocodezip.com/v3_MW_example_categories.html

Xin lỗi cho câu hỏi cơ bản nhưng tôi là một người mới bắt đầu.

+0

có thể ẩn một số điểm đánh dấu – moDev

+0

nó có phù hợp với bạn không ?? – moDev

+0

Hi Mitesh, tôi sẽ thử nó vào thứ hai và cho bạn biết nếu nó hoạt động, cảm ơn bạn :) – Rami

Trả lời

20

Hãy thử cách này.

Marker restuarantMarkers = gMap.addMarker(new MarkerOptions() 
       .position(latlng) 
       .title("MyPlace").icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_pin)).draggable(true)); 

khi nhấp vào tổ chức sự kiện

restuarantMarkers.setVisible(false); 

Bằng cách này có thể làm bằng vòng lặp ..

Hãy cho tôi biết nếu nó làm việc cho bạn.

+0

Cảm ơn bạn đã gợi ý Mitesh, tôi đã quản lý làm điều đó dựa trên câu trả lời của bạn.cảm ơn bạn :) – Rami

+0

@droid_dev: có thể lưu trữ tham chiếu điểm đánh dấu trong mảng danh sách hoặc hashmap và sau đó hiển thị ẩn điểm đánh dấu bằng arry hoặc hasmap. Có nghĩa là hiển thị tất cả các dấu hiệu chứa trong một hashmap – Wikki

+0

@Wikki Có thể – moDev

0

Có bạn có thể! Và dưới đây là cách ...

// mmap là một thể hiện của googlemap mà đã được khởi tạo khác nơi

mMap.setOnCameraChangeListener(getCameraChangeListener()); 
getCameraChangeListener() 
public OnCameraChangeListener getCameraChangeListener() 

{ 
return new OnCameraChangeListener() 
{ 
    @Override 
    public void onCameraChange(CameraPosition position) 

    { 
     addItemsToMap(this.items); 
    } 

}; 

} 

// "Item" của bạn lớp sẽ cần ít nhất một id duy nhất, vĩ độ và kinh độ .

private void addItemsToMap(List<Item> items) 
{ 
    if(this.mMap != null) 

{ 

    LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds; 

    for(Item item : items) 
    { 

     if(bounds.contains(new LatLng(item.getLatitude(), item.getLongitude())) 

     { 
      if(!courseMarkers.containsKey(item.getId())) 

      { 

       this.courseMarkers.put(item.getId(),  this.mMap.addMarker(getMarkerForItem(item))); 

      } 

     } 
     else 
     { 

      if(courseMarkers.containsKey(item.getId())) 

      { 

      courseMarkers.get(item.getId()).remove(); 
      courseMarkers.remove(item.getId()); 

      } 

     } 

    } 

    } 

    } 
+0

Tôi không chắc chắn về điều kiểm tra hộp nhưng đây là mã để thêm và loại bỏ các dấu hiệu –

+0

Bạn sẽ phải tìm vĩ độ và kinh độ bằng cách sử dụng mã hóa địa lý. Có một lớp Geocoder trong Android. –

+0

Xin chào Rachel, mã đang bout thêm hoặc xóa các điểm đánh dấu theo vĩ độ và kinh độ, tôi không cần điều này. Tôi muốn ẩn hoặc hiển thị theo một danh mục hoặc mô tả hoặc tiêu đề hoặc bất kỳ thứ gì như thế này. – Rami

2

Bạn có thể sử dụng hộp thoại nếu bạn muốn lọc vị trí của mình.

final Dialog dialog = new Dialog(context); 
     dialog.setContentView(R.layout.dialog); 
     Button bt_ok = (Button) dialog.findViewById(R.id.button1); 
     final CheckBox cb1 = (CheckBox) dialog.findViewById(R.id.checkBox1); 
     final CheckBox cb2 = (CheckBox) dialog.findViewById(R.id.checkBox2); 
     dialog.setTitle("Category"); 

     bt_ok.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       mMap.clear(); 
       if (cb1.isChecked()){ 
        mMap.addMarker(new MarkerOptions().position(new LatLng(44.109798, 15.242270)).title("Pin").icon(BitmapDescriptorFactory.fromResource(R.drawable.museum))); 
       } 
       if (cb2.isChecked()){ 
        mMap.addMarker(new MarkerOptions().position(new LatLng(44.209798, 15.392270)).title("Pin 2").icon(BitmapDescriptorFactory.fromResource(R.drawable.restaurants))); 
       } 
       dialog.dismiss(); 
      } 

     }); 

     dialog.show(); 
Các vấn đề liên quan