OnInfowWindowsListenerClick和IF Else

时间:2016-01-14 08:55:35

标签: android google-maps-android-api-2

我尝试为GoogleMap OnInfoWindowClickListener制作一个if语句。 但每次我来到别的地方。 提示?



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




4 个答案:

答案 0 :(得分:0)

在您的代码中:if (marker.equals("s780"))marker的类型为Marker,而"s780"的类型为String。当然equals返回false。您应该将其更改为:

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

答案 1 :(得分:0)

您应该使用Marker类的getId()函数。

例如在:

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

然后你可以用int进行简单的比较,这样更容易。 标记的ID按照它们添加到地图的顺序排列,从0开始。因此标记s780的id为0,标记s149的id为1。

我希望帮助

答案 2 :(得分:0)

您错过了else,因此,即使第一个if (s780)true,您也可以使用<{p}}制作Toast

  

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

答案 3 :(得分:0)

我为我找到了一条路:

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

谢谢你的帮助。