2013-01-24 15 views
7

Sadece google örneğin, web API eşler olduğu gibi gizlemek ya da benim GoogleMap nesne üzerinde gösteri işaretçileri bir kategoriye göre (Google Maps API v2 kullanarak Android uygulamasında) istiyoruz 50 Marker ile 20'si restoran, 20'si otobüs durağı, 10'u sinemaları temsil ediyor.Android'de Marker'ları göstermek/gizlemek mümkün mü? Bir GoogleMap var</p> <p>:

Android google maps api v2'de bu işaretçileri filtrelemek, mesela bir onay kutusunu işaretlemezsek tüm restoran işaretleyicilerini saklayarak mümkün mü? Temel soru için http://www.geocodezip.com/v3_MW_example_categories.html

Üzgünüm ama ben bir acemi:

Ben böyle ama Google Maps API v2 kullanarak Android cihazımda bir şeyler yapmak istiyorum.

+0

evet olası sizin için çalışır yapar – moDev

+0

bazı işaretleri gizlemek için ?? – moDev

+0

Merhaba Mitesh, Pazartesi günü bunu deneyeceğim ve çalışıp çalışmadığını size söyleyeyim, teşekkür ederim :) – Rami

cevap

20

Bu şekilde deneyin. Click Olay

restuarantMarkers.setVisible(false); 

döngü kullanarak yapabilirsiniz Bu şekilde üzerinde

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

..

sizin için çalışırsa bana bildirin.

+0

İpuçlarını için teşekkürler Mitesh, başardım cevabınıza göre yapın.teşekkür ederim :) – Rami

+0

@ droid_dev: arraylist veya hashmap içinde marker referansı saklamak ve sonra arry veya hasmap tarafından gizle işaretini göstermek mümkündür. Araçlar bir hashmap içerdiği tüm işaretçileri gösterir – Wikki

+0

@Wikki Evet mümkün – moDev

0

Evet yapabilirsin! Ve burada ... nasıl

// mmap'e zaten başka başlatıldı GoogleMap örneğidir olduğu

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

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

    { 
     addItemsToMap(this.items); 
    } 

}; 

} 

// en az bir benzersiz kimlik, enlem ve boylam gerekecektir Sizin "Öğe" sınıfı .

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

Onay kutusu ile ilgili bir şeyden emin değilim, ancak bu, işaretleyicileri eklemek ve kaldırmak için kod –

+0

Coğrafi kodlama kullanarak enlem ve boylamı bulmak zorundasınız. Android'de bir Geocoder sınıfı var. –

+0

Merhaba Rachel, kod, enlem ve boylamlara göre belirteçler ekliyor veya siliyor, buna ihtiyacım yok. Bir kategori veya açıklama veya başlık veya bunun gibi herhangi bir şeye göre gizlemek veya göstermek istiyorum. – Rami

2

Konumlarınızı filtrelemek istiyorsanız iletişim kutusunu kullanabilirsiniz.

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();