2016-01-14 2 views
1

Я пытаюсь сделать оператор if для GoogleMap OnInfoWindowClickListener. Но каждый раз я прихожу к другому. И намек?OnInfowWindowsListenerClick и IF Else

Marker s780 = googleMap.addMarker(new MarkerOptions() 
 
    .position(new LatLng(52.16033, 7.87964)) 
 
    .title("780") 
 
    .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_780))); 
 

 
Marker s149 = googleMap.addMarker(new MarkerOptions() 
 
    .position(new LatLng(52.60861, 7.99206)) 
 
    .title("149") 
 
    .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_149))); 
 

 
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
 
@Override 
 
public void onInfoWindowClick(Marker marker) { 
 
    if (marker.equals("s780")) 
 
     Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show(); 
 
    if (marker.equals("s149")) 
 
     Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show(); 
 
    else 
 
     Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();

+0

Что такое маркер? –

+0

Я считаю, что вам нужно сделать == проверить место равных – Manish

+0

То же самое, я попробовал это раньше. –

ответ

0

Я нашел способ для меня:

if (marker.getTitle().equals("555 Test")) 
{ Toast.makeText(getActivity(), "Marker 5", Toast.LENGTH_SHORT).show();} 

Спасибо вы за свои задницы.

0

В коде: if (marker.equals("s780")), имеет тип Marker, в то время как "s780" имеет тип String. Конечно, equals возвращает false. Вы должны изменить его на что-то вроде:

final Marker s780 = ... 
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
    @Override 
    public void onInfoWindowClick(Marker marker) { 
     if (marker == s780) { 
      ... 
     } 
    } 
} 
0

Вы должны работать с функцией GetId() класса Marker.

Например внутри:

public void onInfoWindowClick(Marker marker) { 
    StringBuilder builder = new StringBuilder(marker.getId()); 
    String str = builder.deleteCharAt(0).toString() ; 
    int id = Integer.parseInt(str) ; 
    if (id == 0) 
     Toast.makeText(getActivity(), "Marker 780 was pressed", Toast.LENGTH_LONG).show(); 
} 

Затем вы можете сделать простое сравнение с Интс, который гораздо проще. Идентификаторы маркеров в порядке, когда они были добавлены к карте, начиная от 0. Таким образом, ваш маркер S780 имеет идентификатор 0 и маркер S149 имеет идентификатор 1.

Я надеюсь, что помог

0

вы просто пропустили else, так что даже если первый if (s780) был true, вы сделали бы Toast с

маркер 727

затем проверьте еще раз для if (s149), но в конце концов пойти внутри else и сделать Тост с

аргументом: S780

googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
    @Override 
    public void onInfoWindowClick(Marker marker) { 
     if (marker.equals("s780")) 
      Toast.makeText(getActivity(), "Marker 727", Toast.LENGTH_SHORT).show(); 
     else //You missed this else 
     if (marker.equals("s149")) 
      Toast.makeText(getActivity(), "Marker 725", Toast.LENGTH_SHORT).show(); 
     else 
      Toast.makeText(getActivity(), "Argument:"+marker, Toast.LENGTH_SHORT).show();