2015-08-26 5 views
0

Итак, я хочу установить базу проверки на цвет маркера.Как установить проверку цвета маркера в android (API карты Google)

Во-первых, это мой код зацикливание маркера, так что он будет показывать маркеры (Это не главная проблема, этот код работает)

for(int i = 0; i < datMarkerList.size(); i++) 
    { 
     if(i < 50) { 
      DAT_MARKER datMarker = datMarkerList.get(i); 
      marker = mMap.addMarker(new MarkerOptions() 
        .position(new LatLng(datMarker.getLATITUDE(), datMarker.getLONGITUDE())) 
        .title(datMarker.getDESCRIPTION()) 
        .snippet(datMarker.getID_MARKER() + "")); 
      markers.add(marker); 
     } else { 
      continue; 
     } 

     DAT_MARKER_OP datMarkerOp = datMarkerOpList.get(i); 
     if(datMarkerOp.getKODE_PAJAK() == 0) { //KODE PAJAK HOTEL 
      marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)); 
     }else if(datMarkerOp.getKODE_PAJAK() == 1) { //KODE PAJAK RESTAURANT 
      marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)); 
     }else { //KODE PAJAK HOTEL DAN RESTAURANT 
      marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)); 
     } 
    } 

Затем из этих значок, я хочу, чтобы сделать базу проверки на этих цветах, так что я думаю, что я посажу здесь (я также поставил алгоритмы):

@Override 
public boolean onMarkerClick(final Marker marker) { 
    linCard.setVisibility(View.VISIBLE); 
    //mapSettings.setMyLocationButtonEnabled(false); 
    linCard.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //IF marker's color is RED 
       //Statement 
      //IF marker's color is YELLOW 
       //Statement 
      //IF marker's color is BLUE 
       //Statement 

     } 
    }); 

вот и все. Я думал, и я понятия не имею о коде, каких-либо идеях?

ответ

1

Вам не нужно смешивать приложения логики с цветами.
Вы хотите сделать какое-то действие на основе типа маркера, а не его цвета. Цвета могут быть изменены.
Итак, вам нужно связать дополнительную информацию с маркерами, например, через карту.

Map<Marker,DAT_MARKER_OP> markersMap = new HashMap<>(); 

И в сквозном ваших маркерах:

markersMap.put(marker, datMarkerOp); 

После этого вы можете получить DAT_MARKER_OP в OnClick

public boolean onMarkerClick(final Marker marker) { 
    linCard.setVisibility(View.VISIBLE); 
    linCard.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      DAT_MARKER_OP datMarkerOp = markersMap.get(marker); 
      if(datMarkerOp.getKODE_PAJAK() == 0) { 
       // your logic 
      } 

     } 
    }); 
} 
+0

Итак, возможно, нет значка для значка, хотя есть подтверждение для названия, фрагмента и т. Д. Но это лучшее решение, спасибо, помощник. – Toshiro007

2

Я думаю, что вы можете использовать название маркера, чтобы определить его, или вы можете использовать HashMap, чтобы сохранить производитель и соответствующий данные в нем, как это сделал здесь http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

+0

Я расширил свой ответ с кодом –

+0

нет проблем приятеля –

+0

@pengrad но как получить значение маркера от markersMap? – Toshiro007

0

У вас есть 2 идентификаторы здесь .. Название и фрагмент кода можно использовать любого из них, чтобы отличить markers.for например, дает id_red для всех красных цветных маркеров, id_yellow для всех желтых цветных маркеров

if(marker.getTitle().toString().equals(id_red)){ 
     its a red colored marker 
}else{ 

} 

Или

Вы можете использовать фрагмент кода для одного и того же

if (marker.getSnippet().contains("id_red")) { 
    red 
    } else{ 
    // Click of another colored marker 
    } 
Смежные вопросы